Configure NetScaler CPX in Kubernetes Using ConfigMaps

Last published : Sep 30, 2026
In Kubernetes, you can configure the NetScaler CPX instance using ConfigMaps. Using ConfigMaps you can dynamically configure the NetScaler CPX instance during instance startup.
Create a cpx.conf configuration file that includes NetScaler-specific configuration and bash shell commands that you want to run dynamically on the NetScaler CPX instance. The configuration file structure requires two types of tags, #NetScaler Commands and #Shell Commands. Under the #NetScaler Commands tag, you must add all the NetScaler commands to configure NetScaler-specific configuration on NetScaler CPX instance. Under the #Shell Commands tag, you must add the shell commands that you want to run on the NetScaler CPX instance.
Important:
  • The tags can be repeated multiple times in the configuration file.
  • The configuration file can also include comments. Add a “#” character before comments.
  • The tags are not case-sensitive.
  • If there are failure scenarios while deploying the NetScaler CPX container with the configuration file, the failures are logged in the ns.log file.
  • After the NetScaler CPX instance starts, if you change the ConfigMap, the updated configuration is applied only when the NetScaler CPX instance is restarted.
The following is a sample configuration file:
#NetScaler Commands
add lb vserver v1 http 1.1.1.1 80
add service s1 2.2.2.2 http 80
bind lb vserver v1 s1
#Shell Commands
touch /etc/a.txt
echo "this is a" > /etc/a.txt
#NetScaler Commands
add lb vserver v2 http
#Shell Commands
echo "this is a 1" >> /etc/a.txt
#NetScaler Commands
add lb vserver v3 http
Once you have created the configuration file, you must create a ConfigMap from the configuration file using the kubectl create configmap command.
kubectl create configmap cpx-config --from-file=cpx.conf
In the example above, you can create a ConfigMap, cpx-config based on the configuration file cpx.conf. You can then use this ConfigMap in the YAML file used to deploy the NetScaler CPX instance.
You can view the created ConfigMap using the kubectl get configmap command. root@node1:~/yaml# kubectl get configmap cpx-config -o yaml
Sample:
apiVersion: v1
data:
    cpx.conf: |
    #NetScaler Commands
        add lb vserver v1 http 1.1.1.1 80
        add service s1 2.2.2.2 http 80
        bind lb vserver v1 s1
    #Shell Commands
        touch /etc/a.txt
        echo "this is a" > /etc/a.txt
        echo "this is the file" >> /etc/a.txt
        ls >> /etc/a.txt
    #NetScaler Commands
        add lb vserver v2 http
    #Shell Commands
        echo "this is a 1" >> /etc/a.txt
    #NetScaler Commands
        add lb vserver v3 http
    #end of file
kind: ConfigMap
metadata:
    creationTimestamp: 2017-12-26T06:26:50Z
    name: cpx-config
    namespace: default
    resourceVersion: "8865149"
    selfLink: /api/v1/namespaces/default/configmaps/cpx-config
    uid: c1c7cb5b-ea05-11e7-914a-926745c10b02
You can specify the created ConfigMap, cpx-config in the YAML file used to deploy the NetScaler CPX instance as follows:
apiVersion: v1
kind: Pod
metadata:
  name: cpx-1
  labels:
    app: cpx-daemon
  annotations:
    NETSCALER_AS_APP: "True"
spec:
  hostNetwork: true
  containers:
  - name: cpx
    image: "quay.io/citrix/citrix-k8s-cpx-ingress:13.1-33.47"
    securityContext:
      privileged: true
    volumeMounts:
    - name: config-volume
      mountPath: /cpx/bootup_conf
    env:
      - name: "EULA"
        value: "yes"
      - name: "NS_NETMODE"
        value: "HOST"
      - name: "kubernetes_url"
        value: "https://10.90.248.101:6443"
      - name: "NS_MGMT_SERVER"
        value: "10.90.248.99"
      - name: "NS_MGMT_FINGER_PRINT"
        value: "19:71:A3:36:85:0A:2B:62:24:65:0F:7E:72:CC:DC:AD:B8:BF:53:1E"
      - name: "NS_ROUTABLE"
        value: "FALSE"
      - name: "KUBERNETES_TASK_ID"
        valueFrom:
          fieldRef:
            fieldPath: metadata.name
    imagePullPolicy: Never
  volumes:
  - name: config-volume
    configMap:
      name: cpx-config
Once the NetScaler CPX instance is deployed and starts the configuration specified in the ConfigMap, cpx-config is applied to the NetScaler CPX instance.