【发布时间】:2021-11-14 15:30:41
【问题描述】:
我可以使用terraform 在GKE 中部署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 与 Kubernetes 与用户 client 交互,该用户无权创建(例如)部署。因此,当我尝试使用 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}"
还有其他更好的方法吗?
【问题讨论】:
-
如果您找到有关如何执行此操作的其他资源,请随时编辑您的问题。我目前遇到了完全相同的问题,似乎没有完整的端到端示例来说明如何使用较新的 RBAC 在其中部署 GKE 集群和 Kubernetes 部署。
标签: kubernetes google-kubernetes-engine terraform-provider-gcp terraform-provider-kubernetes