Kubernetes 中如何管理 Secrets 和 ConfigMaps?

Kubernetes 是目前最流行的容器编排平台之一,它提供了一种便捷的方式来管理 Docker 容器。在使用 Kubernetes 进行应用部署时,我们经常需要使用一些敏感的信息,例如数据库密码、API 密钥等等。为了保证这些敏感信息的安全性,Kubernetes 提供了 Secrets 和 ConfigMaps 两种资源对象来管理这些信息。

Secrets

Secrets 是 Kubernetes 中用于存储敏感信息的一种资源对象。它可以用来存储密码、密钥、证书等敏感信息,而且这些信息都是以 base64 编码的形式存储在 Kubernetes 中的。Secrets 可以被挂载到容器中,从而让容器访问这些敏感信息。

创建 Secrets

我们可以使用 kubectl 命令行工具来创建 Secrets,例如:

这个命令会创建一个名为 my-secret 的 Secrets,其中包含一个名为 password 的键值对,其值为 123456。如果我们想要将一个文件中的内容作为 Secrets,可以使用 --from-file 标志,例如:

这个命令会创建一个名为 my-secret 的 Secrets,其中包含一个名为 api-key 的键值对,其值为 api-key.txt 文件中的内容。

挂载 Secrets

我们可以通过在 Pod 中指定 volume 和 volumeMounts 来将 Secrets 挂载到容器中。例如:

这个 Pod 中包含一个名为 my-secret 的 volume,它的类型是 Secrets。在容器中,我们将这个 volumeMounts 挂载到了 /etc/my-secret 目录下,以只读方式访问这个 Secrets。

使用 Secrets

在容器中,我们可以通过读取 /etc/my-secret 目录下的文件来获取 Secrets 的值。例如,在 Bash 脚本中可以这样使用:

这个脚本会读取 /etc/my-secret/password 文件的内容,并将其输出到控制台上。

ConfigMaps

ConfigMaps 是 Kubernetes 中用于存储配置信息的一种资源对象。它可以用来存储应用配置、环境变量等信息。ConfigMaps 可以被挂载到容器中,从而让容器访问这些配置信息。

创建 ConfigMaps

我们可以使用 kubectl 命令行工具来创建 ConfigMaps,例如:

这个命令会创建一个名为 my-config 的 ConfigMaps,其中包含一个名为 database_url 的键值对,其值为 jdbc:mysql://localhost:3306/mydb。

挂载 ConfigMaps

我们可以通过在 Pod 中指定 volume 和 volumeMounts 来将 ConfigMaps 挂载到容器中。例如:

这个 Pod 中包含一个名为 my-config 的 volume,它的类型是 ConfigMaps。在容器中,我们将这个 volumeMounts 挂载到了 /etc/my-config 目录下,以只读方式访问这个 ConfigMaps。

使用 ConfigMaps

在容器中,我们可以通过读取 /etc/my-config 目录下的文件来获取 ConfigMaps 的值。例如,在 Bash 脚本中可以这样使用:

这个脚本会读取 /etc/my-config/database_url 文件的内容,并将其输出到控制台上。

总结

Kubernetes 中的 Secrets 和 ConfigMaps 提供了一种方便的方式来管理敏感信息和配置信息。我们可以通过 kubectl 命令行工具来创建这些资源对象,并将它们挂载到容器中以供使用。在容器中,我们可以通过读取挂载目录下的文件来获取这些信息。这种方式不仅方便,而且也更加安全,因为这些敏感信息和配置信息都是以加密的方式存储在 Kubernetes 中的。

参考资料

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65737611d2f5e1655dc922f9


纠错
反馈