我在Terraform中部署了一个GKE集群和2个Helm提供商版本。
基本上,我正在部署2个测试应用程序,该应用程序编写自定义消息,Nginx入口应根据路径前缀重定向到一个或另一个,如果我手动将每个版本的服务名称添加到Ingress规则/后端,它可以工作,但我希望在应用terraform时自动完成,部署版本,部署入口,一旦服务名称可用,将名称传递给Ingress,这样的话,如果我们有10个不同路径的版本,我们只需要应用terraform添加更多的变量Map。
所以,这是可能的?有输出并将其传递给一个变量?就像在Terraform中一样。
我的Helm资源看起来像这样:
resource "helm_release" "helm_releases" {
for_each = var.releases_map
name = each.key
chart = each.value.chart_source
namespace = each.value.namespace
create_namespace = each.value.create_namespace
values = [
"${file("./helm-app/values.yaml")}"
]
set {
name = "deployment.replicaCount"
value = each.value.replica_count
}
.
.
}
字符串
我的variable "releases_map" {}
看起来像这样:
releases_map = {
"gke-test-1" = {
chart_source = "./helm-app"
namespace = "gke-ns"
create_namespace = true
service_type = "ClusterIP"
replica_count = "3"
service_port = "80"
container_image = "publicrepo/helm-app"
image_version = "1.10"
ingress_configured = true
path_prefix = "custom-message"
message = "test-1"
}
"gke-test-2" = {
chart_source = "./helm-app"
namespace = "gke-ns"
create_namespace = false
service_type = "ClusterIP"
replica_count = "3"
service_port = "80"
container_image = "publicrepo/helm-app"
image_version = "1.10"
ingress_configured = true
path_prefix = "custom-message"
message = "test-2"
}
}
型
我在想一个范围,但我有点迷路了,在我的入口。yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: nginx-ingress
spec:
rules:
- http:
paths:
{{- range .Values.ingress}}
- pathType: {{ .pathPrefix }}
backend:
service:
name: {{ include "helm-app.name" . }}
port:
number: {{ .Values.ingress.port }}
path: {{ .Values.ingress.path }}
{{- end}}
型
我在values.yaml中有一些值,但我们的想法是覆盖这些值,并如上所示使用Terraform传递这些值。
1条答案
按热度按时间qybjjes11#
我最终使用了来自Kubernetes Terraform提供商的Ingress资源:
因此,动态块将在变量中添加新版本,并将它们添加到路径中。
字符串