Configurar NetScaler CPX en Kubernetes mediante ConfigMaps

En Kubernetes, puede configurar la instancia de NetScaler CPX mediante ConfigMaps. Con ConfigMaps, puede configurar dinámicamente la instancia de NetScaler CPX durante el inicio de la instancia.

Cree un archivo de configuración cpx.conf que incluya la configuración específica de NetScaler y los comandos de shell bash que desea ejecutar dinámicamente en la instancia de NetScaler CPX. La estructura del archivo de configuración requiere dos tipos de etiquetas: #NetScaler Commands y #Shell Commands. Bajo la etiqueta #NetScaler Commands, debe agregar todos los comandos de NetScaler para configurar la configuración específica de NetScaler en la instancia de NetScaler CPX. Bajo la etiqueta #Shell Commands, debe agregar los comandos de shell que desea ejecutar en la instancia de NetScaler CPX.

Importante:

  • Las etiquetas se pueden repetir varias veces en el archivo de configuración.
  • El archivo de configuración también puede incluir comentarios. Agregue un carácter “#” antes de los comentarios.
  • Las etiquetas no distinguen entre mayúsculas y minúsculas.
  • Si hay escenarios de error al implementar el contenedor NetScaler CPX con el archivo de configuración, los errores se registran en el archivo ns.log.
  • Una vez que se inicia la instancia de NetScaler CPX, si cambia el ConfigMap, la configuración actualizada se aplica solo cuando se reinicia la instancia de NetScaler CPX.

El siguiente es un archivo de configuración de ejemplo:

#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
<!--NeedCopy-->

Una vez que haya creado el archivo de configuración, debe crear un ConfigMap a partir del archivo de configuración mediante el comando kubectl create configmap.

kubectl create configmap cpx-config --from-file=cpx.conf
<!--NeedCopy-->

En el ejemplo anterior, puede crear un ConfigMap, cpx-config basado en el archivo de configuración cpx.conf. A continuación, puede utilizar este ConfigMap en el archivo YAML utilizado para implementar la instancia de NetScaler CPX.

Puede ver el ConfigMap creado mediante el comando kubectl get configmap. root@node1:~/yaml# kubectl get configmap cpx-config -o yaml

Ejemplo:

    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
<!--NeedCopy-->

Puede especificar el ConfigMap creado, cpx-config en el archivo YAML utilizado para implementar la instancia de NetScaler CPX de la siguiente manera:

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
<!--NeedCopy-->

Una vez que la instancia de NetScaler CPX se implementa y comienza la configuración especificada en el ConfigMap, cpx-config se aplica a la instancia de NetScaler CPX.

Configurar NetScaler CPX en Kubernetes mediante ConfigMaps