ConfigMaps를 사용하여 Kubernetes에서 NetScaler CPX 구성

2018년 3월 23일

ConfigMaps를 사용하여 Kubernetes에서 NetScaler CPX 인스턴스를 구성할 수 있습니다. ConfigMaps를 사용하면 NetScaler CPX 인스턴스를 시작하는 동안 동적으로 구성할 수 있습니다.

NetScaler CPX 인스턴스에서 동적으로 실행할 배시 셸(shell) 명령과 NetScaler 관련 구성을 포함한 cpx.conf 구성 파일을 만듭니다. 구성 파일 구조에는 #NetScaler Commands#Shell Commands라는 두 가지 유형의 태그가 필요합니다. #NetScaler Commands 태그에서는 NetScaler CPX 인스턴스에서 NetScaler 관련 구성을 구성할 수 있도록 모든 NetScaler 명령을 추가해야 합니다. #Shell Commands 태그에서는 NetScaler CPX 인스턴스에서 실행할 셸 명령을 추가해야 합니다.

중요:

  • 태그는 구성 파일에서 여러 번 반복될 수 있습니다.
  • 구성 파일에는 설명도 포함할 수 있습니다. 설명 앞에 “#” 기호를 추가하십시오.
  • 태그는 대/소문자가 구분되지 않습니다.
  • 구성 파일로 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를 기반으로 cpx-config라는 ConfigMap을 만들 수 있습니다. 그런 다음 NetScaler CPX 인스턴스를 배포하는 데 사용한 YAML 파일에 이 ConfigMap을 사용할 수 있습니다.

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

아래에 표시된 것처럼 생성한 ConfigMap(cpx-config)을 NetScaler CPX를 배포하는 데 사용한 YAML 파일에서 지정할 수 있습니다.

        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 인스턴스에 적용됩니다.

ConfigMaps를 사용하여 Kubernetes에서 NetScaler CPX 구성

In this article