ingress-nginx: Chart v3.31 fails via Helm3 on Kubes v1.19

NGINX Ingress controller version: v3.31

Kubernetes version (use kubectl version):

Client Version: version.Info{Major:"1", Minor:"19", GitVersion:"v1.19.11", GitCommit:"c6a2f08fc4378c5381dd948d9ad9d1080e3e6b33", GitTreeState:"clean", BuildDate:"2021-05-12T12:27:07Z", GoVersion:"go1.15.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"19+", GitVersion:"v1.19.10-gke.1000", GitCommit:"fb668c07d234a3f2c6b9f7a57e030715a6074115", GitTreeState:"clean", BuildDate:"2021-04-29T09:17:21Z", GoVersion:"go1.15.10b5", Compiler:"gc", Platform:"linux/amd64"}

Environment:

  • Cloud provider or hardware configuration:
  • GKE
  • OS (e.g. from /etc/os-release):
  • Ubuntu
  • Kernel (e.g. uname -a):
  • Linux
  • Install tools:
  • kubectl, helm3
  • Others:

What happened:

When trying to install v3.31 on a GKE cluster v.1.19, it fails

$ helm3 upgrade --dry-run --install --wait --atomic --namespace nginx-ingress   nginx-ingress   --create-namespace   --values ingress-controller-values.yaml   ingress-nginx/ingress-nginx --version 3.31.0
Release "nginx-ingress" does not exist. Installing it now.
Error: unable to build kubernetes objects from release manifest: error validating "": error validating data: [ValidationError(Deployment.spec.template.spec.containers[0].livenessProbe): unknown field "port" in io.k8s.api.core.v1.Probe, ValidationError(Deployment.spec.template.spec.containers[0].readinessProbe): unknown field "port" in io.k8s.api.core.v1.Probe]

When installined v3.30, it doesn’t complain:

Release "nginx-ingress" does not exist. Installing it now.
NAME: nginx-ingress
LAST DEPLOYED: Thu May 20 09:38:32 2021
NAMESPACE: nginx-ingress
STATUS: pending-install
REVISION: 1
TEST SUITE: None
HOOKS:
---
# Source: ingress-nginx/templates/admission-webhooks/job-patch/serviceaccount.yaml
apiVersion: v1
.....

What you expected to happen: Successful install of v3.31 chart on v1.19

How to reproduce it:

Commands listed above

Anything else we need to know:

/kind bug

About this issue

  • Original URL
  • State: closed
  • Created 3 years ago
  • Reactions: 3
  • Comments: 15 (6 by maintainers)

Most upvoted comments

Ah, I think I know the problem now

On 3.31, the probes are structured like this:

livenessProbe:
  httpGet:
    # should match container.healthCheckPath
    path: "/healthz"
    port: 10254
    scheme: HTTP
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 1
  successThreshold: 1
  failureThreshold: 5
readinessProbe:
  httpGet:
    # should match container.healthCheckPath
    path: "/healthz"
    port: 10254
    scheme: HTTP
  initialDelaySeconds: 10
  periodSeconds: 10
  timeoutSeconds: 1
  successThreshold: 1
  failureThreshold: 3

On 3.30 (and on my values yaml), they’re structured like this:

livenessProbe:
  failureThreshold: 5
  initialDelaySeconds: 10
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 1
  port: 10254
readinessProbe:
  failureThreshold: 3
  initialDelaySeconds: 10
  periodSeconds: 10
  successThreshold: 1
  timeoutSeconds: 1
  port: 10254

So I should just need to update the probes block. Will give that a test.