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
, Подробнее здесь.