You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform部署ArgoCD执行destroy时argocd命名空间删除卡住如何解决

问题根因

执行terraform destroy时,默认资源销毁顺序为:先删除helm_release.argocd,再删除kubernetes_namespace.ns_argocd。销毁Helm release的过程中会先终止ArgoCD控制器组件,导致命名空间内遗留的ArgoCD Application资源自带的finalizers没有对应控制器处理,无法完成资源删除,最终卡住命名空间进入Terminating状态。

解决方案

方案1:添加销毁前置钩子自动清理Application(推荐)

通过null_resource配置销毁时执行的本地命令,在销毁ArgoCD控制器之前先清理所有Application资源,此时控制器仍正常运行可以处理finalizers,不会遗留资源。

配置代码

  1. 新增null_resource资源:
resource "null_resource" "argocd_app_cleanup" {
  triggers = {
    argocd_release_id = helm_release.argocd.id
  }

  provisioner "local-exec" {
    when    = destroy
    command = <<EOT
# 清理命名空间下所有Application
kubectl delete applications.argoproj.io -n ${kubernetes_namespace.ns_argocd.metadata.0.name} --all --ignore-not-found=true
# 等待所有Application完全删除
kubectl wait --for=delete applications.argoproj.io -n ${kubernetes_namespace.ns_argocd.metadata.0.name} --all --timeout=120s
EOT
  }

  depends_on = [helm_release.argocd]
}
  1. 调整kubernetes_namespace的依赖配置,确保销毁顺序正确:
resource "kubernetes_namespace" "ns_argocd" {
  metadata {
    annotations = {
      name = "argocd"
    }
    name = "argocd"
  }

  depends_on = [null_resource.argocd_app_cleanup, helm_release.argocd]
}

该方案不影响ArgoCD正常运行时的级联删除能力,仅在销毁资源时执行前置清理。

方案2:禁用Application finalizers

如果不需要ArgoCD的级联删除保护,可以直接在Helm配置中关闭Application的finalizers,资源删除时无需控制器处理即可直接移除。
修改helm_release.argocd配置,新增values块:

resource "helm_release" "argocd" {
  name       = "argocd"
  repository = "https://argoproj.github.io/argo-helm"
  chart      = "argo-cd"
  version    = "3.27.1"

  create_namespace = false
  namespace        = kubernetes_namespace.ns_argocd.0.metadata.0.name

  # 新增配置禁用Application finalizers
  values = [
    <<YAML
controller:
  args:
    applicationFinalizers: []
YAML
  ]

  depends_on = [kubernetes_namespace.ns_argocd]
}
注意事项
  • 运行Terraform的环境需要提前安装kubectl,且配置的kubeconfig拥有对应集群的操作权限
  • 如果命名空间内还存在其他ArgoCD自定义资源(如ApplicationSet、AppProject等),可以在方案1的清理命令中补充对应资源的删除逻辑

内容的提问来源于stack exchange,提问作者everspader

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 21:36:05