可以通过在ArgoCD部署中定义自定义资源清理函数来解决该问题。
例如,在部署ArgoCD时将以下代码作为配置文件传递:
apiVersion: argoproj.io/v1alpha1
kind: ArgoCD
metadata:
name: argocd-server
spec:
...
server:
...
resourceCustomizations:
- name: crd-pruner
target:
kind: CustomResourceDefinition
patch: |-
- op: add
path: /metadata/finalizers
value:
- "finalizer.crd-pruner"
finalizers:
- name: finalizer.crd-pruner
hook:
deletePolicy:
kind: hook.job
options:
namespace: argocd
jobTTLSecondsAfterFinished: 600
failedJobsHistoryLimit: 3
该代码片段中定义了一个名为“crd-pruner”的自定义资源清理器,它将在资源被删除前被调用。这个清理器将为每个CRD添加一个名为“finalizer.crd-pruner”的finalizer,在资源被删除时清理资源。清理器定义了一个名为“hook.job”的删除策略,它将创建一个名为“crd-pruner-