簡體   English   中英

Terraform Kubernetes 由於命名空間,機密不適用

[英]Terraform Kubernetes Secrets not applying due to Namespace

我正在學習 terraform 並嘗試將 kubernetes 基礎架構轉換為 terraform。

我有一個 terraform 腳本,它創建一個給定的namespace ,然后從本地文件創建秘密。 由於命名空間的創建速度不夠快,大多數文件無法正確創建。

在繼續使用 terraform 腳本之前,是否有正確的方法來創建和等待名稱空間的確認? 比如depends_on等?

我目前的做法:

resource "kubernetes_namespace" "namespace" {
  metadata {
    name = "specialNamespace"
  }
}

resource "kubernetes_secret" "api-env" {
  metadata {
    name      = var.k8s_name_api_env
    namespace = "specialNamespace"
  }

  data = {
    ".api" = file("${path.cwd},${var.local_dir_path_api_env_file}")
  }
}

resource "kubernetes_secret" "password-env" {
  metadata {
    name      = var.k8s_name_password_env
    namespace = "specialNamespace"
  }

  data = {
    ".password" = file("${path.cwd},${var.local_dir_path_password_env_file}")
  }
}

resource "kubernetes_secret" "tls-crt-env" {
  metadata {
    name      = var.k8s_name_tls_crt_env
    namespace = "specialNamespace"
  }

  data = {
    "server.crt" = file("${path.cwd},${var.local_dir_path_tls_crt_env_file}")
  }
}

resource "kubernetes_secret" "tls-key-env" {
  metadata {
    name      = var.k8s_name_tls_key_env
    namespace = "specialNamespace"
  }

  data = {
    "server.key" = file("${path.cwd},${var.local_dir_path_tls_key_env_file}")
  }
}

由於有一種方法可以從kubernetes_namespace資源中獲取metadataname屬性,因此我建議您使用它。 例如,對於kubernetes_secret資源:

resource "kubernetes_secret" "api-env" {
  metadata {
    name      = var.k8s_name_api_env
    namespace = kubernetes_namespace.namespace.metadata[0].name
  }

  data = {
    ".api" = file("${path.cwd},${var.local_dir_path_api_env_file}")
  }
}

另外,請注意,大多數資源也有_v1版本(例如,命名空間 [1]、秘密 [2] 等),所以我強烈建議使用這些資源。


[1] https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/namespace_v1

[2] https://registry.terraform.io/providers/hashicorp/kubernetes/latest/docs/resources/secret_v1

比如depends_on等?

確切地。 在這里,您應該使用depends_on:

resource "kubernetes_secret" "api-env" {
  depends_on = [resource.kubernetes_namespace.namespace]
  ...
}
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM