如何使用 Terraform 将 GKE 凭证传递给 kubernetes 提供商?
How to pass GKE credential to kubernetes provider with Terraform?
我已经使用 Terraform 创建了一个 GKE 集群,我也想使用 Terraform 管理 Kubernetes。但是,我不知道如何将 GKE 的凭据传递给 kubernetes
提供商。
我跟着 example in the google_client_config
data source documentation 得到了
data.google_container_cluster.cluster.endpoint is null
这是我失败的尝试https://github.com/varshard/gke-cluster-terraform/tree/title-terraform
cluster.tf
负责创建GKE集群,运行良好
kubernetes.tf
负责管理Kubernetes,获取GKE凭证失败
您不需要在同一上下文中创建的 google_container_cluster
data source here at all because the relevant information is also in the google_container_cluster
resource。
数据源用于访问有关完全在 Terraform 之外或在不同 Terraform 上下文中创建的资源的数据(例如,不同的状态文件和不同的 terraform apply
目录)。
我不确定您当前处于数据源选择现有容器集群的状态,然后定义资源以使用数据源的输出创建该容器集群,但这是方式过于复杂且略有损坏 - 如果您销毁所有内容并重新应用,它将无法正常工作。
相反,您应该删除 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
}
我已经使用 Terraform 创建了一个 GKE 集群,我也想使用 Terraform 管理 Kubernetes。但是,我不知道如何将 GKE 的凭据传递给 kubernetes
提供商。
我跟着 example in the google_client_config
data source documentation 得到了
data.google_container_cluster.cluster.endpoint is null
这是我失败的尝试https://github.com/varshard/gke-cluster-terraform/tree/title-terraform
cluster.tf
负责创建GKE集群,运行良好
kubernetes.tf
负责管理Kubernetes,获取GKE凭证失败
您不需要在同一上下文中创建的 google_container_cluster
data source here at all because the relevant information is also in the google_container_cluster
resource。
数据源用于访问有关完全在 Terraform 之外或在不同 Terraform 上下文中创建的资源的数据(例如,不同的状态文件和不同的 terraform apply
目录)。
我不确定您当前处于数据源选择现有容器集群的状态,然后定义资源以使用数据源的输出创建该容器集群,但这是方式过于复杂且略有损坏 - 如果您销毁所有内容并重新应用,它将无法正常工作。
相反,您应该删除 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
}