问题
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"