我们来说下Kustomize
这是Kubernetes提供的一个本地配置管理工具,轻量版的helm
对应的官方地址为https://kustomize.io/
配置完成之后,只需要kubectl apply -k来部署不同环境的应用
这样他可以直接应用一个文件夹到K8S集群中
比如我们有一个文件夹
我们在service中声明
kind: Service
apiVersion: v1 metadata: name: the-service spec: selector: deployment: hello type: ClusterIP ports: – protocol: TCP port: 8666 targetPort: 8080 |
在kustomization中声明
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization metadata: name: arbitrary # Example configuration for the webserver # at https://github.com/monopole/hello commonLabels: app: hello # 构建出来的每个资源上都有app=hello标签 resources: – deployment.yaml – service.yaml – configMap.yaml |
这样,如果我们使用kubectl apply -k demo/
就是来demo目录下,寻找kustomization.yaml去应用
但是更为高级的使用方式,我们可以分离不同的环境,将原来的抽取为base环境,其他的环境层可以只定义变量覆盖
加入我们在production目录下配置了kustomization.yaml
#production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization namePrefix: production- commonLabels: variant: production org: acmeCorporation commonAnnotations: note: Hello, I am production! bases: – ../../base patchesStrategicMerge: – deployment.yaml |
其中关键的是base:定义了父子集依赖关系
这样我们使用的时候,就需要去上上级目录的base下找基础模板,在此基础上进行使用
而我们的使用也只需要
Kubectl apply -k overlays/production. -n prod
从而进行覆盖的使用