编程技术分享平台

网站首页 > 技术教程 正文

使用 Jenkins,Helm 和 Kubernetes 轻松自动化 CI/CD pipeline

xnh888 2024-09-28 02:52:33 技术教程 17 ℃ 0 评论

了解如何使用 Jenkins、 Helm 和 Kubernetes 设置工作流来自动化 CI/CD pipeline,从而实现快速简单的部署

每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?3分钟?学习?何乐而不为?,希望?大家?点赞?,加?关注?,你的?支持?是我?最大?的?动力?。

开发人员不想考虑基础设施问题,也不想考虑为什么将代码部署到真正的测试环境需要这么长时间。他们只是想让它运转起来!

这6个步骤的工作流程将使用 Jenkins、 Helm 和 Kubernetes 轻松地自动化 CI/CD 管道,从而实现快速简单的部署。

如今,快速发布版本至关重要,这需要一个自动化的 CI/CD 管道,将代码从文本传输到二进制文件,再传输到已部署的环境。在过去,实现自动化管道一直具有挑战性,特别是在处理遗留应用程序时。这就是k8s的用武之地。Kubernetes 彻底改变了我们部署和管理集装箱化应用程序的方式。将 Helm 与 Kubernetes 结合使用,可以获得简化的应用程序部署。


本文将向您展示如何准备和配置您的环境,以便使用 Jenkins、 Helm 和 Kubernetes 为容器化应用程序实现完全自动化的 CI/CD 管道。您将收到有关如何优化管道的提示和用于自定义管道的工作模板。

为了熟悉 Kubernetes 环境,我已经将解决方案的主要步骤映射到传统的 Jenkins 管道。

注意: 此工作流也适用于实现其他工具或部分实现。

建立环境

配置软件组件

在创建自动化管道之前,需要根据以下配置设置和配置软件组件:

软件组件

建议配置

A Kubernetes Cluster


  • 在数据中心或云上设置集群


Docker 注册表

  • 找一个托管私有 Docker 注册表的解决方案.
  • 在选择解决方案时,要考虑隐私、安全性、延迟和可用性等需求

A Helm Repository


  • 找一个用于托管私有 Helm 存储库的解决方案.
  • 在选择解决方案时,要考虑隐私、安全性、延迟和可用性等需求


独立的环境

  • 创建不同的命名空间或集群部署 and 还有Staging部署
  • 创建一个专用的独立集群,用于Production 制作

Jenkins Master

  • 使用标准的 Jenkins 配置设置主控
  • 如果您没有使用slaves,那么 Jenkins 主机需要配置 Docker、 Kubectl 和 Helm

Jenkins Slave(s)

  • 建议在 Kubernetes 运行 Jenkins 从服务器,使其更接近于 API 服务器,从而更容易配置
  • 使用Jenkins Kubernetes插件在Kubernetes clusters中管理你的salves


准备你的应用

Follow these guidelines when preparing your applications:

准备你的应用时,请遵循以下指引:

  • 应用程序打包为镜像方法请参考Docker Best Practices Docker(https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/) 最佳实践.
  • 要在以下任何环境中运行相同的 Docker 容器: Development, Staging 或 Production、将流程和配置分离如下:Development: 创建默认配置。Staging 和 Production: Create a non-default configuration using one or more: 创建一个非默认配置使用一个或多个配置。在运行时可以挂载到容器中的配置文件。传递到 Docker 容器的环境变量

Kubernetes 六步自动化 CI/CD pipeline的实践

通用的假设及指引

  • 这些步骤符合运行 Jenkins 代理时的最佳实践
  • 为构建应用程序分配一个专用代理,为部署任务分配一个附加代理。这取决于你的正确判断
  • 为每个分支都运行pipeline,为此,请使用 Jenkins 多分支pipeline作业 .
  1. 从 Git 获取代码开发人员将代码推送到 Git,这会触发 Jenkins 构建 ,webhookJenkins 拉取最新的代码更改。
  2. 运行构建和单元测试Jenkins 负责构建, 应用程序的 Docker 映像是在构建期间创建的。
  3. 发布Docker image 和Helm Chart。 应用程序的 Docker 映像被推送到 Docker 注册表Helm chart将打包并上传到heml库中。
  4. 部署开发环境,使用已发布的 Helm chart将应用程序部署到 Kubernetes 开发集群或命名空间,测试针对 Kubernetes 开发环境中部署的应用程序运行
  5. 部署到Staging。使用已发布的 Helm chart将应用程序部署到 Kubernetes 临时集群或命名空间,在staging环境中对部署的应用程序运行测试
  6. [可选]部署到生产环境。如果应用程序满足定义的标准,则将应用程序部署到生产集群。请注意,您可以将其设置为手动批准步骤Sanity tests run against the deployed application. 健全性测试针对已部署的应用程序运行If required, you can perform a rollback. 如果需要,可以执行回滚

创建自己的自动化 CI/CD pipeline

请随意使用下面的示例框架构建一个类似的实现,这些示例框架是我为此目的而构建的:

  • 在k8s上运行一个 Jenkins Docker 镜像
  • 在一个简单的静态网站应用程序的基于基于官方 nginx Docker image应用6步 CI/CD pipeline

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表