【问题标题】:Managing GCP Composer Kubernetes cluster using Terraform使用 Terraform 管理 GCP Composer Kubernetes 集群
【发布时间】:2021-04-30 16:28:19
【问题描述】:

我已经创建了一个 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 的单个节点池。 我想在 Composer 创建的集群内create a new node pool。像这样的:

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

【问题讨论】:

  • 如果您按照doc 添加新的节点池会怎样。试一试

标签: kubernetes google-cloud-platform terraform google-cloud-composer


【解决方案1】:

可以通过 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 集群的名称。

【讨论】:

  • 我的 terraform.tfstate 文件中有以下内容:“gke_cluster”:“projects/my_project_name/zones/us-east1-b/clusters/my_cluster_name”,所以应该是 5 而不是 11,对吗?
  • 嗯,我认为你应该尝试 5。如果有效,请告诉我!
  • 当我运行“terraform apply”时,我收到错误 404:未找到:projects/my_project_name/locations/us-east1/clusters/my_cluster_name., notFound。即使我将集群名称硬编码为:cluster = my_cluster_name。我仍然收到相同的错误消息。
  • 我想我找到了问题所在。我在节点池定义中使用了 location = "us-east1",我认为我应该改用 "us-east1-b"。我在这里得到了那个解决方案:github.com/hashicorp/terraform-provider-google/issues/5229 不确定它是否会起作用,节点池仍在创建中。
  • @MatheusSchaly 很高兴它成功了!最后,您使用索引 11 还是 5(这样我可以更新我的答案)?
猜你喜欢
  • 2019-02-02
  • 2020-08-20
  • 2020-01-11
  • 2015-10-24
  • 2019-05-22
  • 1970-01-01
  • 2019-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多