可以通过在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-