kubernetes - 在我的 Helm 模板中,为什么 pluck 的计算结果为 float64?

标签 kubernetes kubernetes-helm

作为我的帖子的后续问题 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/

相关文章:

kubernetes - 在使用helm进行部署时应使用base64编码

node.js - 如何在 kubernetes 上部署带有 redis 的 node.js?

docker - 如何确定所需的资源并设置在k8s pod中运行的应用程序的限制?

kubernetes - 如何查看新 Helm 图版本中的变化

kubernetes - 如何在本地Kubernetes或OpenShift集群上运行Snakemake工作流程?

kubernetes - Airflow 无法将日志写入 s3 (v1.10.9)

kubernetes - Helm 机重置:错误:OWNER%!D(MISSING)TILLER:调用TCP 10.96.0.1:443:I/O超时

kubernetes - Spring 启动调度程序为每个 pod 运行 cron 作业

kubernetes - 如何检查 Kubernetes pod 是否因 OOM 或 DEADLINE EXCEEDED 被杀死?

kubernetes - 如何从 k8s 将 `sysctl` 标志传递给 docker?