广告

用平台工程设置Kubernetes标准

  • 浏览(185)
  • 评论(0)
  • 译者:k8s

你不可能样样精通。但缺乏专业知识并不会妨碍你做任何事情,也不会导致你需要很长时间才能完成任务——你只需要知道标准是什么,使用黄金路径并查看重要的数据。

这就是平台工程的意义所在。它为开发人员创建了可重用的元素,例如重新部署镜像标签、更新自动缩放组以提供新的包等。这些功能通过内部开发人员门户访问,记分卡在其中扮演着重要角色。

让我们以Kubernetes和开发人员为例。要允许开发人员自主,这可以通过标准来实现。标准将开发人员从基础设施的复杂性中解放出来,并允许开发人员在遵守限制的同时处理Kubernetes。记分卡是用来表达这些标准的。

这不仅关乎良好的平台工程,还关乎良好的开发者体验。开发人员应该得到精心设计的解决方案,就像开发人员向非技术人员提供精心设计的方案一样。

内部开发人员门户设置Kubernetes标准

内部开发人员门户及其软件目录可以抽象Kubernetes的复杂性。内部开发人员门户自动映射所有Kubernetes元数据,并帮助开发人员通过“白名单”数据来判断什么是重要的。在本文中,我们将讨论内部开发人员门户如何使用记分卡将组织Kubernetes标准付诸实践。

记分卡与内部开发人员门户中的护栏最终定义并推动更好的工程质量标准的想法紧密相关。定义K8s生产就绪或安全标准不仅有助于单个开发人员提高水平,而且有助于整个工程质量。

在软件目录中显示Kubernetes数据

对于开发人员来说,未经过滤的Kubernetes原始数据通常太多。有些数据不相关,有些数据可能相关,但呈现方式对开发人员来说意义不大。内部开发人员门户包含软件目录,它们对数据进行抽象,以便开发人员可以使用它。

让我们来看看Kubernetes的一些具体记分卡示例。

生产就绪记分卡

生产就绪记分卡评估现有Kubernetes对象(如部署或集群)的生产就绪情况。这有助于确保它们满足生产环境中性能、可靠性和可用性的要求标准,并能够确定任何必要的更改或升级,以随着时间的推移保持或改进就绪状态,降低停机风险,确保为最终用户提供高质量的服务。

记分卡应包括以下类别:

——对于容器,度量应验证容器资源配置(如内存请求和限制),并确保为所有容器配置了活动性和就绪性探测。这些配置对于确保容器高效运行并能够快速响应可能出现的任何问题至关重要。

——对于命名空间,规则应确保工作负载不部署在默认的Kubernetes命名空间中,这有助于防止可能因干扰Kubernete系统组件而产生的潜在问题。

——对于高可用性,度量标准应要求最少两个副本计数,这对于在任何节点或pod故障时确保冗余非常重要。这种冗余对于确保工作负载的高可用性至关重要。

总体而言,记分卡中所反映的标准旨在确保Kubernetes工作负载已生产准备,并能够以可靠、可扩展和高效的方式运行。记分卡系统是跟踪这些标准遵守情况并确保开发人员和运维团队了解其工作负载的生产就绪状态的有用方法。

安全记分卡

安全记分卡标准旨在确保安全措施到位,通过向外部系统(如GitHub、DataDog和Terraform)验证秘密,保护敏感信息。容器部署合规性标准确保容器配置有只读根文件系统,不访问底层主机,不升级权限,所有这些都对维护容器安全至关重要。tag和label标准验证工作负载是否具有有效的标签值,以及所有容器镜像是否具有标签版本,这对于高效组织和管理工作负载非常重要。

总之,这些规则有助于确保Kubernetes工作负载安全部署,并能够以可靠和安全的方式运行。

资源使用记分卡

开发人员可能不太关心资源使用,但DevOps非常关心。资源使用问题导致缩放问题,也会引发更多的事件。记分卡可以提醒开发人员注意这些问题,因此可以自行解决这些问题并设定质量标准。

ArgoCD记分卡

这是一个用于评估ArgoCD工作流和推出的生产就绪的记分卡。这些规则确保了工作流的可靠性,并确保了发布过程的合规性,包括检查错误处理、配置管理、修订历史记录和缩放。

管理多个集群

管理多个Kubernetes集群可能具有挑战性,因为在所有集群中维护一致配置所涉及的复杂性。由于多个集群分布在不同的区域和云上,因此很难确保所有集群的配置一致且正确,并且所有配置都是最新的。错误配置可能导致服务中断和安全漏洞等问题,这可能会产生严重后果。

此外,大多数Kubernetes可视化工具都没有提供一个统一的仪表板,可以显示不同区域和云中的所有集群,这使得很难从单一窗格中监控整个Kubernete环境的运行状况和性能。

在内部开发人员门户中,很容易创建一个显示所有Kubernetes集群及其最重要数据的仪表板。

图片

基于这些数据创建一个生产就绪记分卡:

图片

生产就绪记分卡用于根据一组标准评估Kubernetes集群的就绪程度。这些不同的规则可用于确保Kubernetes集群的稳定性、可用性和可靠性。

“K8s版本稳定”和“使用最新的K8s版本”标准的重点是确保使用的Kubernetes版本稳定且最新。例如,如果组织有一个将集群从Azure迁移到AWS的计划,则“云提供商不是Azure”规则可以帮助跟踪和推动这一计划,而“使用Argo CD”规则促进自动化和标准化部署。

“为所有pod配置就绪和活跃度”和“为所有pod配置CPU和Mem限制”有助于确保工作负载正常,不会超出可用资源。最后,“集群节点的数量至少为三个”确保了工作负载的冗余和高可用性。应用这些标准可以帮助组织维护稳定、安全和可扩展的Kubernetes环境。

图片

以下是关注Kubernetes环境的监控和可见性的其他标准。“Has K8s dashboard?”标准检查是否安装了Kubernetes仪表板,这提供了对Kubernete环境的基本监控和可见性。“有Prometheus吗?”标准检查Prometheus是否用于监控Kubernetes的指标和基于这些指标的警报,这有助于快速检测和响应问题。

“有Grafana吗?”标准检查Grafana是否用于更高级的监控和度量可视化,这有助于监控Kubernetes环境的性能和健康状况。通过应用这些标准,组织可以确保其Kubernetes环境得到有效监控和维护,以满足其性能和可用性要求。

为不同的环境和对象设置标准

为不同的实体设置不同的标准,反映软件开发生命周期的不同阶段,这一点很重要。

例如,在生产环境中,确保Kubernetes集群运行在最新稳定版本的Kubernetes上,并且有足够的节点来支持工作负载可能至关重要。还可能需要确保所有pod都配置了适当的资源限制,以防止性能问题。此外,可能需要Prometheus和Grafana等监控工具来提供高级监控和可视化功能。

另一方面,在staging环境中,重点可能是在新特性或更改部署到生产环境之前测试和验证它们。在这种情况下,标准可能更侧重于确保正确配置Kubernetes环境,并使用Argo CD等工具自动化和标准化部署。

通过为不同的实体定义不同的记分卡,组织可以根据不同的环境定制其规则和检查,确保其Kubernetes环境针对每个环境的特定需求进行优化。这有助于提高开发和部署过程的效率,同时确保Kubernetes环境稳定、安全和可靠。

结论

记分卡有三个作用。它们以适合开发人员的方式抽象K8s数据,确保开发人员遵循Kubernetes最佳实践和护栏,最大限度地提高应用程序可靠性,并帮助DevOps推动计划。它们提供了帮助开发人员拥有安全性、可靠性和云开销的工具。当工作流根据记分卡自动运行以确定构建是否失败时,它们也很有用。

  • 分享到:
  • icon
  • icon
  • icon
  • icon
箭头