Terraform kubectl 提供程序错误:无法创建用于读取资源的 kubernetes Rest 客户端

Nie*_*sic 1 kubernetes google-kubernetes-engine terraform kubectl

我有一个 Terraform 配置(以及其他资源),可以在 Google Cloud 上创建 Google Kubernetes Engine 集群。我使用kubectl提供程序为 ManagedCertificate 和 FrontendConfig 添加 YAML 清单,因为这些不是 kubernetes 或 google 提供程序的一部分。从本地计算机应用 Terraform 配置时,这可以按预期工作,但是当我尝试在 CI 管道中执行它时,这两个资源都会出现以下错误kubectl_manifest

Error: failed to create kubernetes rest client for read of resource: Get "http://localhost/api?timeout=32s": dial tcp 127.0.0.1:80: connect: connection refused
Run Code Online (Sandbox Code Playgroud)

由于我只在 CI 期间遇到这个问题,我的第一个猜测是服务帐户缺少正确的范围,但据我所知,所有范围都存在。非常感谢任何建议和想法!

Nie*_*sic 6

load_config_file = false通过添加到提供程序配置修复了该问题kubectl。我的提供者配置现在如下所示:

data "google_client_config" "default" {}

provider "kubernetes" {
  host                   = "https://${endpoint from GKE}"
  token                  = data.google_client_config.default.access_token
  cluster_ca_certificate = base64decode(CA certificate from GKE)
}

provider "kubectl" {
  host                   = "https://${endpoint from GKE}"
  token                  = data.google_client_config.default.access_token
  cluster_ca_certificate = base64decode(CA certificate from GKE)
  load_config_file       = false
}
Run Code Online (Sandbox Code Playgroud)