ArgoCD 与 Terraform 在删除名称空间 argocd 时删除所有应用程序

问题描述 投票:0回答:1

我正在使用 Terraform 中的 helm 将

argocd
安装到我的 Kubernetes 集群中,如下所示:

resource "kubernetes_namespace" "ns_argocd" {
  metadata {
    annotations = {
      name = "argocd"
    }
    name = "argocd"
  }
}

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

  depends_on = [kubernetes_namespace.ns_argocd]
}

它工作得非常好,我可以创建应用程序、部署资源等等。但是,如果我尝试运行

terraform destroy
,命名空间
argocd
的删除就会陷入状态
terminating
。这是因为 argocd 命名空间中定义的应用程序未正确删除,我必须采取一些解决方法来手动删除它,主要是从定义中删除终结器。

有没有办法在删除命名空间时运行

destroy
命令会删除
argocd
命名空间中定义的应用程序?

kubernetes terraform kubernetes-helm argocd
1个回答
0
投票

我也遇到过同样的问题,我发现解决这个问题的唯一方法是在销毁 ArgoCD 本身之前明确销毁应用程序。我创建了一个 bash 脚本,如下所示:

#!/bin/bash
set -eu

# remove apps deployed by argocd
terraform destroy -auto-approve -target kubectl_manifest.apps_dev
terraform destroy -auto-approve -target kubectl_manifest.apps_staging
terraform destroy -auto-approve -target kubectl_manifest.apps_prod
terraform destroy -auto-approve -target kubernetes_namespace.complex_app

# remove argocd itself
terraform destroy -auto-approve -target kubernetes_namespace.argocd

# destroy everything else
terraform destroy -auto-approve

注意我知道 Terraform 不应该这样使用。

© www.soinside.com 2019 - 2024. All rights reserved.