Skip to content

配置管理

ConfigMap

ConfigMap 用于存储非敏感的配置信息,比如配置文件、命令行参数、环境变量等。

  • 作用

    • 解耦配置和容器镜像。
    • 在不重建镜像的情况下更新应用配置。
  • 使用方式

    • 以环境变量的形式注入容器。
    • 挂载为 Volume 文件。
    • 通过 CLI 或 YAML 创建并引用。
  • 示例

yaml
apiVersion: v1
kind: ConfigMap
metadata:
  name: app-config
data:
  APP_ENV: "production"
  LOG_LEVEL: "debug"
yaml
envFrom:
  - configMapRef:
      name: app-config

Secret

Secret 用于存储敏感数据,例如密码、API Token、证书等。

  • 特点

    • data 字段使用 Base64 编码,这只是编码而不是加密。
    • 可作为环境变量或 Volume 使用。
    • 支持 RBAC 权限控制。

Secret 默认可能以可还原的形式存储在 etcd 中。生产环境还应启用静态数据加密(encryption at rest)、限制 get/list/watch secrets 权限,并优先使用短期 ServiceAccount Token。需要集中管理和轮换凭据时,可结合外部 Secret 管理系统。

  • 创建方式

    • CLI 方式:
bash
kubectl create secret generic my-secret --from-literal=password=123456
  • YAML 文件方式(需 base64 编码):
yaml
apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  password: MTIzNDU2

SubPath

SubPath 用于将某个卷中的子路径挂载到容器指定路径。

使用 subPath 挂载 ConfigMap 或 Secret 的单个文件时,容器不会自动收到后续配置更新。需要热更新时,应挂载整个卷并让应用监听文件变化,或通过滚动重启加载新配置。

  • 用途

    • 多个容器共享一个卷但只访问不同子目录。
    • 让配置文件独占某个挂载路径。
  • 示例

yaml
volumeMounts:
  - name: config
    mountPath: /etc/config/app.conf
    subPath: app.conf