Kubernetes 中使用 ConfigMap 和 Secret 实现敏感信息管理

阅读时长 5 分钟读完

在 Kubernetes 集群中部署应用程序需要加密存储敏感信息,包括服务密码、证书和私钥等等。Kubernetes 提供了 ConfigMap 和 Secret 帮助我们有效管理这些敏感信息。

ConfigMap

ConfigMap 可以存储非敏感的配置信息,例如数据库 URL、端口号和应用程序的配置项。

在创建 ConfigMap 时,可以使用 kubectl 创建一个 YAML 文件,将需要存储的配置信息放在其中。

使用 kubectl create 命令可以创建 ConfigMap。

通过 Kubernetes 的环境变量注入特性,可以将 ConfigMap 中的值注入到容器中。

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

在容器中,可以通过环境变量 $MYSQL_URL$REDIS_URL 得到 ConfigMap 中存储的值。

Secret

Secret 可以存储敏感信息,例如密钥、密码、证书和私钥等等。Secret 可以被编码为 base64 格式,但是这并不能真正地加密数据。因此,在编码 Secret 前,需要将数据加密。

在创建 Secret 时,可以使用 kubectl 创建一个 YAML 文件,将加密后的敏感信息放在其中。

使用 kubectl create 命令可以创建 Secret。

在容器中,可以通过环境变量和 Volume 访问 Secret 中存储的值。

使用环境变量

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

在容器中,可以通过环境变量 $USERNAME$PASSWORD 得到 Secret 中存储的值。

使用 Volume

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

在容器中,可以通过挂载 Volume /etc/mysecret 访问 Secret 中存储的值。

总结

ConfigMap 和 Secret 是 Kubernetes 中管理敏感信息的有力工具,可以帮助我们加密存储密码、证书和私钥等等。在容器中,可以通过环境变量和 Volume 访问这些敏感信息。

参考

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

纠错
反馈