使用 Terraform 管理 GCP Composer Kubernetes 集群

Managing GCP Composer Kubernetes cluster using Terraform

我已经创建了一个 GCP Composer 环境 using Terraform:

terraform {
  required_providers {
    google = {
      source = "hashicorp/google"
      version = "3.5.0"
    }
  }
}

provider "google" {
  credentials = file("my_key.json")
  project = "my_project_id"
  region  = "us-east1"
  zone    = "us-east1-b"
}

resource "google_composer_environment" "my_composer_id" {
  name   = "my_composer_name"
  region = "us-east1"
  config {
    node_count = 3
    node_config {
      zone         = "us-east1-b"
      machine_type = "n1-standard-1"
    }
  }
}

Composer 还会自动创建一个 Kubernetes Engine 集群。这样的集群有一个名为 default-pool 的单节点池。 我想 create a new node pool 在 Composer 创建的集群中。像这样:

resource "google_container_node_pool" "my_node_pool_id" {
  name       = "my_node_pool_name"
  location   = "us-east1"
  cluster    = ????
  node_count = 0
  node_config {
    preemptible  = true
    machine_type = "n1-standard-1"
  }
  autoscaling  {
    min_node_count = 0
    max_node_count = 3
  }
}

但是,由于我没有在 Terraform 文件中创建集群(因为它是由 Composer 自动创建的),所以我没有对它的引用。

可以通过您的 Cloud Composer 环境的密钥 gke_cluster available in the config section 访问集群名称:

resource "google_container_node_pool" "my_node_pool_id" {
  name       = "my_node_pool_name"
  location   = "us-east1-b"

  cluster    = element(
      split("/",
        lookup(
          google_composer_environment.my_composer_id.config[0],
          "gke_cluster"
        )
      ),
      5
    )

  // ...
}

第5个元素对应GKE集群的名称。