在 helm 模板中面临“调用 ge 时出错:用于比较的不兼容类型”

Ara*_*n P 2 go kubernetes-helm helm3

我正在尝试使用以下逻辑根据 hpa 最小副本值设置 pdb 值

spec:
{{ if (ge .Values.autoscaling.minReplicas 5) }}
  minAvailable: 80
{{ else if (eq .Values.autoscaling.minReplicas 4) }}
  minAvailable: 75
{{ else if (eq .Values.autoscaling.minReplicas 3) }}
  minAvailable: 65
{{ else if (eq .Values.autoscaling.minReplicas 2) }}
  minAvailable: 50
{{ else }}
  minAvailable: 0
Run Code Online (Sandbox Code Playgroud)

但是当我执行空运行时我遇到了这个错误

Error: INSTALLATION FAILED: template: service/templates/pdb.yaml:11:7: executing "service/templates/pdb.yaml" at <ge .Values.autoscaling.minReplicas 5>: error calling ge: incompatible types for comparison
helm.go:84: [debug] template: service/templates/pdb.yaml:11:7: executing "ffservice/templates/pdb.yaml" at <ge .Values.autoscaling.minReplicas 5>: error calling ge: incompatible types for comparison
INSTALLATION FAILED
main.newInstallCmd.func2
    helm.sh/helm/v3/cmd/helm/install.go:127
github.com/spf13/cobra.(*Command).execute
    github.com/spf13/cobra@v1.4.0/command.go:856
github.com/spf13/cobra.(*Command).ExecuteC
    github.com/spf13/cobra@v1.4.0/command.go:974
github.com/spf13/cobra.(*Command).Execute
    github.com/spf13/cobra@v1.4.0/command.go:902
main.main
    helm.sh/helm/v3/cmd/helm/helm.go:83
runtime.main
    runtime/proc.go:255
runtime.goexit
    runtime/asm_amd64.s:158
Run Code Online (Sandbox Code Playgroud)

我尝试用这样的 int 括起来 .Values.autoscaling.minReplicas, {{ if (ge int(.Values.autoscaling.minReplicas) 5) }} 但仍然面临相同的错误

有人可以帮我解决这个错误吗?我如何将值定义为 int 并进行比较?

Ara*_*n P 6

抱歉,我找到了答案

我应该这样比较

spec:
{{ if (ge (int .Values.autoscaling.minReplicas) 5) }}
  minAvailable: 80%
{{ else if (eq (int .Values.autoscaling.minReplicas) 4) }}
  minAvailable: 75%
{{ else if (eq (int .Values.autoscaling.minReplicas) 3) }}
  minAvailable: 65%
{{ else if (eq (int .Values.autoscaling.minReplicas) 2) }}
  minAvailable: 50%
{{ else }}
  minAvailable: 0%
Run Code Online (Sandbox Code Playgroud)

希望它可以帮助任何人,如果他们犯了同样的愚蠢错误