36

CI/CD与Kubernetes:工具与实践

 5 years ago
source link: http://dockone.io/article/7732?amp%3Butm_medium=referral
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在Kubernetes上设置CI/CD任务流水线可以加快您的发布生命周期,使您每天能够发布多次,并让灵活的团队可以快速迭代。Kubernetes具有许多功能使其成为CI/CD的理想选择。使用Kubernetes可以使构建变得更快,能让构建过程快速,轻量且简单,而不是生成全新的服务器。

Kubernetes能加快开发速度,因为您无须担心构建和需要全量部署以更新所有内容。通过将整体分割成微服务,您可以改为只更新部分服务。良好的CI/CD工作流程的一部分还应该包括一个强大的测试套件。虽然不是Kubernetes独有的,但是容器化方法可以使测试更直接。如果您的应用程序测试依赖于其他服务,则可以针对这些服务的容器运行测试,从而简化测试过程。通常只需要一行命令即可更新Kubernetes的部署。

Kubernetes简化了CI/CD

在CI/CD工作流程中,理想情况下您可以运行许多测试。如果这些测试失败,那么镜像将永远不会被构建,并且该容器也永远不会被部署。但是如果测试中未能发现问题,Kubernetes提供了更好的保护,因为Kubernetes简化了零停机时间部署。一直以来,部署意味着停机。运营团队过去常常手动或通过脚本来处理部署工作,这个过程可能需要数小时,乃至整晚。因此,关于CI/CD的一个担忧就是部署中断导致站点崩溃。

Kubernetes的零停机部署能力减轻了对维护窗口的担忧,使计划延迟和停机时间不复存在,同时在此过程中节省了资金。它在满足开发、运营和业务团队需求的同时,也使每个人都处于循环之中。革命性的Kubernetes部署对象内置了可以自动执行此操作的功能。

相辅相成的其他工具

作为Kubernetes所被知晓的令人难以置信的势头的一部分,那就是一些DevOps工具的出现,它们特别有助于开发与Kubernetes集成的CI/CD工作流。请记住,随着Kubernetes上的云原生部署的出现,CI/CD工具和实践仍在不断发展。从构建到部署和持续交付,没有一种工具可以提供管理云原生应用程序的完美解决方案。虽然有太多值得一提的工具,但最值得强调的有以下一些针对云原生应用程序专门构建的DevOps工具:

Draft:此工具来自Microsoft,它面向开发人员工作流程。通过一些简单的命令,Draft可以将应用程序容器化并部署到Kubernetes上。它的自动应用程序容器化功能非常强大。Draft使用流行框架和语言的最佳实践来构建镜像还有Kubernetes配置,在多数情况下是可以被直接使用。

Helm:这个框架被称为Kubernetes包管理器,它简化了将应用程序部署到Kubernetes的过程。许多流行项目的部署配置都可以在维护良好的“Charts”仓库中找到。当你需要在集群中运行一个项目,例如Prometheus,您仅需要执行 helm install prometheus (当然不是仅仅这么简单)。在部署自定义应用程序时,Helm同样提供相同的便利性。

Skaffold:这是Google的一款与Draft类似的新工具,它实现的新开发工作流程令人兴奋。除了支持更多标准CI/CD工作流之外,它可以让你每次在本地更改代码时,都可以选择在Kubernetes开发环境中构建和部署代码。此工具具有高度可配置性,甚至支持使用Helm进行部署。

Spinnaker:这个开源的持续交付平台由Netflix开发,用于通过其云网络高规模地处理CD操作。它是一个云原生的工作流管理工具,集成了所有主流云服务商的支持,如AWS,Azure,Google Cloud Platform和OpenStack。它原生支持Kubernetes部署,但其范围远远超出Kubernetes。

如今,越来越多组织选择使用Kubernetes而不是其他编排工具。越来越多的组织认识到容器提供的解决方案比他们使用的传统的工具更好,而Kubernetes是最好的容器部署和管理解决方案。该系列的下一篇文章将更详细地介绍在Kubernetes中如何使用CI/CD。

fengxsong,运维工程师,Golang语言爱好者,关注Kubernetes/Serverless/CI/CD,希望通过DockOne把最新的译文贡献给大家,与读者一起共同学习交流云原生解决方案。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK