Closed10
[Argo CD] Applicationの削除
Delete

DeleteResource

ツリーの根ノードを消すときはDelete

time="2023-02-16T09:35:41Z" level=info msg="received unary call /application.ApplicationService/Delete" grpc.method=Delete grpc.request.content="name:\"foo-apps\" cascade:false propagationPolicy:\"\" appNamespace:\"argocd\" " grpc.service=application.ApplicationService grpc.start_time="2023-02-16T09:35:41Z" span.kind=server system=grpc
ツリーの根じゃないノードを消すときはDeleteResource

time="2023-02-16T09:37:29Z" level=info msg="received unary call /application.ApplicationService/DeleteResource" grpc.method=DeleteResource grpc.request.content="name:\"foo-apps\" namespace:\"argocd\" resourceName:\"fuga\" version:\"v1alpha1\" group:\"argoproj.io\" kind:\"Application\" force:false orphan:true appNamespace:\"argocd\" " grpc.service=application.ApplicationService grpc.start_time="2023-02-16T09:37:29Z" span.kind=server system=grpc
DeleteResourceはkubectl deleteと同じ
Kubernetes本体のcascading deletionはowner referencesによって制御される
Argo CDがApplicationとそのデプロイ対象リソースの依存関係(根と子ノードの関係)を検知するために使うのはapp.kubernetes.io/instanceラベル
ツリーの根じゃないノードとしてのApplicationを削除するとき、
- Applicationにfinalizerがついている
- →finalizerの管理者として、Argo CDはApplicationの小リソースを削除「する」認識
- 削除するときUIで
Non-cascading (Orphan) Deleteを選択した- →
kubectl delete --cascade=orphanしたのと同じ- Kubernetes本体はowner referencesによる依存関係があるリソースは削除「しない」認識
- Applicationの子リソースにowner referencesはないため、子リソースは「いない」→オプションの影響力はない
- Kubernetes本体はowner referencesによる依存関係があるリソースは削除「しない」認識
- →
→結果、Applicationの子リソースは削除「される」
ツリーの根ノードとしてのApplicationを削除するときは、Applicationそれ自体の削除についてkubectl deleteを行うのではなくArgo CD内で処理されるため、Applicationにfinalizerがついていても、UIで選択したNon-cascading (Orphan) Deleteが優先され、
→結果、Applicationの子リソースは削除「されない」
pruneオプション付きsyncをしたときもDeleteResourceと同じ
このスクラップは2023/02/21にクローズされました