kubernetes - 如何在 Terraform 中创建 GCP 工作负载身份 IAM 绑定(bind)?

标签 kubernetes google-cloud-platform google-kubernetes-engine gcp-iam

GCP 允许 Kubernetes 服务帐户通过在两个服务帐户之间添加 IAM 策略绑定(bind)来模拟 IAM 服务帐户。此绑定(bind)允许 Kubernetes 服务账户充当 IAM 服务账户。

gcloud iam service-accounts add-iam-policy-binding GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com \
    --role roles/iam.workloadIdentityUser \
    --member "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE/KSA_NAME]"

我们想通过 Terraform 资源创建相同的内容,我们尝试了这种方式,请引用:article

resource "google_service_account_iam_binding" "service-account-iam" {
  service_account_id = "GSA_NAME@GSA_PROJECT.iam.gserviceaccount.com"
  role               = "roles/iam.workloadIdentityUser"
  members = [
    "serviceAccount:PROJECT_ID.svc.id.goog[NAMESPACE/KSA_NAME]",
  ]
}

但是我们收到以下错误:

Error: "service_account_id" ("[email protected]") doesn't match regexp "projects/(?:(?:[-a-z0-9]{1,63}\.)(?:a-z?):)?(?:[0-9]{1,19}|(?:a-z0-9?)|-)/serviceAccounts/((?:(?:[-a-z0-9]{1,63}\.)(?:a-z?):)?(?:[0-9]{1,19}|(?:a-z0-9?))@[a-z]+.gserviceaccount.com$|[0-9]{1,20}[email protected]|a-z@[-a-z0-9\.]{1,63}\.iam\.gserviceaccount\.com$)"

这里出了什么问题?

最佳答案

service_account_id 是要应用策略的服务帐户的完全限定名称。

projects/PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT_EMAIL

关于kubernetes - 如何在 Terraform 中创建 GCP 工作负载身份 IAM 绑定(bind)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73330816/

相关文章:

kubernetes - 如何让 kubectl 日志与日志一起输出 pod 名称?

kubernetes - 从私有(private)注册表中提取时自动使用 secret

google-cloud-platform - 在 Web 浏览器中查看云计算引擎应用程序

kubernetes - Traefik Letsencrypt GKE 上最简单的例子

azure - 如何动态更新 Azure APIM 中的后端/出站 URL

kubernetes - CertManager Letsencrypt CertificateRequest "failed to perform self check GET request"

google-cloud-platform - GCP API 网关 : Cannot use path params

docker - 在Kubernetes中调度和扩展Pod

elasticsearch - 具有基本身份验证的Elasticsearch Helm chart

kubernetes - 停用广告连播的自动重新安排