Kustomize是一款用于Kubernetes的配置管理工具,我们可以使用Kustomize轻松渲染出用于不同环境的配置并部署到Kubernetes中,很多场景都是Kustomize与Helm配合使用,Kustomize更接近原生YAML,这里因为我们的服务开发脚手架并未规范,对于配置文件、定制文件、持久化目录等配置比较混乱,仅使用Kustomize可以更快速部署服务,Helm需要更多的逻辑判断与开关,所以并未结合Helm使用。


部署

无需部署,Argo CD会自动使用Kustomize渲染后提交至Kubernetes。

文件结构

Kustmoize推荐使用公共配置与定制配置两种组合在一起进行使用。

├── bases
│   ├── example-service-deployment.yaml
│   ├── example-service-svc.yaml
│   └── kustomization.yaml
└── overlays
    └── dev
        ├── Config.yaml
        ├── Secret.yaml
        ├── ingress.yaml
        ├── kustomization.yaml
        ├── pv.yaml
        └── pvc.yaml

快速开始

bases/kusomization.yaml

Kustomize会发现文件夹内的此文件,根据文件声明内容进行渲染,只有此文件内声明的内容才会渲染.

bases/kustomization.yaml中声明了两个文件,Kustomize则会读取两个文件渲染。

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - example-deployment.yaml
  - example-svc.yaml

overlays/dev/kustomization.yaml

与上面文件类似,此文件会嵌套bases中声明的内容:

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
bases:
  - ../../bases
resources:
  - ingress.yaml
  - pvc.yaml
configMapGenerator:
  - name: example-service-config
    files:
      - Config.yaml
secretGenerator:
  - name: example-service-secret
    files:
      - Secret.yaml
images:
  - name: example-service
    newTag: 1234
replicas:
  - name: chat-api
    count: 1

接下来简单介绍这些配置的作用。

bases