kustomize(九) 使用终章

在这里插入图片描述

扩展阅读:


1. kustomization API说明

字段类型描述
bases[]string此列表中的每个条目都应该解析为包含kustomization.yaml文件的目录
commonAnnotationsmap[string]string添加到所有资源的注解
commonLabelsmap[string]string要添加到所有资源和选择器的标签
components创造中,未来会发布
configMapGenerator[][ConfigMapArgs][]ConfigMapArgs此列表中的每个条目都生成一个ConfigMap
crds[]string增加对 CRD 的支持。
generatorOptionsgeneratorOptions修改生成所有ConfigMap和Secret Generator的行为
images修改镜像的名称、tag 或 image digest。
namePrefixstring此字段的值为所有资源的名称前缀
namespacestring为所有资源添加 namespace。
nameSuffixstring为所有资源和引用的名称添加后缀。
patches[]stringPatches 在资源上添加或覆盖字段,非常实用
patchesJson6902json通过json格式生成kubernetes 对象类型与patches
patchesStrategicMerge[]string通过文件定义的方式进行增加补丁或者修改字段 属性
replicasstring修改资源的副本数。
resources[]string每个条目必须解析为现有的资源配置文件
secretGeneratorsecretGenerator生成 Secret 资源
vars[]string通过变量引用其他文件的资源和属性-反射功能

2. bases

bases在v2.1.0中已弃用该字段

bases移到resonrces字段中。这使得基础(仍然是一个资源中心概念)相对于其他输入资源进行排序。

3. commonAnnotations

为所有资源添加注释,如果资源上已经存在注解键,该值将被覆盖。

cat <<EOF >./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
EOF

cat <<EOF >./kustomization.yaml
namespace: my-namespace
commonAnnotations:
  oncallPager: 800-555-1212
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment资源中设置的所有字段:

apiVersion: apps/v1
kind: Deployment
metadata:
  annotations:
    oncallPager: 800-555-1212
  labels:
    app: bingo
  name: dev-nginx-deployment-001
  namespace: my-namespace
spec:
....

4. commonLabels

为所有资源和 selectors 增加标签。如果资源上已经存在注解键,该值将被覆盖。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
EOF
# Create a kustomization.yaml
cat <<EOF >./kustomization.yaml
namePrefix: dev-
commonLabels:
  app: my-nginx
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment资源中设置的所有字段:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
      app: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
        app: my-nginx
    spec:
      ....

5. images

修改镜像的名称、tag 或 image digest。

通过在kustomize .yaml的images字段中指定新的镜像来更改容器内使用的镜像。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - name: my-nginx
        image: nginx
        ports:
        - containerPort: 80
EOF

cat <<EOF >./kustomization.yaml
resources:
- deployment.yaml
images:
- name: nginx
  newName: my.image.registry/nginx
  newTag: 1.4.0
EOF

运行kubectl kustomize ./查看正在使用的镜像是否更新:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  template:
    spec:
      containers:
      - image: my.image.registry/nginx:1.4.0
        name: my-nginx
        ports:
        - containerPort: 80

6. namePrefix

为所有资源和引用的名称添加前缀。

服务名称可能会发生更改。不建议在命令参数中硬编码服务名称。对于这种用法,Kustomize可以通过vars将服务名称注入容器

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
  selector:
    matchLabels:
      run: my-nginx
  replicas: 2
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - name: my-nginx
        image: nginx
        command: ["start", "--host", "\$(MY_SERVICE_NAME)"]
EOF

# Create a service.yaml file
cat <<EOF > service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
  labels:
    run: my-nginx
spec:
  ports:
  - port: 80
    protocol: TCP
  selector:
    run: my-nginx
EOF

cat <<EOF >./kustomization.yaml
namePrefix: dev-
nameSuffix: "-001"

resources:
- deployment.yaml
- service.yaml

运行kubectl kustomize ./查看注入容器的服务名称是dev-my-nginx-001:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: dev-my-nginx-001
spec:
  replicas: 2
  selector:
    matchLabels:
      run: my-nginx
  template:
    metadata:
      labels:
        run: my-nginx
    spec:
      containers:
      - command:
        - start
        - --host
        - dev-my-nginx-001
        image: nginx
        name: my-nginx

7. namespace

为所有资源添加 namespace。

如果在资源上设置了现有 namespace,则将覆盖现有 namespace;如果在资源上未设置现有 namespace,则使用现有 namespace

cat <<EOF >./deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
EOF

cat <<EOF >./kustomization.yaml
namespace: my-namespace
resources:
- deployment.yaml
EOF

运行kubectl kustomize ./查看Deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: dev-nginx-deployment
  namespace: my-namespace

8. nameSuffix

为所有资源和引用的名称添加后缀。

cat <<EOF > deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx
spec:
EOF

# Create a service.yaml file
cat <<EOF > service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-nginx
spec:
EOF

cat <<EOF >./kustomization.yaml
nameSuffix: "-001"
resources:
- deployment.yaml
- service.yaml

运行kubectl kustomize ./查看注入容器的服务名称是my-nginx-001:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-nginx-001
spec:

---
apiVersion: v1
kind: Service
metadata:
  name: my-nginx-001
spec:

参考链接:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ghostwritten

口渴,请赏一杯下午茶吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值