Как получить data.token из ресурса Terraform Kubernetes_secret
Я пытаюсь получить доступ к Kubernetes_secret
data.token
атрибут в terraform, но я продолжаю получать ошибку
Resource 'data.kubernetes_secret.misp_whitelist_secret' does not have attribute 'data.token' for variable 'data.kubernetes_secret.misp_whitelist_secret.data.token'
Какой способ решить эту проблему?
resource "kubernetes_service_account" "misp_whitelist_sa" {
metadata {
name = "misp-whitelist-sa"
}
}
data "kubernetes_secret" "misp_whitelist_secret" {
metadata {
name = "${kubernetes_service_account.misp_whitelist_sa.default_secret_name}"
namespace = "${kubernetes_service_account.misp_whitelist_sa.metadata.0.namespace}"
}
depends_on = [
"kubernetes_service_account.misp_whitelist_sa",
]
}
И я пытаюсь получить доступ к data.token внутри ресурса terraform google_cloud_function
resource "google_cloudfunctions_function" "misp_whitelist_function" {
name = "${var.cluster}-misp-whitelist"
....<additional data> .....
environment_variables = {
CLUSTER = "${var.cluster}"
PROJECT = "${var.project}"
AUTH = "${data.kubernetes_secret.misp_whitelist_secret.data.token}"
}
}
2 ответа
Хорошо, я очень долго бился головой о стену здесь . Другой ответ правильный, но пропускает важный шаг.
Вам нужно убедиться, что секрет объявляет правильный тип (а также, возможно, указать аннотацию?)
resource "kubernetes_secret" "vault" {
metadata {
name = "vault-token"
annotations = {
"kubernetes.io/service-account.name" = "vault"
}
}
type = "kubernetes.io/service-account-token" // THIS!
}
Затем, как только вы укажете правильный тип, вы можете использовать токен
output "token" {
value = kubernetes_secret.vault.data.token
}
Правильный способ доступа к секретному ключу данных:
AUTH = "${data.kubernetes_secret.misp_whitelist_secret.data["token"]}"