在 Kubernetes 中,ConfigMap 和 Secrets 是两种用于管理和传递应用程序配置和敏感数据的工具。它们可以用于存储和传递各种类型的配置信息,如环境变量、命令行参数、密钥、证书等。
ConfigMap
ConfigMap 是一种用于存储应用程序配置信息的 Kubernetes 对象。它可以将应用程序的配置与容器镜像分离,从而使应用程序的部署和维护更加灵活和可配置。
创建 ConfigMap
ConfigMap 可以通过多种方式创建,包括命令行工具、kubectl apply 命令、yaml 文件等。
创建 ConfigMap 时,需要提供 ConfigMap 名称、配置信息、命名空间(可选)等参数。以下是一个创建 ConfigMap 的示例:
apiVersion: v1 kind: ConfigMap metadata: name: my-config data: database-url: "jdbc:mysql://localhost:3306/mydb" database-username: "myuser" database-password: "mypassword"
上述示例创建了一个名为 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 的示例:
apiVersion: v1 kind: Secret metadata: name: my-secret type: Opaque data: username: dXNlcm5hbWU= password: cGFzc3dvcmQ=
上述示例创建了一个名为 my-secret 的 Secrets,其中包含了用户名和密码。
需要注意的是,Secrets 中的数据必须经过 Base64 编码。可以使用以下命令将原始数据编码:
echo -n "username" | base64 echo -n "password" | 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