K8S Kustomize
1.概述
官网:https://kustomize.io/
参考文档:https://kubectl.docs.kubernetes.io/guides/
Kustomize是一个开源的Kubernetes配置管理工具。
在Kubernetes上运行一个项目,可能存在多套运行环境:开发环境、测试环境、生产环境,多套环境可能需要编写多个存在微小差异的YAML配置文件,而这多套YAML文件只存在微小的配置差异(比如镜像、标签等),Kustomize允许将这些公共部分写入到基础配置文件(Base/xxx.yaml)中,将差异部分写入到对应不同运行环境需要覆盖的配置文件(Overlay/<项目目录>/xxx.yaml)中,以简化管理和编写配置文件。
Kustomize已内置Kubernetes中,可以使用"kubectl apply -k"命令指定配置目录。
1.1.Kustomize的组成和目录结构
~/someApp
├── base
│ ├── deployment.yaml
│ ├── kustomization.yaml
│ └── service.yaml
└── overlays
├── development
│ ├── cpu_count.yaml
│ ├── kustomization.yaml
│ └── replica_count.yaml
└── production
├── cpu_count.yaml
├── kustomization.yaml
└── replica_count.yaml
Kustomize主要由Base、Overlay两个部分组成,分别对应Base、Overlay目录。
- Base,基础配置文件存放目录。目录下应该存放kustmization配置文件+资源配置文件。
- Overlays/<项目目录>,差异/要更新的配置文件存放目录,期望覆盖更新、增加、减少的资源对象。目录下应该存放kustmization配置文件+补丁配置文件+更多资源配置文件。
1.2.kustomization.yaml
在每个目录下都应存在一个kustomization.yaml,它是Kustomize的配置文件,用于描述和说明Base、Overlays目录下Kuernetes资源配置文件之间的关系,或者定义声明公共的资源配置部分。
kustomization.yaml有自己的语法,最基础的声明如下:
Base/kustomization.yaml:
commonLabels:
app: hello
resources:
- deployment.yaml
- service.yaml
Overlays/development/kustomization.yaml:
bases:
- ../../base
patchesStrategicMerge:
- cpu_count.yaml
- replica_count.yaml
2.kustomization常用指令
Base/kustomization.yaml:
namePrefix: my-
resources:
- deployment.yaml
- service.yaml
commonLabels:
kustomize: dome-nginx
commonAnnotations:
kustomize/description: "This is an application managed by kustomize"
Overlays/production/kustomization.yaml:
bases:
- ../../base
patchesStrategicMerge:
- deployment.yaml
resources([])
指定要关联的资源配置文件列表。
bases([])
指定基础资源配置文件存放目录路径。
patchesStrategicMerge([])
指定要更新合并的资源配置文件列表。
namePrefix(string)
名称前缀,在每个资源对象的名称前面添加一个前缀。
commonLabels([])
标签,在每个资源对象上面增加一个标签。
commonAnnotations([])
注解,在每个资源对象上面增加一个注解。