Kubernetes 中 ConfigMap 和 Secret 的使用详解

阅读时长 7 分钟读完

Kubernetes 是一个流行的容器编排系统,它可以帮助用户自动化部署、扩展和管理应用程序。在 Kubernetes 中,ConfigMap 和 Secret 是两个非常重要的概念。ConfigMap 用于存储配置数据,而 Secret 用于存储敏感数据。

ConfigMap 的使用

ConfigMap 可以用来存储不需要加密的配置数据,例如应用程序的配置文件、命令行参数和环境变量等。ConfigMap 可以被容器挂载为 volume 或者直接注入到容器环境变量中。

创建 ConfigMap

可以通过 YAML 文件或者 kubectl 命令行工具创建 ConfigMap。下面是一个 YAML 文件的示例:

这个 YAML 文件定义了一个名为 my-config 的 ConfigMap,它包含了三个条目:database_urldatabase_userdatabase_password

使用 kubectl 命令行工具可以通过如下命令快速创建 ConfigMap:

以上命令将 config.properties 中的所有内容创建一个 ConfigMap 名为 my-config

挂载 ConfigMap 为 Volume

可以将 ConfigMap 挂载为 volume,通过 volume 将配置文件加载到容器中。下面是一个使用 ConfigMap 挂载为 volume 的 Pod 的示例:

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

上述示例中,我们创建了一个名为 my-app 的 Pod,它包含了一个容器。这个容器使用了镜像 my-image,并且将 ConfigMap 挂载为 volume 到路径 /etc/config 中。

注入 ConfigMap 到容器环境变量中

除了可以将 ConfigMap 挂载为 volume 以外,还可以通过注入环境变量的方式将 ConfigMap 的内容注入到容器中。下面是一个 Pod 的示例:

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

上述示例中,我们创建了一个名为 my-app 的 Pod,它包含了一个容器。这个容器使用了镜像 my-image,并且使用了三个环境变量(DATABASE_URLDATABASE_USERDATABASE_PASSWORD),这些环境变量的值来自于名为 my-config 的 ConfigMap。

Secret 的使用

Secret 用于存储敏感数据,例如密码、证书和密钥等。Secret 可以被容器挂载为 volume 或者直接注入到容器环境变量中。

创建 Secret

可以通过 YAML 文件或者 kubectl 命令行工具创建 Secret。下面是一个 YAML 文件的示例:

这个 YAML 文件定义了一个名为 my-secret 的 Secret,它包含了两个条目:usernamepassword。这两个条目的值分别是经过 base64 编码的字符串。

使用 kubectl 命令行工具可以通过如下命令快速创建 Secret:

以上命令将创建一个名为 my-secret 的 Secret,并且将 usernamepassword 设置为相应的值。

挂载 Secret 为 Volume

可以将 Secret 挂载为 volume,通过 volume 将证书和密钥等敏感文件加载到容器中。下面是一个使用 Secret 挂载为 volume 的 Pod 的示例:

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

上述示例中,我们创建了一个名为 my-app 的 Pod,它包含了一个容器。这个容器使用了镜像 my-image,并且将 Secret 挂载为 volume 到路径 /etc/secret 中。

注入 Secret 到容器环境变量中

除了可以将 Secret 挂载为 volume 以外,还可以通过注入环境变量的方式将 Secret 的内容注入到容器中。下面是一个 Pod 的示例:

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

上述示例中,我们创建了一个名为 my-app 的 Pod,它包含了一个容器。这个容器使用了镜像 my-image,并且使用了两个环境变量(DATABASE_USERDATABASE_PASSWORD),这些环境变量的值来自于名为 my-secret 的 Secret。

总结

通过本文的介绍,我们了解了 Kubernetes 中 ConfigMap 和 Secret 的使用方法。ConfigMap 用于存储不需要加密的配置数据,而 Secret 用于存储敏感数据。我们可以将 ConfigMap 和 Secret 挂载为 volume 或者直接注入到容器环境变量中,从而让容器可以方便地访问配置数据和敏感数据。这些功能非常有用,能够帮助我们更好地管理和部署应用程序。

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

纠错
反馈