gpt4 book ai didi

kubernetes - 使用 Terraform 管理 GKE 及其部署

转载 作者:行者123 更新时间:2023-12-02 11:50:30 26 4
gpt4 key购买 nike

我可以使用 terraformGKE 中部署 Kubernetes 集群。

然后我为Kubernetes设置了provider,如下:

provider "kubernetes" {
host = "${data.google_container_cluster.primary.endpoint}"

client_certificate = "${base64decode(data.google_container_cluster.primary.master_auth.0.client_certificate)}"
client_key = "${base64decode(data.google_container_cluster.primary.master_auth.0.client_key)}"
cluster_ca_certificate = "${base64decode(data.google_container_cluster.primary.master_auth.0.cluster_ca_certificate)}"
}

默认情况下,terraform 使用用户 clientKubernetes 交互,用户无权创建(例如)部署。因此,当我尝试使用 terraform 应用我的更改时出现此错误:

Error: Error applying plan:

1 error(s) occurred:

* kubernetes_deployment.foo: 1 error(s) occurred:

* kubernetes_deployment.foo: Failed to create deployment: deployments.apps is forbidden: User "client" cannot create deployments.apps in the namespace "default"

我不知道我现在应该如何进行,我应该如何将此权限授予 client 用户?

如果将以下字段添加到提供程序,我可以执行部署,尽管在阅读文档后似乎这些凭据用于与集群进行 HTTP 通信,如果它是不安全的是通过互联网完成的。

username              = "${data.google_container_cluster.primary.master_auth.0.username}"
password = "${data.google_container_cluster.primary.master_auth.0.password}"

还有其他更好的方法吗?

最佳答案

  • 您可以使用运行 terraform 的服务帐户
data "google_client_config" "default" {}

provider "kubernetes" {
host = "${google_container_cluster.default.endpoint}"

token = "${data.google_client_config.default.access_token}"
cluster_ca_certificate = "${base64decode(google_container_cluster.default.master_auth.0.cluster_ca_certificate)}"

load_config_file = false
}

  • 授予默认“客户端”权限
  • 但是你需要在 GKE 集群提供者上进行有效的身份验证才能运行这个:/在这里循环依赖
resource "kubernetes_cluster_role_binding" "default" {
metadata {
name = "client-certificate-cluster-admin"
}
role_ref {
api_group = "rbac.authorization.k8s.io"
kind = "ClusterRole"
name = "cluster-admin"
}
subject {
kind = "User"
name = "client"
api_group = "rbac.authorization.k8s.io"
}
subject {
kind = "ServiceAccount"
name = "default"
namespace = "kube-system"
}
subject {
kind = "Group"
name = "system:masters"
api_group = "rbac.authorization.k8s.io"
}
}

关于kubernetes - 使用 Terraform 管理 GKE 及其部署,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54364515/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com