使用 Terraform 创建 GKE 集群和命名空间

Joz*_*ana 0 google-cloud-platform kubernetes google-kubernetes-engine terraform

我需要创建 GKE 集群,然后创建命名空间并通过 helm 将 db 安装到该命名空间。现在我有 gke-cluster.tf,它使用节点池和 helm.tf 创建集群,它具有 kubernetes provider 和 helm_release 资源。它首先创建集群,然后尝试安装 db 但命名空间尚不存在,所以我必须terraform apply再次运行才能正常工作。我想避免使用多个文件夹的场景并且terraform apply只运行一次。像这样的情景有什么好的做法?感谢您的回答。

adp*_*adp 7

资源的create_namespace参数helm_release可以帮助你。

create_namespace - (Optional) Create the namespace if it does not yet exist. Defaults to false.
Run Code Online (Sandbox Code Playgroud)

https://registry.terraform.io/providers/hashicorp/helm/latest/docs/resources/release#create_namespace

或者,您可以定义namespace资源之间的依赖关系,helm_release如下所示:

resource "kubernetes_namespace" "prod" {
  metadata {
    annotations = {
      name = "prod-namespace"
    }

    labels = {
      namespace = "prod"
    }

    name = "prod"
  }
}
Run Code Online (Sandbox Code Playgroud)
resource "helm_release" "arango-crd" { 
  name = "arango-crd" 
  chart = "./kube-arangodb-crd"
  namespace = "prod"  

  depends_on = [ kubernetes_namespace.prod ]
}
Run Code Online (Sandbox Code Playgroud)