在 Kubernetes 中使用 Helm 包管理器

阅读时长 8 分钟读完

前言

随着云计算技术的不断发展,Kubernetes 已经成为了容器编排领域的“领头羊”,并得到了许多公司的广泛应用。但是,Kubernetes 的安装和配置非常复杂,尤其是在大规模部署时,手动管理容器编排可以变得很麻烦。因此,Helm 包管理器被引入到 Kubernetes 世界中,它可以大大简化 Kubernetes 应用的安装和管理。

本文将介绍 Helm 包管理器的使用,包括如何安装和配置 Helm,以及如何使用 Helm 来管理 Kubernetes 应用的安装和升级。

安装 Helm

在开始 Helm 的学习之前,我们首先需要安装 Helm。Helm 有两个组件:Helm 客户端和 Tiller 服务端。Helm 客户端是用来管理 Helm Charts 的命令行工具。Tiller 服务端是一个 Kubernetes 资源,它负责管理 Kubernetes 上的 Helm Charts,例如在 Kubernetes 上安装、升级和删除部署。

安装 Helm 客户端

我们可以从 Helm 的官方仓库下载适用于操作系统的 Helm 客户端二进制文件,例如 macOS 系统可以通过 Homebrew 安装 Helm:

完成安装后,可以使用 helm help 命令来验证 Helm 是否正确安装,并列出所有可用的 Helm 命令。

安装 Tiller 服务端

Tiller 服务端需要在 Kubernetes 集群上运行,并且需要绑定到一个 ServiceAccount 上,以便 Helm 客户端可以与 Tiller 服务端通信。我们可以通过 Helm 客户端来安装 Tiller 服务端,步骤如下:

  1. 创建一个 ServiceAccount:

  2. 创建一个 ClusterRoleBinding:

  3. 初始化 Tiller:

    该命令将在 Kubernetes 集群上安装并配置 Tiller,并将其绑定到上一步创建的 ServiceAccount 上。

在执行完上述步骤后,可以使用 helm version 命令来验证 Tiller 是否已正确安装,并显示 Helm 客户端和 Tiller 服务端的版本。

使用 Helm

在安装好 Helm 后,我们可以使用 Helm 来管理 Kubernetes 应用程序。Helm 将应用程序封装在 Helm Charts 中,Helm Charts 是一组文件,描述了 Kubernetes 应用程序中的所有组件和它们之间的依赖关系。

编写 Helm Chart

Helm Chart 的目录结构如下:

Chart.yaml

Chart.yaml 文件是 Helm Chart 的主要配置文件,它包含有关 Chart 的基本元数据,例如 Chart 的名称、版本、作者、描述等等。以下是 Chart.yaml 的一个示例:

values.yaml

values.yaml 文件是默认的值文件,用于定义 Kubernetes 资源的默认值,例如容器镜像名称、标签、端口等等。当安装 Chart 时,可以使用 --set 标志覆盖默认值。以下是 values.yaml 的一个示例:

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

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

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

--------
  -------- -----
  ------------
    --
  ----- -
  ------
    - -------------------
  ---- --
展开代码

templates/

templates/ 文件夹中包含 Kubernetes 资源模板,用于定义要在 Kubernetes 集群上部署的资源。这里的文件名必须以 .yaml.yml 结尾。在这些模板中,可以使用 Go 的模板语言来创建 Kubernetes 资源。以下是一个使用 Deployment 模板的示例:

-- -------------------- ---- -------
----------- -------
----- ----------
---------
  ----- -- ----------- -------------
-----
  --------- -- -------------------- --
  ---------
    ------------
      ---- -- ----------- --
  ---------
    ---------
      -------
        ---- -- ----------- --
    -----
      -----------
        - ----- -- ----------- ------------
          ------ -- ------------------------ ----- ----------------- --
          ------
            - -------------- --
          ---------------- -- ------------------------ --
展开代码

helpers/

helpers/ 文件夹中可以存放一些工具类的模板,用于进行一些简单的计算或创建某些数据结构。例如,以下是一个可以生成 Ingress 规则的 Helm Helper:

-- -------------------- ---- -------
--- ------ ----------------- ---
--- --------- -- ------- ------------------ - ---
--- -------- -- --------------- ---
--- -- ---------------- ---
----------- --------------------
----- -------
---------
  ----- -- --------- - ----- -- - ---------- --- --
  -------
    ---- -- -------- -------------- - --
    ------ --- ----------- ----- -------------- ---
    -------- --- ------------- ---
  --- ---- -------------------- --
  ------------
    --- ------ - - ------- - --
  --- --- --
-----
  --- -- ------------ --
  ----
    --- ----- ------------ --
    - ------
        --- ----- ------ --
        - -- - --
        --- --- --
      ----------- -- ------ -------- --------- - ----- -- - ---------- --- --
    --- --- --
  --- --- --
  ------
    --- ----- -------------- --
    - ----- -- - - ----- --
      -----
        ------
          - ----- -- ------------- --
            --------
              ------------ -- --------- --
              ------------ ----
    --- --- --
--- --- --
--- --- --
展开代码

安装 Chart

编写好 Helm Chart 后,就可以开始安装 Chart 了。可以使用 helm install 命令来安装 Chart。例如,以下命令将安装 mychart

这将从 Helm 仓库中获取 mychart 的最新版本,并安装它到 Kubernetes 中。可以使用 kubectl get pods 命令来验证 Chart 是否已成功安装。

升级 Chart

当需要更改 Helm Chart 时,可以使用 helm upgrade 命令来升级 Helm Chart。例如,以下命令将 mychart 更新到版本 0.2.0:

该命令将更新 mychart 并将容器镜像标签更改为 1.16.0。可以使用 kubectl get pods 命令来验证 Chart 是否已成功升级。

总结

Helm 包管理器是 Kubernetes 应用程序管理的一个强大工具。本文介绍了如何安装和配置 Helm,以及如何使用 Helm 来编写和安装 Kubernetes Helm Charts。希望本文可以为大家了解 Helm 奠定基础,也能帮助大家更好地管理 Kubernetes 应用程序。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/651d5dfc95b1f8cacd4ee776

纠错
反馈

纠错反馈