我试图找到一种方法,如何将列表变量传递/映射到 kubernetes_deployment 容器环境变量。我在容器中运行了一个 asp.net 核心应用程序,并尝试通过设置 env 变量来修改应用程序以覆盖应用程序 settings.json。覆盖 settings.json 中的单个值不是问题,问题是我是否需要在那里定义/覆盖整个数组。
我在 terrafrom 中有这样的变量列表:
var yMin = d3.min(data, function (d) {
return parseFloat(d.y);
});
var y0 = yMin-margin.bottom;
if (yMin < margin.bottom) {
y0 = -5;
}
if (y0 > 0) {
y0 = -5;
}
var yMax = d3.max(data, function (d) {
return parseFloat(d.y);
});
var yScale = d3.scaleLinear()
.domain([y0, yMax + 10])
.range([height, 0]);
svg.append("linearGradient")
.attr("id", "line-gradient")
.attr("gradientUnits", "userSpaceOnUse")
.attr("x1", 0).attr("y1", 0)
.attr("x2", 0).attr("y2", yScale(yMin))
.selectAll("stop")
.data([
{offset: "0%", color: "red"},
{offset: "50%", color: "red"},
{offset: "50%", color: "lawngreen"},
{offset: "100%", color: "lawngreen"}
])
.enter().append("stop")
.attr("offset", function(d) { return d.offset; })
.attr("stop-color", function(d) { return d.color; })
然后,我有容器的 kubernetes_deployment 资源定义。
我相信如果我像这样为容器设置 env 变量,它可以工作:
variable "allowed_cars" {
type = list(
object({
manufacturer = string
model = string
})
)
}
有没有办法基于 allowed_cars terraform 变量以动态方式将这些 env 变量传递给容器?我不知道每个环境会定义多少项等等...
非常感谢。
答案 0 :(得分:1)
此定义的某些内容(使用天蓝色中的 azurerm_container_group
示例)
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"
}
}
答案 1 :(得分:0)
正如@ydaetskcoR 提到的,dynamic 块是我的解决方案。
import cv2
import time
cap= cv2.VideoCapture(0)
fps= int(cap.get(cv2.CAP_PROP_FPS))
print("This is the fps ", fps)
if cap.isOpened() == False:
print("Error File Not Found")
while cap.isOpened():
ret,frame= cap.read()
if ret == True:
time.sleep(1/fps)
img = cv2.imread("/home/pi/Downloads/red-removebg-preview (1).png", cv2.IMREAD_UNCHANGED)
frame[100:390, 0:290]=img
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break