亚马逊AWS官方博客

使用 Polaris 在 EKS 上运行安全工作负载

在原生云领域,确保配置正确,尤其是大规模配置,可能是一项艰巨的任务。自动化可以帮助您使该任务更易于管理。Fairwinds 首席技术官 EJ Etherington 的这篇客座博文介绍了一种开源工具,该工具可让您检查 EKS 集群设置,从而为您提供集群总体状态、详细状态、安全性和运行状况信息的图形化概览。

Michael Hausenblas

借助 EKS 运行 Kubernetes

Amazon Elastic Kubernetes Service (Amazon EKS) 让在 AWS 上使用 Kubernetes 部署、管理和扩展容器化应用程序更加简便。众所周知,将工作负载部署到Kubernetes 越容易,就越容易在不了解(更不用说实施)容器安全、Pod 资源配置等最佳实践的情况下匆忙开始生产。在 Fairwinds,我们希望提供一种简便的方法来检查 Kubernetes 工作负载配置的所有最重要方面,持续审计我们的工作负载,阻止任何人上传不符合已批准准则的配置以及使用 CI / CD 集成到我们的部署工作流程。因此我们构建并开源了新的项目:Polaris

来自 Fairwinds 的 Polaris

创建集群很容易,但是运行稳定、安全的工作负载却很困难 – 在这方面,Polaris 可以帮助您。

我们一次次地看到,部署配置中的微小差错引发重大问题,让工作人员不得不彻夜补救。忘记配置资源请求之类的简单失误可能会破坏自动扩展,甚至导致工作负载耗尽资源。小小的配置问题可能会导致生产中断。Polaris 旨在使以上问题可以更轻松地得到识别和预防。

Fairwinds 公司致力于帮助其他公司成功实现 Kubernetes 在生产中的大规模运行。Polaris 是确保该目标更容易实现的方式之一,它不仅适合我们的客户,而且目前在其成为开源项目之后,也适合社区场景。无论您是要提高部署标准的开发人员,还是要向技术领导者提供深层信息的运营负责人,Polaris 都能提供您所需的信息。

不仅仅关乎资源

您如何确保所有第三方 Kubernetes 软件包都尽可能安全且有弹性地配置? Polaris 不仅检查资源,还审计容器的运行状况检查、图像标签、网络和安全设置(仅举几例)。

Polaris 可以帮助您避免影响应用程序稳定性、可靠性、可扩展性以及安全性的配置问题。它使您能够轻松地鉴别部署配置中的不足,从而避免未来出现问题。借助 Polaris,您可以确信自己的应用程序已按照一系列经过充分测试的标准进行部署,因此可以高枕无忧。

Polaris 有四种关键模式:

  1. 概览集群中当前部署的配置情况的控制面板。
  2. 提供类似于控制面板的 YAML 输出的 CLI 实用程序。
  3. 可以防止将来出现任何不符合配置标准的部署的试验性验证 Webhook。
  4. 在您尚未准备交付给 Webhook,但又不希望任何错误配置通过 CI/CD 系统泄漏时,所使用的方便的 YAML 文件检查。

Polaris 控制面板

在集群中运行 Polaris 并查看控制面板以确保您能看到所有 pod。

首先,将您的 kubeconfig 指向您的 EKS 集群:

aws --region region eks update-kubeconfig --name cluster_name --role-arn arn:aws:iam::aws_account_id:role/role_name

然后,安装控制面板:

kubectl apply -f https://raw.githubusercontent.com/fairwindsops/polaris/master/deploy/dashboard.yaml

或者使用 Helm:

helm repo add reactiveops-stable https://charts.fairwinds.com/stable

helm install reactiveops-stable/polaris --namespace polaris

然后使用 port-forward 访问控制面板:

kubectl -n polaris port-forward svc/polaris-dashboard 8080:80

再转到 http://localhost:8080/ 查看控制面板。

Polaris 控制面板。

现在,您获得了可以动态更新的“等级”,以表明有关上述列出的检查,集群工作负载的配置情况如何。您可以从此自动更新列表着手,改善工作负载配置并帮助确保其稳定、可扩展和有弹性。您所需要做的就是修复控制面板中显示的错误,当您重新加载页面时,您的评分将自动刷新。

控制面板包含按类别列出的概括性的检查摘要,并注有有用的信息:

按类别列出的 Polaris 结果。

您还将看到按命名空间分列的部署,其中列出了具体的错误配置:

按命名空间分列的 Polaris 部署。

关于 Polaris 出厂默认设置的说明

Polaris 配置分析的默认设置非常保守,因此,如果您的分数低于预期,也不要感到惊讶。Polaris的一个主要目标是在默认情况下实现出色的配置。如果我们提供的默认值对于您的用例而言过于严格,您可以在部署配置中轻松调整它们,以更好地适应您的工作负载。

在发布 Polaris 时,我们包含了我们选择纳入的检查的详尽文档。每个检查都包含指向相应文档的链接,文档中解释了我们认为该检查重要的原因,检查还带有关于该主题的更多资源的链接。

Polaris CLI

如果您想要检查您集群的工作负载,但又不想在集群中部署其他应用,那该怎么做? Polaris CLI 是您期待的工具。使用 CLI,您可以在本地查看控制面板,或者获得 YAML 输出。有关此等详情,请参阅 Polaris 安装和使用文档

Polaris webhook

控制面板和 CLI 提供了当前部署配置的概览,而 Webhook 模式提供了对集群中将来的所有部署实施更高标准的方法。

一旦有机会解决控制面板中列出的任何问题,您就可以部署 Polaris webhook,以确保配置不会再降至标准以下。当在集群中执行部署时,webhook 将阻止任何具有“错误”级别配置冲突的部署。

尽管我们对这种 webhook 的潜力感到非常兴奋,但我们仍在进行更深入细致的测试,然后才能考虑将其作为成品发布。其目前仍然只是试验性功能,并且是一个全新的开源项目的一部分。 因为它确实有可能阻止您的部署执行更新,所以请谨慎使用。

在您连通 EKS 集群的 CI/CD 管道中使用 Polaris

在您的 CI/CD 映像中安装 Polaris 并运行:

polaris -audit-path path/to/deployment/yaml

以查看您将要执行的部署的健康程度的概览。

小结

Amazon EKS 是开始使用Kubernetes 的好方法,但是为了确保正确配置工作负载,您可以在最适合您用例的模式下运行 Polaris。有关详细信息。请参阅 GitHub 上的 Polaris 项目。Fairwinds 一直在寻求有益于我们的开源项目的帮助,因为我们希望提升 Kubernetes 的采用率,并为相关生态系统构建出色的工具 — 如果您有问题或想要参与其中,请联系 Fairwinds

EJ Etherington.

EJ Etherington

EJ 拥有分子生物学硕士学位,从事开发和开发运营工作已有 10 多年。他目前担任 Fairwinds 的首席技术官。@ejether

本博文中的内容和意见属于第三方作者,AWS 不对本博文的内容或准确性负责。