.net-core - Terraform:将变量列表传递给容器环境变量
问题描述
我正在尝试找到一种方法如何将列表变量传递/映射到kubernetes_deployment容器环境变量。我在容器中运行一个 asp.net 核心应用程序,并尝试通过设置 env 变量来修改应用程序以覆盖应用程序 settings.json。从 settings.json 覆盖单个值不是问题,问题是我是否需要在那里定义/覆盖整个数组。
我在 terrafrom 中有这样的变量列表:
variable "allowed_cars" {
type = list(
object({
manufacturer = string
model = string
})
)
}
然后,我有容器的kubernetes_deployment资源定义。
我相信如果我像这样为容器设置环境变量,它可以工作:
env {
name = "App__AllowedCars__0__Manufacturer"
value = "xxx"
}
env {
name = "App__AllowedCars__0__Model"
value = "xxx"
}
env {
name = "App__AllowedCars__1__Manufacturer"
value = "xxx"
}
env {
name = "App__AllowedCars__1__Model"
value = "xxx"
}
...
有没有办法根据allowed_cars terraform 变量以动态方式将这些环境变量传递给容器?我不知道每个环境会定义多少个项目,等等......
非常感谢。
解决方案
这个定义的一些东西(azurerm_container_group
在 azure 中使用的例子)
environment_variables = "${merge(var.env_vars,var.secure_env_vars,local.master_env)}"
然后可以传入变量
variable "env_vars" {
type = "map"
description = "envvaars"
default = {
WEB_USER = "locust"
HATCH_RATE = 25
LOCUST_COUNT = 50
LOCUST_FILE = "/locust/locustfile.py"
ATTACKED_HOST = "https://api-perf.yrdy.com"
}
}
variable "secure_env_vars" {
type = "map"
description = "secure env vars"
default = {
WEB_PASSWORD = "dummy"
API_KEY = "test"
}
}
推荐阅读
- python - 即使在 conda 中安装后也无法导入 Poppler
- mysql - Laravel json join,尝试加入具有多个 id 的 JSON 列和具有位置 id 的位置表,查询生成器
- android - RecyclerView 和 NestedScrollView 底部的 Admob
- select - 使用组合框选择工作表并在列表框中显示数据
- c - 在 C 中减去一个 char 数组减去 int
- port - VFP SFTP 无法通过端口 6022 连接
- javascript - 显示/隐藏需要双击
- c# - 如何动态改变Referer CefSharp?
- python - 运行 python manage.py migrate 和 python manage.py runserver 时收到错误
- dictionary - 此类型可能无法实现 trait `Copy`