使用 ConfigMap 在 Kubernetes 中配置 NetScaler CPX

2018 年 3 月 23 日

在 Kubernetes 中,可以使用 ConfigMap 配置 NetScaler CPX 实例。使用 ConfigMap,可以在实例启动过程中动态配置 NetScaler CPX 实例。

创建一个包含 NetScaler 特定的配置以及要在 NetScaler CPX 实例上动态运行的 bash shell 命令的 cpx.conf 配置文件。配置文件结构需要两种类型的标记,即 #NetScaler Commands#Shell Commands。在标记 #NetScaler Commands 下,必须添加所有 NetScaler 命令以在 NetScaler CPX 实例上配置 NetScaler 特定的配置。在标记 #Shell Commands 下,必须添加要在 NetScaler CPX 实例上运行的 shell 命令。

重要:

  • 可以在配置文件中多次重复标记。
  • 配置文件还可以包括注释。请在注释之前添加“#”字符。
  • 标记不区分大小写。
  • 如果使用配置文件部署 NetScaler CPX 容器时存在故障情形,故障将记录在 ns.log 文件中。
  • NetScaler CPX 实例启动后,如果更改了 ConfigMap,则仅当重新启动 NetScaler CPX 实例时才能应用更新后的配置。

下面是示例配置文件:

#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

创建配置文件后,必须使用 kubectl create configmap 命令从配置文件创建 ConfigMap。

kubectl create configmap cpx-config --from-file=cpx.conf

在上例中,可以根据配置文件 cpx.conf 创建 ConfigMap cpx-config。然后可以在使用的 YAML 文件中使用此 ConfigMap 来部署 NetScaler CPX 实例。

可以使用 kubectl get configmap 命令查看创建的 ConfigMap。

root@node1:~/yaml# kubectl get configmap cpx-config -o yaml

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

可以在使用的 YAML 文件中指定创建的 ConfigMap cpx-config 来部署 NetScaler CPX 实例,如下所示:

apiVersion: v1

kind: Pod

metadata:

  name: cpx-1

  labels:

        app: cpx-daemon

  annotations:

        NETSCALER_AS_APP: "True"

spec:

  hostNetwork: true

  containers:

    - name: cpx

      image: "cpx:latest"

      securityContext:

        privileged: true

      volumeMounts:

      - name: config-volume

        mountPath: /cpx/conf

      env:

      - name: "EULA"

        value: "yes"

      - name: "NS_NETMODE"

        value: "HOST"

      - name: "kubernetes_url"

        value: "https://10.106.76.31:6443"

      - name: "NS_MGMT_SERVER"

        value: "10.106.76.144"

      - name: "NS_MGMT_FINGER_PRINT"

        value: "A6:1F:7C:16:90:42:52:C9:0F:74:59:28:E7:A5:D6:D6:3C:6D:DC:DE"

      - name: "NS_ROUTABLE"

        value: "FALSE"

      - name: "KUBERNETES_TASK_ID"

        valueFrom:

          fieldRef:

             fieldPath: metadata.name

      imagePullPolicy: Never

  volumes:

    - name: config-volume

      configMap:

        name: cpx-config

  nodeSelector:

      node: node1

部署 NetScaler CPX 实例并启动在 ConfigMap 中指定的配置后,cpx-config 将应用于 NetScaler CPX 实例。

使用 ConfigMap 在 Kubernetes 中配置 NetScaler CPX

In this article