Upgrade
Upgrade on premises
Upgrade the ingress controller Jump to heading
When to use this procedure
Use this procedure if you have an HAProxy Enterprise license key.
If you installed the ingress controller using Helm, then you can use the helm upgrade
command to upgrade to the latest version. Helm will initiate a rolling update, wherein it waits for the new ingress controller pods to start up before terminating the old ingress controller pods. That way, there is no break in service.
To perform the upgrade:
-
When calling
helm upgrade
, pass all arguments that you previously used when installing the ingress controller, including your license key, but setcontroller.image.tag
tov1.11
.nixhelm upgrade haproxy-kubernetes-ingress haproxytech/kubernetes-ingress \--create-namespace \--namespace haproxy-controller \--set controller.imageCredentials.registry=kubernetes-registry.haproxy.com \--set controller.imageCredentials.username=<KEY> \--set controller.imageCredentials.password=<KEY> \--set controller.image.repository=kubernetes-registry.haproxy.com/hapee-ingress \--set controller.image.tag=v1.11nixhelm upgrade haproxy-kubernetes-ingress haproxytech/kubernetes-ingress \--create-namespace \--namespace haproxy-controller \--set controller.imageCredentials.registry=kubernetes-registry.haproxy.com \--set controller.imageCredentials.username=<KEY> \--set controller.imageCredentials.password=<KEY> \--set controller.image.repository=kubernetes-registry.haproxy.com/hapee-ingress \--set controller.image.tag=v1.11
Update CRDs Jump to heading
If you installed the ingress controller with Helm, updates to CRDs are applied automatically upon installation (helm install
) and upgrade (helm upgrade
). If you installed the ingress controller via kubectl, you will need to run a CRD update job using kubectl.
Prerequisites
This procedure does not install CRDs. Before updating them, you must make sure they are installed. See each CRD page under the Reference section for more information.
To update your CRDs:
-
Find the ingress controller pod using
kubectl get pods
:nixkubectl get pods -n haproxy-controllernixkubectl get pods -n haproxy-controllerexample outputtextNAME READY STATUS RESTARTS AGEhaproxy-kubernetes-ingress-59f7587966-9kjtv 1/1 Running 0 11mexample outputtextNAME READY STATUS RESTARTS AGEhaproxy-kubernetes-ingress-59f7587966-9kjtv 1/1 Running 0 11m -
Using the name of the
haproxy-kubernetes-ingress
pod (or one of the pods if you have more than one), callkubectl exec
with the command/haproxy-ingress-controller --job-check-crd
to update the CRDs. Note that this does not actually run an instance of the ingress controller, but rather, runs the ingress controller in a special mode that updates CRDs only.nixkubectl exec -it -n haproxy-controller haproxy-kubernetes-ingress-59f7587966-9kjtv -- /haproxy-ingress-controller --job-check-crdnixkubectl exec -it -n haproxy-controller haproxy-kubernetes-ingress-59f7587966-9kjtv -- /haproxy-ingress-controller --job-check-crdexample outputtext2024/05/24 18:50:45 maxprocs: Leaving GOMAXPROCS=2: CPU quota undefined2024/05/24 18:50:45 /src/main.go:91_ _ _ ____ _____ _____| | | | / \ | _ \ _ __ _____ ___ _ | ____| ____|| |_| | / _ \ | |_) | '__/ _ \ \/ / | | | | _| | _|| _ |/ ___ \| __/| | | (_) > <| |_| | | |___| |___|_| |_/_/ \_\_| |_| \___/_/\_\\__, | |_____|_____|_ __ _ |___/ ___ ____| |/ / _| |__ ___ _ __ _ __ ___| |_ ___ ___ |_ _/ ___|| ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __| | | || . \ |_| | |_) | __/ | | | | | __/ || __/\__ \ | | |___|_|\_\__,_|_.__/ \___|_| |_| |_|\___|\__\___||___/ |___\____|2024/05/24 18:50:45 /src/main.go:92____ ____ ____ _ _ _ _/ ___| _ \| _ \ | | | |_ __ __| | __ _| |_ ___ _ __| | | |_) | | | | | | | | '_ \ / _` |/ _` | __/ _ \ '__|| |___| _ <| |_| | | |_| | |_) | (_| | (_| | || __/ |\____|_| \_\____/ \___/| .__/ \__,_|\__,_|\__\___|_||_|2024/05/24 18:50:45 INFO /src/main.go:93 HAProxy Ingress Controller CRD Updater v1.11.3-ee4 38342bbb.dirty2024/05/24 18:50:45 INFO /src/main.go:94 Build from: github.com/haproxytech/kubernetes-ingress2024/05/24 18:50:45 INFO /src/main.go:95 Build date: 2024-04-26T07:37:43Z2024/05/24 18:50:45 INFO job/crd-check.go:31 checking CRDs2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD defaults.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD defaults.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD defaults.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD globals.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD globals.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD globals.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD backends.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD backends.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD backends.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:1112024/05/24 18:50:45 INFO job/crd-check.go:112 CRD update doneexample outputtext2024/05/24 18:50:45 maxprocs: Leaving GOMAXPROCS=2: CPU quota undefined2024/05/24 18:50:45 /src/main.go:91_ _ _ ____ _____ _____| | | | / \ | _ \ _ __ _____ ___ _ | ____| ____|| |_| | / _ \ | |_) | '__/ _ \ \/ / | | | | _| | _|| _ |/ ___ \| __/| | | (_) > <| |_| | | |___| |___|_| |_/_/ \_\_| |_| \___/_/\_\\__, | |_____|_____|_ __ _ |___/ ___ ____| |/ / _| |__ ___ _ __ _ __ ___| |_ ___ ___ |_ _/ ___|| ' / | | | '_ \ / _ \ '__| '_ \ / _ \ __/ _ \/ __| | | || . \ |_| | |_) | __/ | | | | | __/ || __/\__ \ | | |___|_|\_\__,_|_.__/ \___|_| |_| |_|\___|\__\___||___/ |___\____|2024/05/24 18:50:45 /src/main.go:92____ ____ ____ _ _ _ _/ ___| _ \| _ \ | | | |_ __ __| | __ _| |_ ___ _ __| | | |_) | | | | | | | | '_ \ / _` |/ _` | __/ _ \ '__|| |___| _ <| |_| | | |_| | |_) | (_| | (_| | || __/ |\____|_| \_\____/ \___/| .__/ \__,_|\__,_|\__\___|_||_|2024/05/24 18:50:45 INFO /src/main.go:93 HAProxy Ingress Controller CRD Updater v1.11.3-ee4 38342bbb.dirty2024/05/24 18:50:45 INFO /src/main.go:94 Build from: github.com/haproxytech/kubernetes-ingress2024/05/24 18:50:45 INFO /src/main.go:95 Build date: 2024-04-26T07:37:43Z2024/05/24 18:50:45 INFO job/crd-check.go:31 checking CRDs2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD defaults.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD defaults.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD defaults.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD globals.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD globals.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD globals.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:492024/05/24 18:50:45 INFO job/crd-check.go:50 checking CRD backends.ingress.v1.haproxy.com2024/05/24 18:50:45 INFO job/crd-check.go:66 CRD backends.ingress.v1.haproxy.com exists2024/05/24 18:50:45 INFO job/crd-check.go:92 CRD backends.ingress.v1.haproxy.com exists as v1, CN[v5.1.3-ee2]2024/05/24 18:50:45 INFO job/crd-check.go:1112024/05/24 18:50:45 INFO job/crd-check.go:112 CRD update doneYou should see in the output the text
CRD update done
, which means that the update was successful. If you receive an error like the following:text2024/05/24 18:51:59 INFO job/crd-check.go:57 CRD backends.ingress.v1.haproxy.com does not exist2024/05/24 18:51:59 ERROR /src/main.go:99 customresourcedefinitions.apiextensions.k8s.io is forbidden: User "system:serviceaccount:haproxy-controller:haproxy-ingress-service-account" cannot create resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scopetext2024/05/24 18:51:59 INFO job/crd-check.go:57 CRD backends.ingress.v1.haproxy.com does not exist2024/05/24 18:51:59 ERROR /src/main.go:99 customresourcedefinitions.apiextensions.k8s.io is forbidden: User "system:serviceaccount:haproxy-controller:haproxy-ingress-service-account" cannot create resource "customresourcedefinitions" in API group "apiextensions.k8s.io" at the cluster scopeThis means that the CRD is not installed. Install any missing CRDs and run the
kubectl exec
command again.
Do you have any suggestions on how we can improve the content of this page?