Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 如何获取“提供者”;“库伯内特斯”通过“google\u容器\u群集”进行身份验证`_Kubernetes_Terraform_Google Kubernetes Engine - Fatal编程技术网

Kubernetes 如何获取“提供者”;“库伯内特斯”通过“google\u容器\u群集”进行身份验证`

Kubernetes 如何获取“提供者”;“库伯内特斯”通过“google\u容器\u群集”进行身份验证`,kubernetes,terraform,google-kubernetes-engine,Kubernetes,Terraform,Google Kubernetes Engine,需要在不手动运行gcloud命令的情况下将集群部署到GCP和setup、helm、ingres以及其他一些东西。 尝试了很多方法,包括使用和不使用证书和用户/通行证的google_容器_集群。 我得到两种结果: 错误:serviceaccounts被禁止:用户“system:anonymous”无法在命名空间“kube system”的API组“”中创建资源“serviceaccounts” 或 错误:serviceaccounts被禁止:用户“客户端”无法在命名空间“kube system”的

需要在不手动运行gcloud命令的情况下将集群部署到GCP和setup、helm、ingres以及其他一些东西。 尝试了很多方法,包括使用和不使用证书和用户/通行证的google_容器_集群。 我得到两种结果:

错误:serviceaccounts被禁止:用户“system:anonymous”无法在命名空间“kube system”的API组“”中创建资源“serviceaccounts”
错误:serviceaccounts被禁止:用户“客户端”无法在命名空间“kube system”的API组“”中创建资源“serviceaccounts”

我设法理解的是,如果我生成证书,gke将有默认用户“客户端”对应于它将创建的证书,否则它将保持默认用户“匿名”-无用户

我的问题是我无法告诉
google\u container\u cluster
使用特定帐户,也无法告诉
提供商“kubernetes”
接受任何用户。
此外,如果不通过
gcloud

进行身份验证,也无法找到将RBAC文件应用到集群的方法。我通过更新Terraform连接到Kubernetes集群的方式解决了这个问题。当我将后端更改为使用“远程”(Terraform Cloud)时,它不再工作,并且我收到了相同类型的错误消息。 这是因为“远程”后端Terraform不使用本地kubectl配置

例如,见:

所以我添加了一个块来获取配置

data "google_client_config" "default" {
}
然后,我使用“客户端证书”和“客户端密钥”更新为“令牌”:

希望这对其他人有用

provider "kubernetes" {
  load_config_file       = false
  host                   = data.google_container_cluster.gke-cluster.endpoint
  token                  = data.google_client_config.default.access_token
  cluster_ca_certificate = base64decode(data.google_container_cluster.gke-cluster.master_auth.0.cluster_ca_certificate)
}