为什么赫尔姆只获取范围内地图的最后一个值



我是Helm的新手,如果我不清楚,如果我使用了错误的术语,我很抱歉。

我正在尝试迭代一个IP列表,在一个范围内提供它们,并为无头服务创建一个IP数组。

这是我的模板:

kind: Endpoints
apiVersion: v1
metadata:
name: backend-modbile-db-service
namespace: {{ .Release.Namespace }}
subsets:
- addresses:
{{- range $key, $val := .Values.DatabaseEndpoints }}
- {{ $key }}: {{ $val }}
{{- end }}
ports:
- port: {{ .Values.DatabasePort| default 5984 }}
name: backend-mobile-db-service

关于这些IP的Value.yaml如下所示:

#backend-mobile-db-service
DatabasePort: 5984
DatabaseEndpoints:
ip: 192.168.0.50
ip: 192.168.0.51
ip: 192.168.0.52
ip: 192.168.0.55
ip: 192.168.0.56
ip: 192.168.0.57

我原以为模板会获取值和索引,并将它们放在我的服务的数组中,但它只获取value.yaml映射中的最后一个键:值对:

# Source: backend-mobile/templates/backend-mobile-db-service.yaml
kind: Endpoints
apiVersion: v1
metadata:
name: backend-modbile-db-service
namespace: default
subsets:
- addresses:
- ip: 192.168.0.57
ports:
- port: 5984
name: backend-modbile-db-service

然而,我预计会有这样的输出:

# Source: backend-mobile/templates/backend-mobile-db-service.yaml
kind: Endpoints
apiVersion: v1
metadata:
name: backend-modbile-db-service
namespace: default
subsets:
- addresses:
- ip: 192.168.0.50
- ip: 192.168.0.51
[...]
- ip: 192.168.0.52
ports:
- port: 5984
name: backend-modbile-db-service

我犯的错误在哪里?提前感谢:(

因为你一次又一次地覆盖ip,所以你只能看到最后一个。如果你想声明一个ip数组,你应该这样做:

DatabaseEndpoints:
ip:
- 192.168.0.50
- 192.168.0.51
- 192.168.0.52
- 192.168.0.55
- 192.168.0.56
- 192.168.0.57

因此,您的模板应该更改为如下所示:

subsets:
- addresses:
{{- range .Values.DatabaseEndpoints.ip }}
- ip: {{ . }}
{{- end }}

最新更新