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
Kustomize会发现文件夹内的此文件,根据文件声明内容进行渲染,只有此文件内声明的内容才会渲染.
如bases/kustomization.yaml
中声明了两个文件,Kustomize则会读取两个文件渲染。
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- example-deployment.yaml
- example-svc.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
接下来简单介绍这些配置的作用。