NetScaler ingress controller

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.

  1. 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-->
    
  2. 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.
  3. 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-->
    
  4. Delete the Configmap.

    kubectl delete configmap <CONFIGMAP_NAME>
    <!--NeedCopy-->
    
  5. 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-->
    
  6. 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-->
    
  7. 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-->
    
  8. 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.

  1. 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-->
    
  2. (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-->
    
  3. 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-->
    
  4. Replace cic.values with nsic.values.

  5. To upgrade NSIC:

    1. (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 as netscaler/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 with nsncPbr to match the parameter naming in the NetScaler Helm chart.
        • Run the helm get values <release_name> -a command and update the values.yaml file accordingly.
      • For NSIC as a sidecar, update the values.yaml with the following attributes.

        • Specify the nsic.imageRepository value as netscaler/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 with nsncPbr to match the parameter naming in the NetScaler Helm chart.
        • Run the helm get values <release_name> -a command and update the values.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.
    2. 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.

  6. 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-->
    
  7. If needed, deploy the CRD instances that were backed up in step 1.

Upgrade NetScaler Ingress Controller