使用Google容器引擎(Kubernetes)的Terraform:执行访问令牌命令时出错" ... \ gcloud.cmd"

时间:2017-12-06 02:24:59

标签: gcloud google-kubernetes-engine terraform kubectl

我正在尝试将一些模块(Docker镜像)部署到谷歌Google容器引擎。我在Terraformconfig文件中得到了什么:

terraform.tf

# Google Cloud provider
provider "google" {
  credentials = "${file("google_credentials.json")}"
  project     = "${var.google_project_id}"
  region      = "${var.google_region}"
}
# Google Container Engine (Kubernetes) cluster resource
resource "google_container_cluster" "secureskye" {
  name               = "secureskye"
  zone               = "${var.google_kubernetes_zone}"
  additional_zones   = "${var.google_kubernetes_additional_zones}"
  initial_node_count = 2
}
# Kubernetes provider
provider "kubernetes" {
  host     = "${google_container_cluster.secureskye.endpoint}"
  username = "${var.google_kubernetes_username}"
  password = "${var.google_kubernetes_password}"

  client_certificate     = "${base64decode(google_container_cluster.secureskye.master_auth.0.client_certificate)}"
  client_key             = "${base64decode(google_container_cluster.secureskye.master_auth.0.client_key)}"
  cluster_ca_certificate = "${base64decode(google_container_cluster.secureskye.master_auth.0.cluster_ca_certificate)}"
}
# Module UI
module "ui" {
  source                         = "./modules/ui"
}

我的问题是:google_container_cluster已成功创建,但在创建模块ui时失败(包含2个资源kubernetes_servicekubernetes_pod)但错误

* kubernetes_pod.ui: Post https://<ip>/api/v1/namespaces/default/pods: error executing access token command "<user_path>\\AppData\\Local\\Google\\Cloud SDK\\google-cloud-sdk\\bin\\gcloud.cmd config config-helper --format=json": err=exec: "<user_path>\\AppData\\Local\\Google\\Cloud SDK\\google-cloud-sdk\\bin\\gcloud.cmd": file does not exist output=

所以,问题:
1.我是否需要安装gcloud + kubectl?即使在我安装google_container_clustergcloud之前成功创建了kubectl 2.我想使用gcloudkubectl CLI中的独立,分离的凭证信息,项目,区域。我这样做了吗?

1 个答案:

答案 0 :(得分:0)

我已经能够在Linux机器上重现运行您提供的Terraform配置文件(模块UI部分除外)的场景,因此您的问题应该与代码的最后部分相关。

关于你的问题:

  1. 我不确定,因为我尝试使用Google Cloud Shell,gcloudkubectl已预先安装在那里,但我建议您安装它们以确保这不是问题。

  2. 对于凭证部分,我在variables.tf Terraform配置文件中添加了两个新变量,如本示例所示(这些凭据不需要与gcloud中的相同或{ {1}}:

  3. 在这种情况下使用您的首选凭证。

    kubectl

    也许您可以分享有关可以在模块UI中找到的内容的更多信息,以便了解哪个文件不存在。我猜你正在尝试从Windows机器进行部署,就像文件路径中的符号一样,但这不应该是一个重要的问题。