使用 Kustomize 替换列表中项目的内容

seb*_*ian 8 kubernetes kustomize

我在尝试使用 kustomize 来替换列表中项目的内容时遇到困难。

我的自定义文件

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - resource.yaml

patches:
  - patch.yaml

Run Code Online (Sandbox Code Playgroud)

我的 patch.yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
        - name: web-service-migration
          env:
            - name: PG_DATABASE
              value: web-pgdb


Run Code Online (Sandbox Code Playgroud)

我的资源.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
        - name: web-service-migration
          env:
            - name: PG_DATABASE
              valueFrom:
                secretKeyRef:
                  name: web-pgdb
                  key: database


Run Code Online (Sandbox Code Playgroud)

自定义构建返回

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
      - env:
        - name: PG_DATABASE
          value: web-pgdb
          valueFrom:
            secretKeyRef:
              key: database
              name: web-pgdb
        name: web-service-migration
Run Code Online (Sandbox Code Playgroud)

我想要 kustomize 构建返回什么

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
      - env:
        - name: PG_DATABASE
          value: web-pgdb
        name: web-service-migration
Run Code Online (Sandbox Code Playgroud)

Ott*_*sky 6

如果我没记错的话 kustomize 中的补丁默认使用策略合并,所以你需要 nullify valueFrom,所以你的补丁应该如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-service
spec:
  template:
    spec:
      initContainers:
        - name: web-service-migration
          env:
            - name: PG_DATABASE
              value: web-pgdb
              valueFrom: null 
Run Code Online (Sandbox Code Playgroud)

有关战略合并补丁以及如何删除地图的更多详细信息:https://github.com/kubernetes/community/blob/master/contributors/devel/sig-api-machinery/strategic-merge-patch.md#maps