Kubernetes 中 ConfigMap 及 Secrets 的使用和管理

阅读时长 5 分钟读完

在 Kubernetes 中,ConfigMap 和 Secrets 是两种用于管理和传递应用程序配置和敏感数据的工具。它们可以用于存储和传递各种类型的配置信息,如环境变量、命令行参数、密钥、证书等。

ConfigMap

ConfigMap 是一种用于存储应用程序配置信息的 Kubernetes 对象。它可以将应用程序的配置与容器镜像分离,从而使应用程序的部署和维护更加灵活和可配置。

创建 ConfigMap

ConfigMap 可以通过多种方式创建,包括命令行工具、kubectl apply 命令、yaml 文件等。

创建 ConfigMap 时,需要提供 ConfigMap 名称、配置信息、命名空间(可选)等参数。以下是一个创建 ConfigMap 的示例:

上述示例创建了一个名为 my-config 的 ConfigMap,其中包含了数据库连接信息。

将 ConfigMap 应用到 Pod 中

在 Pod 中使用 ConfigMap 可以通过环境变量或者 Volume 的方式。以下是一个通过环境变量的示例:

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

上述示例创建了一个名为 my-pod 的 Pod,其中包含了一个名为 my-container 的容器。该容器通过环境变量的方式使用了名为 my-config 的 ConfigMap 中的数据库连接信息。

更新 ConfigMap

当 ConfigMap 中的配置信息需要更新时,可以通过 kubectl apply 命令或者编辑 ConfigMap yaml 文件来实现。更新 ConfigMap 时,必须更新 ConfigMap 对应的 Pod 才能使新的配置信息生效。

Secrets

Secrets 与 ConfigMap 类似,也是一种用于存储和传递应用程序敏感信息的 Kubernetes 对象。与 ConfigMap 不同的是,Secrets 中存储的是加密后的信息,如密码、私钥、证书等。

创建 Secrets

创建 Secrets 也可以通过多种方式,如命令行工具、kubectl apply 命令、yaml 文件等。以下是一个创建 Secrets 的示例:

上述示例创建了一个名为 my-secret 的 Secrets,其中包含了用户名和密码。

需要注意的是,Secrets 中的数据必须经过 Base64 编码。可以使用以下命令将原始数据编码:

创建 Secrets 后,可以像使用 ConfigMap 一样将其应用到 Pod 中。以下是一个使用 Secrets 的示例:

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

上述示例创建了一个名为 my-pod 的 Pod,其中包含了一个名为 my-container 的容器。该容器使用了名为 my-secret 的 Secrets 中的用户名和密码。

更新 Secrets

Secrets 的更新方式与 ConfigMap 类似,可以通过 kubectl apply 命令或者编辑 Secrets yaml 文件来实现。Secrets 中的数据不会被直接修改,而是会创建一个新的版本来代替旧的版本。

总结

ConfigMap 和 Secrets 是 Kubernetes 中用于管理和传递应用程序配置和敏感数据的工具。它们可以通过多种方式创建和使用,并且具有灵活性和可配置性。在实际应用中,需要根据实际情况选择合适的方式来使用和管理 ConfigMap 和 Secrets,以保证应用程序的稳定性和安全性。

示例代码

示例代码见上文中的 yaml 部分。

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

纠错
反馈