首页 > 解决方案 > 使用 Terraform 管理 GCP Composer Kubernetes 集群

问题描述

使用 Terraform创建了一个 GCP Composer 环境:

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的单节点池。我想在 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 自动创建的),所以我没有对它的引用。

标签: kubernetesgoogle-cloud-platformterraformgoogle-cloud-composer

解决方案


可以通过Cloud Composer 环境部分中gke_cluster可用的密钥访问集群名称:config

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 集群的名称。


推荐阅读