核心在于统一、可追踪、可审计、可复用的配置管理体系:通过configmap/secret分层管理(环境、组件、敏感隔离)、gitops驱动(argo cd/flux+pr校验)、kustomize/helm实现差异化复用,并严格区分cluster-scoped与namespace-scoped配置权限。

管理大规模 Kubernetes 容器集群的配置,核心在于统一、可追踪、可审计、可复用——不能靠人工逐个改 YAML,也不能让不同环境配置漂移。关键不是“怎么写配置”,而是“怎么管配置”。
用 ConfigMap 和 Secret 做配置分层管理
把配置按维度拆开,避免一个大文件包打天下:
-
环境维度:prod / staging / dev 各自独立的 ConfigMap,比如
nginx-config-prod和nginx-config-staging - 组件维度:数据库连接、日志级别、缓存策略分别定义,便于复用和替换(如只更新 Redis 地址,不碰 DB 配置)
-
敏感隔离:密码、token、TLS 私钥必须进 Secret,且建议启用
encryption at rest(静态加密),避免 base64 被轻易解码
用 GitOps 实现配置版本化与自动同步
所有配置必须存 Git,通过声明式工具驱动集群状态对齐:
- 推荐 Argo CD 或 Flux v2,监听指定 Git 分支(如
main或env/prod),自动检测变更并应用 - 每个应用目录结构建议为:
/apps/myapp/overlays/prod/(Kustomize)或/clusters/prod/myapp/(Argo CD Application CR) - 禁止直接
kubectl apply -f生产环境;所有变更必须经 PR + CI 检查(如 yamllint、kubeval、opa gatekeeper 策略校验)
用 Kustomize 或 Helm 实现配置复用与差异化
避免复制粘贴 YAML,用模板机制减少重复错误:
-
Kustomize适合内部团队轻量定制:基础配置(
base/)定义通用字段,overlay(prod/,dev/)只覆盖replicas、resources、image.tag等差异项 -
Helm适合发布标准化组件(如 ingress-nginx、prometheus-operator):Chart 提供参数接口(
values.yaml),不同集群传入不同--set或-f values-prod.yaml - 注意:Helm release 名称需全局唯一;Kustomize 不生成新资源名,更适合严格命名管控场景
用 Cluster-scoped 和 Namespace-scoped 配置分离职责
区分“谁该管什么”,避免权限混乱和误操作:
-
集群级配置(如 CNI 插件、CSI 驱动、metrics-server)走
ClusterRole+ClusterRoleBinding,由平台团队统一维护 -
租户级配置(如应用 ConfigMap、Ingress、ResourceQuota)限定在命名空间内,开发团队自主管理,但受
LimitRange和PodSecurityPolicy(或 Pod Security Admission)约束 - 关键配置加注释说明用途和修改影响,例如:
annotations: "config.kubernetes.io/owner: platform-team"











