K8s Clinic:如何安全高效地运行 K8s

2021-11-20 21:25:55 浏览数 (2)

代码语言:javascript复制
如何在生产环境中安全、高效地运行 Kubernetes 集群平台,是一个至关重要的 Topic ~

为什么选择 Kubernetes ?

     随着容器的应用,软件打包越来越左移,这意味着(取决于我们的团队组织)开发人员正在承担应用程序容器化的责任。开发人员可能还负责 Kubernetes 配置的某些部分。随着该流程向左转移,开发人员需要支持才能为组织做出正确的决策,以便安全高效地运行 Kubernetes。

     许多公司正在采用云原生技术来加快上市速度。对于寻求在当今市场上竞争的企业而言,重要的是发布新功能并满足客户需求——而且这些需求正越来越多地通过软件得到满足。

关键挑战

     尽管从云原生技术中获得了大多数好处,但迁移到容器和 Kubernetes 并非没有潜在的挑战。根据云原生计算基金会 (CNCF) 最近的一项调查,在这种转型过程中通常会出现三个关键挑战。

来源: CNCF SURVEY 2020来源: CNCF SURVEY 2020

     与复杂性并列第一,迁移到云原生技术所涉及的文化变化。这些类型的变化通常意味着开发过程的变化,并可能将部分责任转移到不同的团队,迫使工程师学习新概念以及运维工程师需要适应“一切皆为代码”的心态。

     第三个挑战与云原生技术的安全考虑有关。我们正在处理改变大家对安全性看法的新概念和技术注意事项,尤其是当我们在云中运行容器和 Kubernetes 技术时,或者如果我们在多云或混合云场景中使用它时。所有这一切的复杂性导致安全团队退后一步,真正了解云原生技术的新威胁形势。

     安全需要成为开发和 DevOps 的合作伙伴,因此他们不仅必须跟上新的变化,还必须了解这些风险可能存在的位置。涉及实际容器技术本身时出现的新型问题,例如了解这些容器中存在哪些已知漏洞(常见漏洞和暴露 (CVE),以及了解 Kubernetes 可以配置为不安全、不可靠或低效。

新的决策点和复杂性

     迁移到 Kubernetes 和容器引入了许多新的决策点:去年,一篇文章强调 69% 的 Kubernetes 事件报告实际上与错误配置有关。要成功地将产品推向市场,我们需要有一个协作环境来快速解决配置错误问题。请记住:Kubernetes 中的一切都是配置驱动的,默认情况下没有内置安全性。

     组织的复杂性是另一个重要的因素。整个流程上涉及不同的角色,他们每个人都有不同的问题需要回答,所以让我们站在他们的立场上:

     1、开发人员:编写代码、构建新功能并将应用程序交付到生产环境的费用。他们需要对 Kubernetes 和容器有足够的了解,才能继续做好他们的工作并将应用程序提供给客户。

     2、站点可靠性工程师 (SRE):需要确保应用程序可靠且稳定。SRE 还需要确保使用最佳实践配置应用程序并启用健康探测和健康检查,以便应用程序能够在生产中可靠地运行。

     3、安全团队:需要知道组织是否正在运行易受攻击的容器版本,以及应用程序是否配置为安全的。

     4、工程副总裁:需要安全、可靠的基础设施来支持下一波业务增长。

     在这些环境中,我们需要构建流程并设置防护栏,以满足这些不同角色的需求。

对安全性和效率的技术影响

     对于所有这些团队来说,在他们寻求构建应用程序和服务并将其交付给市场时,配置是一个考虑因素。对于迁移到容器和 Kubernetes 的组织来说,什么样的技术会影响安全性和效率?堆栈中有几个不同的层,我们需要注意错误配置。

     1、容器:我们的应用程序与操作系统打包在一起的地方。注意正在打包的已知漏洞,无论是在操作系统级别还是在放入该容器的应用程序内部。

     2、部署配置:这可能是 Kubernetes YAML 或 Helm 图表。注意此级别的错误配置。确保设置了 CPU 和内存设置,为应用程序设置了活跃度和就绪度探测,并且没有向这些部署添加不必要的安全权限。

     3、Kubernetes 集群:在 Internet 上公开访问提供可能的错误配置。确保我们有基于角色的访问控制。还有许多附加组件需要保持最新,例如入口和证书管理。

政策和治理帮助

     我们可以通过使用策略和治理来帮助防止部署常见的错误配置。实施策略以检查安全配置错误,例如,底层 Kubernetes 集群和附加组件中的漏洞。不断扫描和监控基础设施以根据需要查找和修补新漏洞非常重要。策略和治理还可以通过确保资源使用效率来帮助我们优化成本,例如,检查 CPU 和内存设置以确保我们的应用程序具有足够的计算资源,但不会消耗过多的资源。

     当我们创建防止错误推送到生产的边界规则时,我们还可以在正确的时间向正在做出这些配置决策的开发人员和服务所有者提供反馈。我们可以使用策略创建边界规则的一些方法示例包括仅允许来自受信任存储库的图像、确保设置 CPU 和内存请求,以及需要健康探测。有多种方法可以实施策略和治理并使我们的策略保持不变,我们的选择可能取决于组织规模、Kubernetes 环境的成熟度以及其他考虑因素。无论如何进行,我们都需要跨团队和集群的可见性以及一种有效且一致地管理策略的方法,以便安全高效地运行 Kubernetes。

     了解更多信息,按需观看网络研讨会:https://www.fairwinds.com/kube-clinic-how-to-run-kubernetes-securely-and-efficiently-0?submissionGuid=1d0bf274-f046-43cb-9687-ccda4671e7f8

0 人点赞