Upgrade NetScaler Ingress Controller
This section describes how to upgrade the NetScaler Ingress Controller instance for both standalone and sidecar (NetScaler CPX with NetScaler Ingress Controller) deployments. The upgrade procedure ensures that data traffic is not affected during the upgrade process.
Prerequisites
- Secrets: If you want to have the upgraded NSIC version in a different namespace, place your secrets in that namespace.
-
Deployment names: Different names for the YAML-based deployment and the Helm-based deployment should not impact functionality. However, you can retain the same name by using the
fullnameOverride
argument. - For a Helm-based NSIC deployment, run the
helm get values <release_name> -a
command to retrieve the values.yaml for the existing deployment.
Upgrade NSIC that was deployed by using a YAML file
If you have an NSIC instance that was deployed by using a YAML file, follow this procedure to upgrade NSIC by using a Helm chart.
-
Back up the CRD instances of your existing deployment. To back up the CRD instances to a YMAL file, run the following command:
for crd in $(kubectl get crds -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n' | grep 'citrix.com'); do echo "Getting instances for CRD: $crd"; kubectl get $crd --all-namespaces -o yaml >> "all_crd_instances.yaml"; done <!--NeedCopy-->
-
Set the correct arguments in
values.yaml
(for a standalone deployment) or values.yaml (for a sidecar deployment) based on the current deployment and ConfigMap YAML files.Notes:
- We recommend that you specify a unique value for
entityPrefix
. - We recommend that you specify the
ingressClass
as needed to associate your NSIC instance with specific ingress resources. - We recommend that you specify the
serviceClass
as needed to associate your NSIC instance with specific services of type LoadBalancer.
- We recommend that you specify a unique value for
-
Delete your existing NSIC deployment and other related resources, such as ClusterRole, ClusterRoleBinding, and ServiceAccount, that were created as part of the existing NSIC deployment.
kubectl delete deployment <NSIC_DEPLOYMENT_NAME> kubectl delete clusterrole <NSIC_CLUSTERROLE_NAME> kubectl delete clusterrolebinding <NSIC_CLUSTERROLEBINDING_NAME kubectl delete serviceaccount <NSIC_SERVICEACCOUNT_NAME> <!--NeedCopy-->
-
Delete the Configmap.
kubectl delete configmap <CONFIGMAP_NAME> <!--NeedCopy-->
-
Add the NetScaler Helm chart repository to your local registry by using the following command.
helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/ <!--NeedCopy-->
If the NetScaler Helm chart repository is already added to your local registry, update the repository by using the following command:
helm repo update netscaler <!--NeedCopy-->
-
Deploy NetScaler Ingress Controller with the modified
values.yaml
.helm install <existing NSIC release name deployed using YAML> netscaler/netscaler-ingress-controller -f values.yaml <!--NeedCopy-->
-
Deploy the CRD specification by using the following command.
kubectl apply -f https://raw.githubusercontent.com/netscaler/netscaler-helm-charts/refs/heads/master/netscaler-ingress-controller/crds/crds.yaml <!--NeedCopy-->
-
If needed, deploy the CRD instances that were backed up in step 1.
Upgrade NSIC that was deployed by using a Helm chart
Follow this procedure to upgrade NSIC that was deployed using a Helm chart.
-
Back up the CRD instances of your existing deployment. To back up the CRD instances to a YMAL file, run the following command:
for crd in $(kubectl get crds -o jsonpath='{.items[*].metadata.name}' | tr ' ' '\n' | grep 'citrix.com'); do echo "Getting instances for CRD: $crd"; kubectl get $crd --all-namespaces -o yaml >> "all_crd_instances.yaml"; done <!--NeedCopy-->
-
(Optional) Add the NetScaler Helm chart repository to your local registry by using the following command.
helm repo add netscaler https://netscaler.github.io/netscaler-helm-charts/ <!--NeedCopy-->
-
If the NetScaler Helm chart repository is already added to your local registry, update the repository by using the following command:
helm repo update netscaler <!--NeedCopy-->
-
Replace
cic.values
withnsic.values
. -
To upgrade NSIC:
-
(Optional) If the existing NSIC is installed using a chart available in the
Citrix
repository, do the following. Else, skip to the next step.-
For a standalone NSIC, update the values.yaml with the following attributes.
- Specify the
imageRepository
value asnetscaler/netscaler-k8s-ingress-controller
. - (Optional) To upgrade NSIC version 1.35.6 and earlier to any later versions starting from 1.36.5, replace
cncPbr
withnsncPbr
to match the parameter naming in the NetScaler Helm chart. - Run the
helm get values <release_name> -a
command and update thevalues.yaml
file accordingly.
- Specify the
-
For NSIC as a sidecar, update the values.yaml with the following attributes.
- Specify the
nsic.imageRepository
value asnetscaler/netscaler-k8s-ingress-controller
. - (Optional) To upgrade NSIC version 1.35.6 and earlier to any later versions starting from 1.36.5, replace
cncPbr
withnsncPbr
to match the parameter naming in the NetScaler Helm chart. - Run the
helm get values <release_name> -a
command and update thevalues.yaml
file accordingly.
Notes:
- We recommend that you specify a unique value for
entityPrefix
. - We recommend that you specify the
ingressClass
as needed to associate your NSIC instance with specific ingress resources. - We recommend that you specify the
serviceClass
as needed to associate your NSIC instance with specific services of type LoadBalancer.
- Specify the
-
-
Run the following command.
helm upgrade netscaler-ingress-controller netscaler/netscaler-ingress-controller -f values.yaml [--version=<supported nsic version>] <!--NeedCopy-->
Note:
For a list of supported NSIC versions, see this page.
-
-
Deploy the CRD specification by using the following command.
kubectl apply -f https://raw.githubusercontent.com/netscaler/netscaler-helm-charts/refs/heads/master/netscaler-ingress-controller/crds/crds.yaml <!--NeedCopy-->
-
If needed, deploy the CRD instances that were backed up in step 1.