Kustomize 多环境配置与发布 Hands-on

验证:未记录
适用版本
未记录
验证范围
尚未登记验证记录。
本文缩写(英文全称与中文含义)
缩写 英文全称/名称 中文含义
CD Continuous Delivery / Continuous Deployment 持续交付/持续部署;是否自动上线取决于流程
ESO External Secrets Operator 将外部秘密系统中的值同步到 Kubernetes 的控制器
GitOps GitOps 以 Git 保存期望状态、由自动化持续协调实际状态的运维方式
HPA Horizontal Pod Autoscaler Pod 水平自动扩缩容器
IAM Identity and Access Management 身份与访问管理
SA Service Account 服务账号,供程序或工作负载使用的身份

前置:业务基线中的 orders-base.yaml 已适配真实镜像,kubectl 内置 kustomize。Secret 值通过 ESO 管理,不用 secretGenerator 把明文提交到 Git。

1. 建目录#

mkdir -p orders-deploy/base orders-deploy/overlays/staging orders-deploy/overlays/production
cp orders-base.yaml orders-deploy/base/resources.yaml

base/kustomization.yaml:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources: [resources.yaml]

base 是跨环境公共结构,不包含云账户专属 IAM 或生产 Secret。不同环境采用不同集群 context但相同 orders namespace,避免 namespace 重写遗留 RoleBinding/云 trust 问题。

2. 建预生产 overlay#

overlays/staging/kustomization.yaml,digest 替换为批准制品;base 中 image 名先统一为 registry.example.com/orders/api:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources: [../../base]
images:
  - name: registry.example.com/orders/api
    newName: registry.example.com/orders/api
    digest: sha256:REPLACE_DIGEST
patches:
  - path: sizing.yaml

overlays/staging/sizing.yaml:

apiVersion: apps/v1
kind: Deployment
metadata: {name: orders-api, namespace: orders}
spec:
  replicas: 3
  template:
    spec:
      containers:
        - name: api
          resources:
            requests: {cpu: 500m, memory: 512Mi}
            limits: {cpu: '2', memory: 1Gi}

生产 overlay 复制此结构,显式设置实际容量、入口/云身份补丁;不是简单把 staging 副本数改大就算生产。HPA 接管后从 Git 清单移除 replicas 或配置 GitOps 的字段忽略,保持唯一所有者。

3. 渲染、差异与部署#

kubectl kustomize orders-deploy/overlays/staging > rendered-staging.yaml
# 确认无占位值、镜像 digest 正确、没有意外集群级权限/生产地址。
kubectl --context="$LAB_CONTEXT" apply --dry-run=server -f rendered-staging.yaml
kubectl --context="$LAB_CONTEXT" diff -f rendered-staging.yaml
kubectl --context="$LAB_CONTEXT" apply -f rendered-staging.yaml
kubectl --context="$LAB_CONTEXT" -n orders rollout status deployment/orders-api --timeout=10m

首次手工演练后交给 Argo CD 或 Flux 管理该 overlay;GitOps 项目白名单决定可管理资源,namespace/SA/Secret 等平台对象可能需要拆到平台 repo。

4. 晋级与回退#

把已验收的同一 digest提升到生产 overlay,review diff 后由生产流水线同步;不要重 build 一个同 tag 镜像。回退 Git commit 后同步并验证业务,涉及 schema 的变更按 工作负载篇兼容策略执行。删除 manifest 不一定触发资源删除,prune 必须独立审查。

验收:staging/production 渲染结果只有预期配置差异、无明文 Secret、镜像不可变、业务验证通过;清理只针对独立实验 namespace。

参考:Kustomize。

搜索文档

输入关键词,搜索所有文档。

↑ ↓ 选择 · Enter 打开 · Esc 关闭