1

我正在使用以下身份验证设置创建这样的 GKE 集群:

master_auth {
    # Setting an empty username and password explicitly disables basic auth
    username = ""
    password = ""

    # Whether client certificate authorization is enabled for this cluster.
    client_certificate_config {
      issue_client_certificate = false
    }
  }

创建集群后,我将使用另一个提供程序来安装 helm 图表:

provider "helm" {
  kubernetes {
    host = ...
  }
  tiller_image = "gcr.io/kubernetes-helm/tiller:v2.14.1"
}

我的问题是如何kubernetes用可能从集群创建步骤获得的身份验证信息填充块?

4

1 回答 1

1

您可以插入值以设置提供程序,就像在 Terraform 中设置其他任何内容一样。

因此,在您的情况下,您可以使用以下内容:

resource "google_container_cluster" "cluster" {
  # ...
}

provider "helm" {
    kubernetes {
        host     = "https://${google_container_cluster.cluster.endpoint}"
        username = "${google_container_cluster.cluster.master_auth.0.username}"
        password = "${google_container_cluster.cluster.master_auth.0.password}"

        client_certificate     = "${google_container_cluster.cluster.master_auth.0.client_certificate}"
        client_key             = "${google_container_cluster.cluster.master_auth.0.client_key}"
        cluster_ca_certificate = "${google_container_cluster.cluster.master_auth.0.cluster_ca_certificate}"
    }
}

请注意,并非所有提供者都可以从非现有资源进行插值,因为某些提供者会在提供者初始化期间进行特征检测,这发生在依赖图需要使用提供者之前。Postgresql 提供程序就是一个例子。一旦资源被创建,这些提供者仍然可以使用它,或者如果从属资源是在另一个上下文/状态文件中创建的,它们可以使用数据源来访问信息。

于 2019-06-29T22:39:14.973 回答