使用Polaris在3分钟内检查Kubernetes的最佳实践

Kubernetes最佳实践的发展趋势

随着Kubernetes的成熟,以及Dev和Ops责任范围的分离等背景,我时不时听到应用工程师们处理Kubernetes的经验越来越多的消息。现在,即使对于那些精通Kubernetes的人来说,处理YAML的工作也变得轻而易举,任何人都可以做到,这种趋势正在加速发展,并且可以想象这种状态将继续延续下去。

特别关注Kubernetes的安全性方面,CNCF将很快发布专为Kubernetes安全性设计的新考试,这将推动使用Kubernetes进行开发的统一化和稳定化。

在这里,我们介绍一种名为Polaris的工具,它可以方便地确认我们所使用的Kubernetes集群是否符合最佳实践。

北極星功能概要

Fairwinds的Polaris可保持集群的顺畅运行,通过执行多项检查,确保Kubernetes Pod和Controller符合最佳实践,以避免潜在问题。Polaris可以在以下3种模式下运行。

在这里,我们将讨论关于仪表盘的内容,并在总结中提及Validating Webhook和CLI工具。

    • ダッシュボード

 

    • Validating Webhook

 

    CLI tool

公平的風/北極星操作

仪表板快速入门

请根据环境准备集群。以下是使用kind的示例来进行解释。

  kind create cluster

将poraris部署为仪表盘,通过主机将仪表盘服务转发到端口。

  kubectl apply -f https://github.com/FairwindsOps/polaris/releases/latest/download/dashboard.yaml
  kubectl port-forward --namespace polaris svc/polaris-dashboard 8080:80

当以上操作完成后,polaris将处于运行状态。
※如果端口转发命令执行得太早,在Pod启动之前尝试进行端口转发将会返回错误。

确认动作

当通过浏览器访问localhost:8080时,可以查看Polaris的仪表盘。

Untitled.png

每个类别的测试结果百分比会显示。

    • Health Check:

 

    • Images

 

    • Networking

 

    • Resources

 

    Security
Untitled 1.png

健康检查

健康检查的测试非常简单,如果没有定义ReadinessProbe和LivenessProbe,就会失败,如下所示的页面。默认情况下,将其设为警告。

图片 (tú

进行图像测试,并进行以下两项测试。

如果图像标签未指定或为latest,则操作失败。默认值为danger。

如果镜像的pullPolicy不是Always,则会失败。默认是忽略。

社交网络

如果设置了hostNetwork或hostPort,将会失败。默认情况下是警告。

资源

如果未在CPU和内存方面定义Resource Requests/Limits,则会失败。默认值为danger。

安全

以下为重点,对主机的影响较大的部分被标记为danger。

Untitled 2.png

您可以根据Namespace内的不同Kind来查看测试结果。

除了Polaris之外,没有特别做任何操作的集群中,默认显示了Kind中的local-path-storage和kube-system,以及用于Polaris的命名空间。

Untitled 3.png

让我们着眼于kube-system命名空间中的DaemonSet,名为kindnet。

关于由Daemonset产生的kindnet-cni容器,发出了一个危险的能力(Capability)警报。由于是CNI(容器网络接口),这是不可避免的。

Untitled 4.png

总结

通过使用 Polaris,可以轻松验证 Kubernetes 集群是否符合最佳实践。

通过将Validating Webhook集成到Kubernetes的Admission Controller中,可以自动拒绝被判定为”danger”的清单文件的应用。

另外,这也可以作为CLI运行,并且可以集成到CI/CD流程中,通过设定门槛值如危险和警告来停止CI/CD流程。

广告
将在 10 秒后关闭
bannerAds