首页 文章

如果条件检查,Kubernetes头盔图表

提问于
浏览
3

我试图添加如果伟大而不是Helm图表中的条件 . 这是投掷错误 .

我在values.yaml中定义了值,并在deployment.yaml中使用该值作为条件 .

values.yaml

replicaCount: 2

deployment.yaml

rollingUpdate:
  maxSurge: 1
  {{ if gt .Values.replicaCount 2}}
  maxUnavailable: 0
  {{ else }}
  maxUnavailable: 1
  {{ end }}

我正在使用helm dry run选项来检查结果 . 得到错误

Error: render error in "hello-world/templates/deployment.yaml": template: hello-world/templates/deployment.yaml:16:12: executing "hello-world/templates/deployment.yaml" at <gt .Values.replicaCo...>: error calling gt: incompatible types for comparison

怎么解决这个问题?

1 回答

  • 5

    请尝试使用浮点数代替:

    deployment.yaml

    rollingUpdate:
      maxSurge: 1
      {{ if gt .Values.replicaCount 2.0}}
      maxUnavailable: 0
      {{ else }}
      maxUnavailable: 1
      {{ end }}
    

    Helm(以及底层的Golang模板和Yaml)有时会很奇怪 .


    另请注意,有时您需要在yaml配置中对类型进行类型转换(例如端口号) .

    例:

    ...
    ports:
    - containerPort: !!int {{ .Values.containers.app.port }}
    ...
    

    关于Yaml型铸件的更多信息:https://github.com/yaml/YAML2/wiki/Type-casting

相关问题