为什么 Helm 只取范围内地图的最后一个值
Why Helm take only the last value of the map in range
我是 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
和Value.yaml关于这些IP是这样的:
#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 映射中的最后 key:value 对:
# 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 }}
我是 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
和Value.yaml关于这些IP是这样的:
#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 映射中的最后 key:value 对:
# 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 }}