Argo CD w/ kustomizeでCRDだけkubectl replace
Helmやkustomizeの外部URL参照機能でマニフェストを取り込む場合,CustomResourceDefinitionが大きすぎてArgo CDがkubectl applyできない旨のエラーを吐くことがある
参考 kubectl applyでデプロイする際には容量制限に気をつける - chari ngo’s blog
kustomizeのpatchesの複数ターゲットでの書き換えを利用し,CustomResourceDefinitionだけkubectl replaceする
patchesJSON6902やpatchesStrategicMergeではできないことに注意
code:kustomization.yaml
patches:
- target:
group: apiextensions.k8s.io
version: v1
kind: CustomResourceDefinition
patch: |-
- op: add
path: /metadata/annotations/argocd.argoproj.io~1sync-options
value: Replace=true
Argo CDではannotationにargocd.argoproj.io/sync-optionsを書くことでsync時の挙動を操作できる
ここにReplace=trueを書いておくことでsync時にそのリソースをkubectl replaceで適用するようになる