【问题标题】:How to pass GKE credential to kubernetes provider with Terraform?如何使用 Terraform 将 GKE 凭证传递给 Kubernetes 提供者?
【发布时间】:2020-01-10 14:10:42
【问题描述】:

我已经使用 Terraform 创建了一个 GKE 集群,并且我还想使用 Terraform 管理 Kubernetes。但是,我不知道如何将 GKE 的凭据传递给 kubernetes 提供者。

我关注了example in the google_client_config data source documentation,我得到了

data.google_container_cluster.cluster.endpoint 为空

这是我失败的尝试https://github.com/varshard/gke-cluster-terraform/tree/title-terraform

cluster.tf负责创建GKE集群,工作正常。

kubernetes.tf负责管理Kubernetes,未能获得GKE凭证。

【问题讨论】:

    标签: kubernetes terraform google-kubernetes-engine terraform-provider-gcp


    【解决方案1】:

    这里根本不需要google_container_cluster data source,因为relevant information 也在您在相同上下文中创建的google_container_cluster resource 中。

    数据源用于访问完全在 Terraform 之外或在不同 Terraform 上下文中创建的资源的数据(例如,不同的状态文件和不同的目录 terraform apply'd)。

    我不确定您的当前状态如何,数据源正在选择现有容器集群,然后您定义一个资源以使用数据源的输出创建该容器集群,但这过于复杂并且轻微损坏 - 如果您销毁所有内容并重新应用它就不会按原样工作。

    您应该删除 google_container_cluster 数据源并将您的 google_container_cluster 资源改为:

    resource "google_container_cluster" "cluster" {
      name     = "${var.project}-cluster"
      location = var.region
    
      # ...
    }
    

    然后在您的 kubernetes 提供者中引用此资源:

    provider "kubernetes" {
      load_config_file = false
      host                   = "https://${google_container_cluster.cluster.endpoint}"
      cluster_ca_certificate = base64decode(google_container_cluster.cluster.master_auth.0.cluster_ca_certificate)
      token                  = data.google_client_config.current.access_token
    }
    

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2021-11-06
      • 1970-01-01
      • 2019-01-15
      • 2021-07-17
      • 1970-01-01
      • 2020-07-13
      相关资源
      最近更新 更多