作为我的帖子的后续问题 Helm function to set value based on a variable? ,并修改 Dynamically accessing values depending on variable values in a Helm chart 中给出的答案,我正在尝试这个
$ helm version --short
v3.5.2+g167aac7
values.yaml
-----------
env: sandbox
environments:
sandbox: 0
staging: 1
production: 2
replicaCount:
- 1
- 2
- 4
templates/deployments.yaml
--------------------------
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ index .Values.replicaCount (pluck .Values.env .Values.environments | first | default .Values.environments.sandbox) }}
但我明白了
$ helm template . --dry-run
Error: template: guestbook/templates/deployment.yaml:10:15: executing "guestbook/templates/deployment.yaml" at <index .Values.replicaCount (pluck .Values.env .Values.environments | first | default .Values.environments.sandbox)>: error calling index: cannot index slice/array with type float64
为什么pluck
返回一个float64
而不是一个整数,这是我所期望的,因为我的environments
字典值是整数?
最佳答案
如果我这样做,即使用 int
转换器管道 pluck
,它可以工作,但它不能解释为什么 pluck
返回一个 float64
值。
templates/deployments.yaml
--------------------------
apiVersion: apps/v1
kind: Deployment
metadata:
...
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ index .Values.replicaCount ((pluck .Values.env .Values.environments | first | default .Values.environments.sandbox) | int) }}
更新:事实证明这是一个已知的错误。请参阅https://github.com/kubernetes-sigs/yaml/issues/45
关于kubernetes - 在我的 Helm 模板中,为什么 pluck 的计算结果为 float64?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66197850/