在Kubernetes(K8s)中,ConfigMap 和 Secret 是用来存储应用程序配置信息和敏感数据的两种资源类型。它们可以帮助你将配置和密钥管理与应用程序的部署分离开来,从而提高安全性和灵活性。
定义
ConfigMap
ConfigMap 用于存储非敏感的配置数据,比如环境变量、配置文件等。它可以通过多种方式注入到 Pod 中,例如作为环境变量、命令行参数或者挂载为文件。
Secret
Secret 用于存储敏感数据,比如密码、API 密钥等。Secret 中的数据会被存储为 Base64 编码,但需要注意的是,这并不是加密,只是一种编码方式。
对比
资源名称 | 相同点 | 不同点 |
ConfigMap | 注入到 Pod 中的环境变量或者挂载为文件,且都为key:value 方式(map 类型) | 内容为明文,适合存放配置文件路径 |
Secret | 注入到 Pod 中的环境变量或者挂载为文件,且都为key:value 方式(map 类型) | 内容进行了 Base64 编码,密码等,通过 Type 字段可以进行内容限制 |
使用方式
创建 ConfigMap
你可以通过命令行或者 YAML 文件创建 ConfigMap。以下是一个创建 ConfigMap 的示例 YAML 文件:
在 Pod 中使用 ConfigMap
你可以在 Pod 的定义中引用 ConfigMap。
创建 Secret
你可以通过命令行或者 YAML 文件创建 Secret。以下是一个创建 Secret 的示例 YAML 文件:
在 Pod 中使用 Secret
你可以在 Pod 的定义中引用 Secret。
演示
使用 uccps 演示
configmap 演示
通过 yaml 文件创建

查看结果


Secret 演示
通过 yaml 文件创建

结果


总结
ConfigMap 用于存储非敏感的配置数据,而 Secret 用于存储敏感数据。它们可以帮助你将配置信息和敏感数据与应用程序的部署分离开来,提高了安全性和灵活性。
资源来源
- k8s gitlab: https://github.com/kubernetes/kubernetes
- k8s 官网: https://kubernetes.io/