如何解决使用Terraform在Kubernetes容器块中创建动态块
我想创建一个动态块,该块能够使用terraform为kubernetes内部的docker容器动态创建环境。
我已经尝试创建一个变量列表并遍历环境,但是却出现语法错误
错误:在非计数上下文中引用“计数”
在kubernetes / kubernetes.main.tf第68行中,在资源“ kubernetes_deployment”“ kube_deployment”中:
这是由于使用了超出资源块的计数。
我现在正在寻找创建这样的多个环境
...
env {
name = "NAME"
value = "VALUE"
}
env {
name = "NAME"
value = "VALUE"
}
.
.
.
无论如何,都可以创建此迭代,也可以通过任何技巧在容器块中创建动态环境。我知道动态块仅位于资源,数据,提供程序和预配程序内部。 我以前曾使用头盔进行这种模板制作,但现在我想完全转向地形。 我很乐意为解决此类问题提供指导。
谢谢
resource "kubernetes_deployment" "kube_deployment" {
metadata {
name = var.deployment_name
labels = {
App = var.deployment_name
}
}
spec {
replicas = 1
selector {
match_labels = {
App = var.deployment_name
}
}
template {
metadata {
labels = {
App = var.deployment_name
}
}
spec {
container {
image = var.container_image
name = var.container_name
env {
name = "NAME"
value = "VALUE"
}
port {
container_port = var.container_port
}
}
}
}
}
}
解决方法
即使在类型为资源,数据,提供程序和供应的嵌套块中,实际上也是可能的。
这是工作代码
resource "kubernetes_deployment" "kube_deployment" {
metadata {
name = var.deployment_name
labels = {
App = var.deployment_name
}
}
spec {
replicas = 1
selector {
match_labels = {
App = var.deployment_name
}
}
template {
metadata {
labels = {
App = var.deployment_name
}
}
spec {
container {
image = var.container_image
name = var.container_name
dynamic "env" {
for_each = var.envs
content {
name = env.value.name
value = env.value.value
}
}
port {
container_port = var.container_port
}
}
}
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。