在 Kubernetes 中使用 ConfigMap 配置 NetScaler CPX
在 Kubernetes 中,您可以使用 ConfigMap 配置 NetScaler CPX 实例。使用 ConfigMap,您可以在实例启动期间动态配置 NetScaler CPX 实例。
创建一个 cpx.conf 配置文件,其中包含 NetScaler 特定的配置以及您希望在 NetScaler CPX 实例上动态运行的 bash shell 命令。该配置文件结构需要两种类型的标签:#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
<!--NeedCopy-->
创建配置文件后,您必须使用 kubectl create configmap 命令从配置文件创建 ConfigMap。
kubectl create configmap cpx-config --from-file=cpx.conf
<!--NeedCopy-->
在上面的示例中,您可以基于配置文件 cpx.conf 创建一个 ConfigMap,cpx-config。然后,您可以在用于部署 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
<!--NeedCopy-->
您可以在用于部署 NetScaler CPX 实例的 YAML 文件中指定创建的 ConfigMap cpx-config,如下所示:
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-->
一旦 NetScaler CPX 实例部署并开始应用 ConfigMap 中指定的配置,cpx-config 将应用于 NetScaler CPX 实例。