es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

ArgoCD con Terraform para eliminar todas las aplicaciones al eliminar el espacio de nombres “argocd”.

Estoy instalando argocd en mis clústeres de Kubernetes con helm en Terraform de la siguiente manera:

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]
}

Funciona muy bien, puedo crear aplicaciones, desplegar recursos, etc. Pero si intento ejecutar un terraform destroy, la eliminación del espacio de nombres argocd queda atascada con el estado terminating. Esto se debe a que las aplicaciones definidas en el espacio de nombres de argocd no se eliminan correctamente y tuve que hacer algunas soluciones alternativas para eliminarlas manualmente, principalmente eliminando los finalizadores de la definición.

¿Hay alguna manera de que al ejecutar el comando destroy, se eliminen las aplicaciones definidas en el espacio de nombres argocd al eliminar el espacio de nombres?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una forma de eliminar las aplicaciones definidas en el espacio de nombres argocd al eliminar el espacio de nombres. Una forma de lograr esto es utilizando el proveedor helm y su bandera uninstall-on-destroy para eliminar automáticamente el lanzamiento de argocd cuando se destruye el espacio de nombres. Aquí tienes un fragmento de código actualizado de Terraform:

    recurso "kubernetes_namespace" "ns_argocd" {
      metadatos {
        anotaciones = {
          name = "argocd"
        }
        nombre = "argocd"
      }
    }
    
    recurso "helm_release" "argocd" {
      nombre     = "argocd"
      repositorio = "https://argoproj.github.io/argo-helm"
      chart    = "argo-cd"
      version  = "3.27.1"
    
      crear_namespace = false
      espacio_nombres        = kubernetes_namespace.ns_argocd.metadatos.0.nombre
    
       set {
        nombre  = "server.service.type"
        valor = "LoadBalancer"
      }
    
      desinstalar_al_destruir = true
    
      depende_de = [kubernetes_namespace.ns_argocd]
    }
    

    Con desinstalar_al_destruir establecido en true, Terraform eliminará automáticamente el lanzamiento de argocd cuando se destruya el espacio de nombres. Esto, a su vez, eliminará todas las aplicaciones y recursos relacionados con el lanzamiento.

Comments are closed.