0

ベース yaml とオーバーレイ yaml があり、「kustomize」を使用してこれら 2 つの yaml をマージしたいと考えています。kustomize build を実行すると出力が表示されますが、その理由は予想されません。私の場合、オーバーレイ yaml からカスタム情報を入力する代わりに kustomize がベースの見出しタグ全体をオーバーレイ「コンテナー」に置き換えるためです。私が必要とする意図した動作は、置換の代わりにオーバーレイ yaml を使用して、不足している情報を何らかの形で埋める必要があることです。

ベース yaml:

apiVersion: v1
kind: Pod
metadata:
  name: temp
  labels:
    tier: temp
spec:
  containers:
  - name: temp
    image:  temp
    imagePullPolicy: Always
    command: temp
    args:
      temp
    envFrom:
    - configMapRef:
        name: temp
    volumeMounts:
  volumes:

オーバーレイ yaml:

apiVersion: v1
kind: Pod
metadata:
  name: temp
  labels:
    tier: temp
spec:
  containers:
    volumeMounts:
    - name: temppathname
      mountPath: /temppath
  volumes:
  - name: temppathname
    hostPath:
      type: temp
      path: temppath

kustomize ビルド後に期待される結果:

apiVersion: v1
kind: Pod
metadata:
  name: temp
  labels:
    tier: temp
spec:
  containers:
  - name: temp
    image:  temp
    imagePullPolicy: Always
    command: temp
    args:
      ["sleep 9000"]
    envFrom:
    - configMapRef:
        name: temp
    volumeMounts:
    - name: temppathname
      mountPath: /temppath
  volumes:
  - name: temppathname
    hostPath:
      type: temp
      path: temppath

私が得ているもの:

apiVersion: v1
kind: Pod
metadata:
  labels:
    tier: temp
  name: temp
spec:
  containers:
    volumeMounts:
    - name: temppathname
      mountPath: /temppath
  volumes:
  - name: temppathname
    hostPath:
      type: temp
      path: temppath
4

2 に答える 2

1

base.yamlキーの値はcontainersシーケンス(ノード)です。overlay.yamlキーの値はcontainersマッピングです。もちろん、これらの 2 つをマージすることはできません。

kustomize をまったく知らないので、それらをマージできないため、オーバーレイがそのシーケンス ノード全体をマッピング ノードに置き換えるのは当然のことのように思えます。オーバーレイのマッピングが、たまたまベースのシーケンス内のアイテム (この場合は唯一のアイテム) であるマッピングとマージされるという期待は、完全に恣意的なものに思えます。複数のアイテムがあった場合、どのアイテムを取得する必要がありますか? 最初?最後?マッピングであるアイテム5の前の最後のものは?

あなたが次のoverlay.yamlように見えた場合:

apiVersion: v1
kind: Pod
metadata:
  name: temp
  labels:
    tier: temp
spec:
  containers:
  - volumeMounts:     # < created a sequence item here by inserting an item indicator
    - name: temppathname
      mountPath: /temppath
  volumes:
  - name: temppathname
    hostPath:
      type: temp
      path: temppath

その後、私はあなたの期待を理解することができました(そして、おそらく上記の変更を適用して機能させることができます。テストする方法はありません)。

于 2019-03-27T15:38:00.327 に答える