kubernetes - 无法使用 terraform 检索 sa token

标签 kubernetes terraform

我需要使用管道中的输出检索 SA token ,我在这里找到了解决方案

Retrieve token data from Kubernetes Service Account in Terraform

但仍然无法工作并收到此错误:

│ Error: Invalid function argument
│ 
│   on access.tf line 51, in output "deploy_user_token":
│   51:   value = lookup(data.kubernetes_secret.deploy_user_secret.data, "token")
│     ├────────────────
│     │ data.kubernetes_secret.deploy_user_secret.data has a sensitive value
│ 
│ Invalid value for "inputMap" parameter: argument must not be null.

我的代码:

resource "kubernetes_service_account" "deploy_user" {
  depends_on = [kubernetes_namespace.namespace]
  metadata {
    name      = "deploy-user"
    namespace = var.namespace
  }
}

resource "kubernetes_role" "deploy_user_full_access" {
  metadata {
    name      = "deploy-user-full-access"
    namespace = var.namespace
  }

  rule {
    api_groups = ["", "extensions", "apps", "networking.istio.io"]
    resources  = ["*"]
    verbs      = ["*"]
  }
  rule {
    api_groups = ["batch"]
    resources  = ["jobs", "cronjobs"]
    verbs      = ["*"]
  }
}

resource "kubernetes_role_binding" "deploy_user_view" {
  metadata {
    name      = "deploy-user-view"
    namespace = var.namespace
  }
  role_ref {
    api_group = "rbac.authorization.k8s.io"
    kind      = "Role"
    name      = kubernetes_role.deploy_user_full_access.metadata.0.name
  }
  subject {
    kind      = "ServiceAccount"
    name      = kubernetes_service_account.deploy_user.metadata.0.name
    namespace = var.namespace
  }
}

data "kubernetes_secret" "deploy_user_secret" {
  metadata {
    name = kubernetes_service_account.deploy_user.default_secret_name
  }
}

output "deploy_user_token" {
  value = lookup(data.kubernetes_secret.deploy_user_secret.data, "token")
}

有人知道我做错了什么吗?

谢谢!

最佳答案

您似乎缺少数据对象上的 namespace 声明,您需要它看起来像这样:

data "kubernetes_secret" "deploy_user_secret" {
  metadata {
    name = kubernetes_service_account.deploy_user.default_secret_name
    namespace = var.namespace
  }
}

您还需要在输出中设置sensitive = true:

output "deploy_user_token" {
  sensitive = true
  value = lookup(data.kubernetes_secret.deploy_user_secret.data, "token")
}

关于kubernetes - 无法使用 terraform 检索 sa token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71342748/

相关文章:

memory - 如果数量匹配,为什么我的 Pod 不满足资源配额限制?

amazon-web-services - 如何在 terraform 中导入 aws_lambda_permission

amazon-web-services - 使用 terraform 创建数据库实例

openstack - 无法从 Terraform 启动 Openstack 实例

kubernetes - 重新安装 helm 部署后重新使用 PersistentVolume

nginx - Kubernetes NGINX 入口 : Disable external auth for specific path

amazon-web-services - 如何在 Terraform 中使用 AWS account_id 变量

terraform - 是否可以使用 Terraform 向现有 Azure 应用程序网关添加新的监听器、后端地址池和请求路由规则?

kubernetes - 如何连接 Kubernetes 上运行的 MySQL

docker - Kubernetes [错误 : no kind "CertificateSigningRequest"]