K8S 服务自动化运维: 更新 comfigmap 时 pod 不能自动更新

3 阅读1分钟

问题

configmap 更新后,出现 pod 不自动重启更新的情况

解决

用 Kustomize 自动生成 configmap 资源,即使用 configMapGenerator

configMapGenerator

configMapGenerator 从各种来源创建配置地图:字面的键值对、文件或环境文件。Kustomize会自动在生成的ConfigMap名称后附加哈希后缀,并更新资源中的所有引用。当源内容发生变化时,哈希值也随之改变,导致Kubernetes识别配置更新并重启受影响的Pod。

这种自动行为解决了更新 ConfigMap 不会触发 Pod 重启的问题,因为从 Pod 的角度来看,Kubernetes 将 ConfigMaps 视为不可变的。

示例

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: namespace-test

resources:
  - ../../base
  - namespace.yaml
  # - configmap.yaml
  - ingress.yaml

configMapGenerator:
  - name: env-config
    literals:
      # 数据库配置
      - SPRING_DATASOURCE_URL="jdbc:postgresql://postgres-svc:5432/***"
      - SPRING_DATASOURCE_USERNAME="postgres"
      - SPRING_DATASOURCE_PASSWORD="password_postgres"

参考文献