kustomize-basics

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Kustomize Basics

Kustomize 基础

Kubernetes configuration customization without templates.
无需模板即可自定义Kubernetes配置。

Basic Structure

基本结构

app/
├── base/
│   ├── kustomization.yaml
│   ├── deployment.yaml
│   └── service.yaml
└── overlays/
    ├── development/
    │   └── kustomization.yaml
    └── production/
        └── kustomization.yaml
app/
├── base/
│   ├── kustomization.yaml
│   ├── deployment.yaml
│   └── service.yaml
└── overlays/
    ├── development/
    │   └── kustomization.yaml
    └── production/
        └── kustomization.yaml

Base Kustomization

基础Kustomization配置

yaml
undefined
yaml
undefined

base/kustomization.yaml

base/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization
resources:
  • deployment.yaml
  • service.yaml
commonLabels: app: myapp
namePrefix: myapp-
images:
  • name: myapp newTag: v1.0.0
undefined
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization
resources:
  • deployment.yaml
  • service.yaml
commonLabels: app: myapp
namePrefix: myapp-
images:
  • name: myapp newTag: v1.0.0
undefined

Overlay Kustomization

覆盖层Kustomization配置

yaml
undefined
yaml
undefined

overlays/production/kustomization.yaml

overlays/production/kustomization.yaml

apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization
bases:
  • ../../base
replicas:
  • name: myapp-deployment count: 5
images:
  • name: myapp newTag: v2.0.0
patches:
  • patch: |- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment spec: template: spec: containers: - name: myapp resources: limits: memory: "1Gi" cpu: "1000m"
undefined
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization
bases:
  • ../../base
replicas:
  • name: myapp-deployment count: 5
images:
  • name: myapp newTag: v2.0.0
patches:
  • patch: |- apiVersion: apps/v1 kind: Deployment metadata: name: myapp-deployment spec: template: spec: containers: - name: myapp resources: limits: memory: "1Gi" cpu: "1000m"
undefined

Common Commands

常用命令

bash
undefined
bash
undefined

Build kustomization

Build kustomization

kustomize build base/
kustomize build base/

Build overlay

Build overlay

kustomize build overlays/production/
kustomize build overlays/production/

Apply with kubectl

Apply with kubectl

kubectl apply -k overlays/production/
kubectl apply -k overlays/production/

Diff before apply

Diff before apply

kubectl diff -k overlays/production/
undefined
kubectl diff -k overlays/production/
undefined

Transformers

转换器

Common Labels

通用标签

yaml
commonLabels:
  app: myapp
  environment: production
yaml
commonLabels:
  app: myapp
  environment: production

Name Prefix/Suffix

名称前缀/后缀

yaml
namePrefix: prod-
nameSuffix: -v2
yaml
namePrefix: prod-
nameSuffix: -v2

Namespace

命名空间

yaml
namespace: production
yaml
namespace: production

Config Map Generator

ConfigMap生成器

yaml
configMapGenerator:
  - name: app-config
    files:
      - config.properties
    literals:
      - LOG_LEVEL=info
yaml
configMapGenerator:
  - name: app-config
    files:
      - config.properties
    literals:
      - LOG_LEVEL=info

Secret Generator

Secret生成器

yaml
secretGenerator:
  - name: app-secrets
    literals:
      - password=secret123
yaml
secretGenerator:
  - name: app-secrets
    literals:
      - password=secret123

Best Practices

最佳实践

Use Bases for Common Configuration

通用配置使用基础层

Keep common configuration in base and environment-specific in overlays.
将通用配置放在base层,环境特定配置放在overlays层。

Strategic Merge Patches

策略合并补丁

yaml
patches:
  - path: patch-deployment.yaml
yaml
patches:
  - path: patch-deployment.yaml

JSON Patches

JSON补丁

yaml
patchesJson6902:
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: myapp
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 3
yaml
patchesJson6902:
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: myapp
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 3