Kubernetes 自动部署:使用 Helm 和 CI/CD 工具

容器编排平台 Kubernetes 成为了现代云原生应用开发的标配。Kubernetes 部署和管理大规模的容器应用程序需要大量的资源和时间,并且很容易出现配置和部署不一致的问题。因此,了解 Kubernetes 自动化部署的方法非常重要。本文将介绍使用 Helm 和 CI/CD 工具自动部署 Kubernetes 应用的最佳实践。

Helm 和 Chart

Helm 是 Kubernetes 的一个包管理工具,它允许您使用称为 Charts 的预定义模板来配置 Kubernetes 应用程序的部署和资源。Chart 就是一份包含 Kubernetes 资源的归档包,其中包括了 Helm Values 文件(一系列变量,这些变量根据您的环境而变化)。Chart 由 helm 工具安装并展开到 Kubernetes 群集中。

使用 Helm,您可以轻松地在 Kubernetes 中部署和管理应用程序,而不必手动编辑和管理 Kubernetes YAML 文件。它为您提供了将 Kubernetes 应用程序绑定到允许动态更改的配置的便捷方式。然后,您可以将 Helm Charts 用于封装和版本化 Kubernetes 环境。

CI/CD 工具

现代云原生应用程序的持续交付(CI/CD)是一个自动化的流程,用于构建、测试、部署和管理容器编排平台 Kubernetes 的应用程序。CI/CD 工具可以确保一致的环境部署、提高稳定性和安全性,缩短上线时间,减少错误率。

在 Kubernetes 的 CI/CD 流程中,最常用的工具是 Jenkins、GitLab CI、CircleCI、Travis CI、Drone 和 Argo CD。本文选择使用 GitLab CI。

自动部署流程

自动化部署流程通常由以下几个阶段组成:

  1. 安装 Kubectl 和 Helm 工具
  2. 准备 Helm Chart
  3. 部署 Helm Chart
  4. 集成 GitLab CI
  5. 自动化测试
  6. 自动化部署

安装 Kubectl 和 Helm 工具

我们需要安装 Kubectl 和 Helm 工具以便从 CI/CD 环境中访问 Kubernetes 集群。如果您是在 MacOS 和 Linux 上设置 CI/CD 环境,可以使用以下命令进行安装:

- ---------
- ---- --- ------- ---------------------------------------------------------------- -- ---------------------------------------------------------------------------------------------- -- -
    ----- -- ------- -- -
    ---- -- ------- ---------------

- ------
- ---- --------------------------------------------------------------------- - ----

准备 Helm Chart

我们需要创建一个 Helm Chart,该 Chart 包含应用程序的依赖项和部署和资源定义。可以自己从头开始创建 Chart,但 Helm 和社区提供了很多 Helm Chart 库,这些库包含大量预配置的 Chart,方便我们使用。这里以 WordPress 应用为例:

- ---- ------ ---------

创建的 Chart 目录结构如下:

----------
  ----------
  -----------
  -------
  ----------
  -
    ---------

我们需要修改 values.yaml 文件以定义我们的 WordPress 应用程序。

部署 Helm Chart

在 CI/CD 环境中部署 Helm Chart,需要以下步骤:

1. 在创建 Helm Chart 时,指定将要安装的 repository(即需要安装的 chart 标识符):

- --------- ----- -- ------------ --

----- ---------
-------- -----
----------- ---

-------------
  - ----- -----------------
    -------- ------
    ----------- ----------------------------------

2. 更新 values.yaml 文件:

- --------- ----- -- ------------- --

------------------ ----
------------------ ----------
--------------- -----------------
-----------------
  ----- -----------
  ----- ------------
  --------- --
  ----- ---------------
  --------- -----------------

3. 在 CI/CD 环境中使用 helm 安装 Chart:

- -------
---- ------- ------- --------------------- -------- --------- --- -------- ----------------------- ------ --------- -----------

安装成功后,我们应该看到我们的 WordPress 应用程序在 Kubernetes 群集中运行。

集成 GitLab CI

GitLab CI 是一个流行的自动化 CI/CD 工具,可以与许多不同的应用程序一起使用。在这里,我们将介绍如何将 GitLab CI 集成到 Kubernetes 应用程序的自动部署流程中。

首先,需要在 GitLab CI 中配置 Kubernetes 访问信息。在 GitLab 中,点击机器人头像->Settings->CI/CD,在 Runner 中 select "Kubernetes" 并填写 YAML 文件:

- --------- ---------- ------
------ ----------

----------
  ----------- ----------------------------
  --------------- ---------
  ------------ --------------------------------
  ----------- ---------------------

--------------
  - --- --- ---------- --------------- ------- ----

-------
  - ------

-----------
  ------ ------
  -------
    - ------ ------- -- ----- -- ----------------------------------------------------------------------------------------- -- ------- -- ----- -- ---------
    - ------ ---- -- ---- --- ---------- ----- ---- --------------------------------------------------------------------- - ---------
    - ----- ---- ----------------------------------------- --------------
    - ----- ------- --------- ----- --------------

自动化测试

在部署和升级 Kubernetes 应用程序之前,需要确保应用程序在 Kubernetes 环境中可以正常工作。我们需要添加自动化测试到 CI/CD 流程中,以便在部署之前进行测试。

本文使用 patchcurl 命令测试在 myapp-chart/templates/foo1.yaml 中定义的资源。测试需要在执行以下命令后进行:

- ------ -------------------- ---------------------
- ------ ---------------
- -------- - --------------------------------- - ------- ----- -- -
- ------- ----- ---------- ----- -- ----- ------------- ----------- ---------- ------- ----------------------------------------------- -------- ---------------------
- ---- ------------------------

自动化部署

在完成所有上述步骤后,我们现在已经将 WordPress 应用程序绑定到了 GitLab CI/CD 流程,并使用 Helm 安装并升级了该应用程序。当使用版本控制集成工具来推动代码时,部署工程师可以轻松地将应用程序从一个环境(例如,测试、预发布和生产)迁移到另一个环境。

自动化部署的好处是:可以通过在 Jenkins 等 CI/CD 工具的 UI 上单击几个按钮来推动部署。这减少了错误并缩短了部署时间。此外,自动化部署还可以帮助我们在各种集成环境中部署应用程序,包括预发布、生产、测试和开发环境。

结论

本文介绍了如何使用 Helm 和 CI/CD 工具进行 Kubernetes 应用程序的自动部署。通过将 Helm Chart 和 GitLab CI/CD 集成到自动部署流程中,可以缩短部署时间、减小错误率、提高安全性和稳定性。阅读此文章后,您可以在 Kubernetes 中自动部署和管理应用程序,最终实现快速部署、持续集成和持续交付。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6709d7c5d91dce0dc87c5664