Terraform kubernetes_config_map --from-env-file

Я создаю kubernetes configMap, используя опцию --from-env-file для хранения содержимого файла в качестве переменных среды.

kubectl create configmap env --from-env-file=env.properties -n namespace

Когда я создаю ресурс terraform, как показано ниже, созданный файл configMap содержит файл, а не переменные среды.

resource "kubernetes_config_map" "env" {
  metadata {
    name = "env-config"
    namespace = var.namespace
  }
  data = {
    "env.properties"   = "${file("${path.module}/env.properties")}"
  }
}

Как создать configMap с содержимым файла в качестве переменных среды, используя ресурс terraform-kubernetes-provider?

1 ответ

Если env.properties выглядит так:

$ cat env.properties
enemies=aliens
lives=3
allowed="true"

затем kubectl create configmap env --from-env-file=env.properties -n namespace приведет к чему-то вроде этого:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env
  namespace: namespace
data:
  allowed: '"true"'
  enemies: aliens
  lives: "3"

Но то, что вы делаете с Terraform, может привести к чему-то еще:

apiVersion: v1
kind: ConfigMap
metadata:
  name: env
  namespace: namespace
data:
  env.properties: |
    enemies=aliens
    lives=3
    allowed="true"

Основываясь на документации Terraform, кажется, что вы ищете, т.е. некоторая нативная поддержка --from-env-file поведение внутри провайдера Terraform, не возможно.

ConfigMap Формат, который вы получаете, используя способ Terraform, все еще может быть полезным, вам, возможно, придется просто изменить способ извлечения данных из ConfigMap в ваши стручки / развертывания. Если вы можете поделиться более подробной информацией и даже упрощенным / санированным примером ваших модулей / развертываний, где вы используете карту конфигурации, возможно, можно будет описать, как изменить их, чтобы использовать другой стиль ConfigMap, Подробнее здесь.

Другие вопросы по тегам