在 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