如何在智能告警平台CA触发测试告警
767
2022-10-31
《Engineering DevOps》九个Kubernetes 支柱的最佳实践
我喜欢用“支柱”这个词来描述 DevOps 的主要“不可移动”结构部分。就像一根柱子,一个帮助支撑结构的建筑物的柱子,DevOps 柱子代表任何精心设计的 DevOps 方法的永久结构部分。在我的工程框架中,如我的书中所述,DevOps 分为九个工程实践类别的支柱。DevOps 的九大支柱是领导力、协作文化、DevOps 设计、持续集成、持续测试、弹性基础设施、持续监控、持续安全和持续交付。
就在两年前,当我写这本书时,容器技术的采用已经是 DevOps 解决方案的主要部分,我写了一篇关于容器最佳实践的9 大支柱的文章;当时,Kubernetes 仍在与其他容器编排解决方案竞争主导地位。今天,Kubernetes 是事实上的标准容器编排方案,取代了大多数替代品。之所以发生这种情况,是因为 Kubernetes 拥有最成熟、经过验证、动态可扩展、健壮的开源软件和定义明确的架构,以及适用于所有主要云服务的 API 和服务。
现在的问题是 Kubernetes 如何从工程 DevOps 的九个支柱中受益。本文的答案将帮助您以具体的 DevOps 术语理解为什么 Kubernetes 在设计 DevOps 解决方案时变得如此占主导地位。以下是 Kubernetes 为工程 DevOps 的九个支柱中的每一个提供的好处和每一个支柱的最佳实践。
企业的成功越来越依赖于公司快速交付数字服务和软件的能力,他们使用容器和 Kubernetes 作为大规模构建、部署和运行应用程序的基本工具。Kubernetes 帮助企业领导者使组织能够达到更高水平的性能,更快地交付创新的新软件和功能,并支持多云运营以提高敏捷性和弹性。
企业领导者使用 Kubernetes 使组织能够达到更高水平的性能,更快地交付创新的新软件和功能,并支持多云运营以提高敏捷性和弹性。领导者赞助并鼓励在他们的团队中使用 Kubernetes。领导者确保文档和培训涵盖本 Kubernetes 差距评估中描述的 Kubernetes 最佳实践的九个支柱。领导者监控 Kubernetes 的使用,以验证性能并确保将吸取的经验教训付诸行动。
由容器和 Kubernetes 支持的自助服务基础设施允许团队在需要时访问他们需要的资源。这导致团队更高效、更快乐,障碍更少,部署、协作、获取反馈和在需要时恢复服务的时间显著缩短。
Kubernetes 通过与跨职能团队交流部署信息来支持 DevOps 的持续学习文化。由于部署配置与应用程序代码一起进行版本管理,因此变更管理通常是冲突的根源,使用 Kubernetes 可以提高效率。这简化了 Dev、Ops 和 QA 以及安全团队成员协作设计端到端 DevOps 工作流程的能力。Kubernetes 支持标准化和集中的组织工作流,因为它减少了与分散的信息以及格式化和存储技术数据的不同方法相关的挫败感。
架构为微服务的模块化应用程序从 Kubernetes 中获益最多。根据十二要素应用原则设计的软件,通过网络 API 进行通信,最适合集群上的可扩展部署。Kubernetes 最适合编排云原生应用程序。模块化分布式服务能够更好地扩展和从故障中恢复。
软件是根据 12 要素应用程序的原则设计的,通过网络 API 进行通信,最适合在集群上进行可扩展的部署。Kubernetes 用于编排云原生应用程序。模块化分布式服务能够更好地扩展和从故障中恢复。Kubernetes 版本保持最新。进程白名单可识别意外运行的进程。
在集成阶段,构建容器镜像,并定义相关的设置和运行程序。小尺寸镜像可以通过保持可管理的足迹和在镜像更新之间重用现有层来减少在集群上启动容器所需的时间和资源。
在集成阶段,构建容器镜像并为 Kubernetes 定义相关的配置、设置和运行过程。容器镜像保持较小,因为可以在集群上更快地编排较小的镜像。测试容器镜像的结构。测试结构可确保所有命令在容器内按预期运行。测试还可以让您检查特定文件是否位于正确的位置并具有正确的内容。扫描构建的容器镜像是否存在漏洞。容器镜像在通过 CI/CD 管道的不同阶段时被提升而不是重建。重建可能会在代码分支之间引入差异。
借助 Kubernetes,开发人员和测试人员可以更好地协同工作,快速准确地解决缺陷;开发人员可以使用测试人员的 Kubernetes 实例进行调试。这消除了与开发人员和测试人员试图复制彼此的测试环境相关的长时间延迟。Kubernetes 还可以帮助测试人员和开发人员快速交换精确的应用程序配置信息。
Kubernetes 促进了增强的端到端测试,它更接近于用户在生产中的体验。使用 Kubernetes,在本地和基于云的测试环境中建立的工作显著减少,因为容器化的应用软件和相关的测试软件可以在应用代码提交后立即部署在容器中进行测试。开发人员使用测试人员的 Kubernetes 实例进行调试。这消除了与开发人员和测试人员试图复制彼此的测试环境相关的长时间延迟。Kubernetes 还可以帮助测试人员和开发人员快速交换精确的应用程序配置信息。
借助 Kubernetes,基础设施资源集群化,可以弹性消费和释放,实现无缝扩展和更高的资源利用率。Kubernetes 消除了企业 IT 运营的许多手动配置和其他重复性任务。此外,Kubernetes 提供的统一和自动化编排方法简化了多云管理,从而能够以更少的工作和更少的错误交付更多服务。
基础设施资源集群化,可以弹性消费和释放,实现无缝扩展和更高的资源利用率。Kubernetes 消除了企业 IT 运营的许多手动配置和其他重复性任务。Kubernetes 提供的统一和自动化的编排方法简化了多云管理,从而能够以更少的工作和更少的错误交付更多服务。为不同的环境使用单独的集群。环境分离是任何部署目标的重要考虑因素。理想情况下,您应该有单独的集群用于开发、预生产(暂存和 QA)和生产。
云原生应用程序构建有健康报告指标,使平台能够在实例变得不健康时管理生命周期事件。他们生成(并提供用于导出)强大的遥测数据,以提醒操作员注意问题并让他们做出明智的决定。Kubernetes 支持liveness和readiness探测,可以轻松确定容器化应用程序的状态。
使用 Kubernetes,任何人都可以轻松查看和了解所有资源的状态。Kubernetes 打破了运营、QA、安全和开发团队之间传统的、孤立的可见性障碍。这提高了团队成员之间的透明度和开放式沟通。云原生应用程序使用健康报告指标构建,使平台能够在实例变得不健康时管理生命周期事件。Kubernetes 的 Liveness 和 Readiness 探针功能用于确定容器化应用程序的状态。安全监控和审计捕获应用程序日志、主机级日志、Kubernetes API 审计日志和云提供商日志。出于安全审计目的,请考虑将日志流式传输到外部位置,并从集群内进行仅附加访问。
在复杂的分布式基础设施上运行的复杂应用程序可能难以保护。Kubernetes 等云原生工具可以更深入地了解应用程序中发生的情况,从而更容易识别和修复安全问题。Kubernetes 对部署和已部署的容器化应用程序提供的增强编排控制受益于不可变的一致性和改进的响应时间。此外,Secrets 对象提供了一种安全的方式来存储敏感数据。
Kubernetes 支持集成的 DevSecOps 左移安全实践,具有改进对容器集群的访问控制、管理容器代码和环境变量的更新、限制 pod 上的资源使用、控制基于容器的工作负载运行的特权以及限制跨容器的网络访问的功能。这减少了对安全风险的恐惧,让开发人员、运营商和安全团队更有信心降低安全风险。Kubernetes 可以洞察应用程序中发生的事情,从而更容易识别和修复安全问题。Kubernetes secrets对象用于安全地存储敏感数据。Kubernetes 在部署和已部署的容器化应用程序上提供的增强编排控制受益于不可变的一致性和改进的响应时间。容器镜像可以在 Kubernetes 上运行。使用安全代码扫描工具检查容器化代码中可能存在于容器代码本身以及镜像所基于的任何上游依赖项中的漏洞。Kubernetes 基于角色的访问控制 (RBAC) 策略用于帮助防止对集群资源的未授权访问。资源配额通过剥夺集群的其余部分足够的资源来运行,从而帮助减轻拒绝服务攻击造成的中断。使用 Kubernetes 核心数据类型来限制 Pod 到 Pod 的流量,以指定 Pod 之间的网络访问控制。Kubernetes 集群按完整性等级划分;例如,您的开发和测试环境可能托管在与生产环境不同的集群中。
这意味着一些技术,例如一种新的 DevOps 工具,可能有利于 DevOps 一个或多个支柱的工程设计。使用 Kubernetes 设计 DevOps 为 DevOps 的所有九个支柱提供了很多好处。这解释了 Kubernetes 在 DevOps 上的成功,以及为什么 Kubernetes 生态系统继续快速扩展,支持构建在 Kubernetes 平台之上的新 DevOps 功能。
参考链接:1.https://containerjournal.com/topics/container-management/nine-pillars-of-kubernetes-best-practices/2.https://containerjournal.com/uncategorized/9-pillars-of-engineering-devops-with-kubernetes/
发表评论
暂时没有评论,来抢沙发吧~