Deploy NetScaler Operator

Last published : Nov 14, 2026
Perform the following steps:
  1. Log in to the OpenShift cluster console.
  2. Navigate to Operators > OperatorHub, select Certified source in the left panel, select NetScaler® Operator, and then click Install.
    NetScaler OperatorInstall NetScaler Operator
  3. To subscribe to NetScaler Operator, select one of the following options:
    • All namespaces on the cluster (default): NetScaler Operator is available in all the namespaces on the OpenShift cluster. Hence, this option enables you to initiate the NetScaler instance from any namespace on the cluster.
    • A specific namespace on the cluster: NetScaler Operator is available in the selected namespace on the OpenShift cluster. Hence, this option enables you to initiate the NetScaler Operator instance on the selected namespace only.
  4. In this case, let's select A specific namespace on the cluster and then Click Install.
    NetScaler Operator Subscription
    Wait until NetScaler Operator is subscribed successfully.
    NetScaler Operator installation confirmation
  5. (Optional) To deploy NetScaler Operator in all the namespaces, ensure All namespaces on the cluster (default) is selected as the installation mode and openshift-operators is selected as the installed namespace, and then click Install.
    Note:
    Before deploying NetScaler Operator in all the namespaces, ensure to delete any existing NetScaler Operator instances in all the namespaces.
    NetScaler Operator Subscription
    Wait until NetScaler Operator is subscribed successfully.
    NetScaler Operator Subscription
  6. Navigate to Workloads > Pods section and verify that the netscaler-Operator-controller-manager pod is up and running.
NetScaler Operator Pod UP and Running
You can deploy the following controllers using NetScaler Operator:

Set the resources of the NetScaler Operator pod

In NetScaler Operator 3.7.5, the manager container of the NetScaler Operator pod (netscaler-operator-controller-manager) requests 250m CPU and 512Mi memory and has limits of 1 CPU and 1Gi memory. Earlier versions used requests of 200m CPU and 200Mi memory and limits of 500m CPU and 400Mi memory.
To change these values, set spec.config.resources on the Subscription of NetScaler Operator. Operator Lifecycle Manager (OLM) applies the values to the operator pod and keeps them across operator upgrades. Do not edit the ClusterServiceVersion or the deployment of the operator directly, because OLM reverts these changes.
  1. Get the name of the Subscription in the namespace where you installed NetScaler Operator, for example, openshift-operators:
    oc get subscriptions -n <operator-namespace>
  2. Edit the Subscription and add config.resources under spec:
    oc edit subscription <subscription-name> -n <operator-namespace>
    The following example raises the memory limit to 2Gi and keeps the other default values:
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: netscaler-operator
      namespace: <operator-namespace>
    spec:
      channel: stable
      name: netscaler-operator
      source: certified-operators
      sourceNamespace: openshift-marketplace
      config:
        resources:
          requests:
            cpu: 250m
            memory: 512Mi
          limits:
            cpu: "1"
            memory: 2Gi
    OLM replaces the resources of every container in the operator pod, including the kube-rbac-proxy container, with these values. So, specify both requests and limits.

Troubleshoot an OOMKilled NetScaler Operator pod

If the NetScaler Operator pod restarts repeatedly, check whether its manager container runs out of memory. While the pod restarts, NetScaler Operator does not reconcile its instances, but the controllers that it already deployed keep running.
  1. Check the status and the restart count of the netscaler-operator-controller-manager pod, and then describe the pod:
    oc get pods -n <operator-namespace>
    oc describe pod <operator-pod-name> -n <operator-namespace>
  2. If the manager container shows Last State: Terminated with Reason: OOMKilled, raise its memory limit through the Subscription as described earlier, for example, to twice the current limit.