簡體   English   中英

Kustomize patch with string literal:雙引號替換為單引號

[英]Kustomize patch with string literal: Double quotes replaced with single quotes

kustomization.yaml添加 kustomize 補丁時,雙引號被替換為單引號,這會導致錯誤

我正在使用以下內容:

kustomize edit add patch --patch "- op: add\n  path: /metadata/annotations/argocd.argoproj.io~1sync-wave\n. value: 1" --kind Deployment

被轉換為

- patch: '- op: add\n  path: /metadata/annotations/argocd.argoproj.io~1sync-wave\n value: 1'
  target:
    kind: Deployment

kustomization.yaml

當您執行kustomize build時,這會導致以下錯誤

Error: trouble configuring builtin PatchTransformer with config: `
patch: ‘- op: add\n path: /metadata/annotations/argocd.argoproj.io~1sync-wave\n  value:
  1’
target:
  kind: Deployment
`: unable to parse SM or JSON patch from [- op: add\n path: /metadata/annotations/argocd.argoproj.io~1sync-wave\n  value: 1]

如何確保kustomization.yaml中的補丁有雙引號?

由於我有數百個 kustomization 文件需要使用 ArgoCD 同步波的注釋進行更新,因此我通過使用commonAnnotations解決了這個問題(我相信這也是正確的做法)。 因此,我沒有添加補丁,而是執行了以下操作:

kustomize edit add annotation argocd.argoproj.io/sync-wave:$wave --force

這會將注釋添加到所有對象。 其中$wave是波號,如果文件中已經存在注釋,則--force會覆蓋注釋。

在我的情況下,注釋不是一個選項,所以我必須提供序列化為操作數組的補丁定義:

kustomize edit add patch --patch '[{"op": "replace", "path": "/spec/template/spec/containers/0/ports/0/containerPort", "value": 8080}]' --kind Deployment

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM