我们来说下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

从而进行覆盖的使用

发表评论

邮箱地址不会被公开。 必填项已用*标注