我使用Azure Kubernetes Service(AKS)和Confluent Platform的Helm Chart来运行应用程序
概要 – 总结
我参考了这篇文章,并试图通过使用Helm v3稍微理解了一下。我总结了在AKS上使用Confuent Platform的Helm Chart和ACR中的容器镜像(rabbitmq)来运行容器应用的步骤。

本文将按以下两个步骤逐一进行说明。本次将详细介绍第一步。
第一步:在AKS上构建Confluent Platform环境。
第二步:在AKS上运行容器应用程序。
本地环境
macOS Big Sur 11.3:苹果操作系统 Big Sur 的版本号是 11.3。
python 3.8.3:Python 编程语言的版本号是 3.8.3。
helm 3.6.3:Helm 软件的版本号是 3.6.3。
事前准备
-
- 参考此文,并搭建AKS和ACR,并确认了在AKS集群上运行的Node。
参考此文,将容器镜像推送到ACR。
确认此文中的“Helm准备”已完成。
创建(编辑)Helm Chart。
获取ACR登录服务器地址
$ az acr list --resource-group $ACR_RES_GROUP --query "[].{acrLoginServer:loginServer}" --output tsv
acr0ituru.azurecr.io
添加和确认存储库

$ helm repo add confluentinc https://confluentinc.github.io/cp-helm-charts/
"confluentinc" has been added to your repositories
$ helm repo add bitnami-azure https://marketplace.azurecr.io/helm/v1/repo
"bitnami-azure" has been added to your repositories
$ helm repo add bitnami https://charts.bitnami.com/bitnami
"bitnami" has been added to your repositories
$ helm repo update
Helm Chart搜索
搜索Confluent Inc.、RabbitMQ、InfluxDB和Grafana的各个图表。
$ helm search repo confluentinc
NAME CHART VERSION APP VERSION DESCRIPTION
confluentinc/cp-helm-charts 0.6.1 1.0 A Helm chart for Confluent Platform Community E...
stable/schema-registry-ui 0.4.4 v0.9.5 DEPRECATED - This is a web tool for the conflue...
$ helm search repo rabbitmq
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami-azure/rabbitmq 8.20.2 3.8.21 Open source message broker software that implem...
bitnami/rabbitmq 8.20.2 3.8.21 Open source message broker software that implem...
stable/prometheus-rabbitmq-exporter 0.5.6 v0.29.0 DEPRECATED Rabbitmq metrics exporter for promet...
stable/rabbitmq 6.18.2 3.8.2 DEPRECATED Open source message broker software ...
stable/rabbitmq-ha 1.47.1 3.8.7 DEPRECATED - Highly available RabbitMQ cluster,...
$ helm search repo influxdb
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami-azure/influxdb 2.3.5 2.0.7 InfluxDB™ is an open source time-series d...
bitnami/influxdb 2.3.6 2.0.8 InfluxDB™ is an open source time-series d...
stable/influxdb 4.3.2 1.7.9 DEPRECATED Scalable datastore for metrics, even...
bitnami-azure/grafana 6.1.9 8.1.2 Grafana is an open source, feature rich metrics...
bitnami/grafana 6.1.9 8.1.2 Grafana is an open source, feature rich metrics...
stable/kapacitor 1.2.2 1.5.2 DEPRECATED InfluxDB's native data processing en...
$ helm search repo grafana
NAME CHART VERSION APP VERSION DESCRIPTION
bitnami-azure/grafana 6.1.9 8.1.2 Grafana is an open source, feature rich metrics...
bitnami-azure/grafana-operator 1.1.1 3.10.3 Kubernetes Operator based on the Operator SDK f...
bitnami/grafana 6.1.9 8.1.2 Grafana is an open source, feature rich metrics...
bitnami/grafana-operator 1.1.1 3.10.3 Kubernetes Operator based on the Operator SDK f...
bitnami/grafana-tempo 0.2.2 1.0.1 Grafana Tempo is an open source, easy-to-use an...
stable/grafana 5.5.7 7.1.1 DEPRECATED - The leading tool for querying and ...
作为Helm Chart的元素拉取
我将拉取cp-helm-charts/rabbitmq/Influxdb/grafana的Helm Chart。
$ helm pull confluentinc/cp-helm-charts
$ tar zxf cp-helm-charts-0.6.1.tgz
$ helm pull bitnami-azure/rabbitmq
$ tar zxf rabbitmq-8.19.1.tgz
$ helm pull bitnami-azure/influxdb
$ tar zxf influxdb-2.3.4.tgz
$ helm pull bitnami-azure/grafana
$ tar zxf grafana-6.1.6.tgz
目录结构如下。
$ ls -l
drwxr-xr-x 12 hoge staff 384 8 24 09:38 ./
drwxr-xr-x 7 hoge staff 224 8 19 14:33 ../
drwxr-xr-x 17 hoge staff 544 8 19 15:39 cp-helm-charts/
-rw-r--r-- 1 hoge staff 50496 8 19 15:32 cp-helm-charts-0.6.1.tgz
drwxr-xr-x 9 hoge staff 288 8 19 14:15 grafana/
-rw-r--r-- 1 hoge staff 34570 8 19 14:14 grafana-6.1.6.tgz
drwxr-xr-x 10 hoge staff 320 8 19 14:15 influxdb/
-rw-r--r-- 1 hoge staff 43726 8 19 14:13 influxdb-2.3.4.tgz
drwxr-xr-x 11 hoge staff 352 8 19 13:52 rabbitmq/
-rw-r--r-- 1 hoge staff 47260 8 19 13:52 rabbitmq-8.19.1.tgz
编辑 values.yaml 文件
由于使用了在 ACR 注册的 rabbitmq 容器镜像,因此需要编辑镜像名称目录中的 values.yaml 文件中的以下部分。
imageregistryacr0ituru.azurecr.io
imagerepositoryrabbitmq
imagetag3.8.17
必须编辑Influxdb / grafana的每个镜像名称目录中的values.yaml文件。在容器启动后,需要添加所需的配置。
imagetag1.8.5
authenabledfalsegrafanaglobalimageRegistry””
imagetag8.0.6
adminpasswordadmin
对于 cp-helm-charts 的 values.yaml,将编辑以下部分(Confluent Platform 使用 6.0.0)。然而,仅使用 ACR 中注册的容器镜像来运行 Connector。另外,由于本次不使用 REST-Proxy,因此将其禁用。
cp-kafkaimageTag6.0.0
cp-schema-registryimageTag6.0.0
cp-kafka-restenabledfalse
cp-kafka-connectimageacr0ituru.azurecr.io/cp-connect-base
cp-kafka-connectimageTag6.0.0
cp-ksql-serverimageTag6.0.0
cp-control-centerimageTag6.0.0
应用环境的部署
创建命名空间
$ kubectl create namespace akscp01
干跑
$ helm install cp600mq ./rabbitmq --namespace akscp01 --dry-run
$ helm install cp600db ./influxdb --namespace akscp01 --dry-run
$ helm install cp600gf ./grafana --namespace akscp01 --dry-run
$ helm install cp600 ./cp-helm-charts --namespace akscp01 --dry-run
部署
$ helm install cp600mq ./rabbitmq --namespace akscp01
$ helm install cp600db ./influxdb --namespace akscp01
$ helm install cp600gf ./grafana --namespace akscp01
$ helm install cp600 ./cp-helm-charts --namespace akscp01
等待一会儿,直到所有的Pod启动需要几分钟。
※ 我想要使用雨伞图/子图定义 RabbitMQ / InfluxDB / Grafana ,但我还没有足够的技能……(泪)
显示已安装的图表
$ helm list -n akscp01
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
cp600 akscp01 1 2021-08-25 00:24:20.279592 +0900 JST deployed cp-helm-charts-0.6.1 1.0
cp600db akscp01 1 2021-08-24 23:54:35.304915 +0900 JST deployed influxdb-2.3.4 1.8.5
cp600gf akscp01 1 2021-08-25 00:14:28.04076 +0900 JST deployed grafana-6.1.6 8.0.6
cp600mq akscp01 1 2021-08-25 00:21:44.218668 +0900 JST deployed rabbitmq-8.19.1 3.8.17
确认Pod的状态
$ kubectl get pod -n akscp01
NAME READY STATUS RESTARTS AGE
cp600-cp-control-center-5b55c5676f-tn5w9 1/1 Running 3 3m46s
cp600-cp-kafka-0 2/2 Running 1 3m46s
cp600-cp-kafka-1 2/2 Running 0 3m8s
cp600-cp-kafka-2 2/2 Running 0 2m46s
cp600-cp-kafka-connect-764c9bd6cd-n84qw 2/2 Running 3 3m46s
cp600-cp-ksql-server-5948c75b8b-dnfcm 2/2 Running 4 3m46s
cp600-cp-schema-registry-5d79b8c57-r4r5p 2/2 Running 3 3m46s
cp600-cp-zookeeper-0 2/2 Running 0 3m46s
cp600-cp-zookeeper-1 2/2 Running 0 3m8s
cp600-cp-zookeeper-2 2/2 Running 0 2m32s
cp600db-influxdb-5ff9b5cfbc-zkvjb 1/1 Running 0 33m
cp600gf-grafana-59cff8f44b-rwlwx 1/1 Running 0 13m
cp600mq-rabbitmq-0 1/1 Running 0 6m22s
确认其他资源
$ kubectl get deployment -n akscp01
NAME READY UP-TO-DATE AVAILABLE AGE
cp600-cp-control-center 1/1 1 1 4m23s
cp600-cp-kafka-connect 1/1 1 1 4m23s
cp600-cp-ksql-server 1/1 1 1 4m23s
cp600-cp-schema-registry 1/1 1 1 4m23s
cp600db-influxdb 1/1 1 1 34m
cp600gf-grafana 1/1 1 1 14m
$ kubectl get service -n akscp01
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cp600-cp-control-center ClusterIP 10.0.58.233 <none> 9021/TCP 4m42s
cp600-cp-kafka ClusterIP 10.0.53.78 <none> 9092/TCP,5556/TCP 4m42s
cp600-cp-kafka-connect ClusterIP 10.0.140.5 <none> 8083/TCP,5556/TCP 4m42s
cp600-cp-kafka-headless ClusterIP None <none> 9092/TCP 4m42s
cp600-cp-ksql-server ClusterIP 10.0.103.176 <none> 8088/TCP,5556/TCP 4m42s
cp600-cp-schema-registry ClusterIP 10.0.85.39 <none> 8081/TCP,5556/TCP 4m42s
cp600-cp-zookeeper ClusterIP 10.0.111.229 <none> 2181/TCP,5556/TCP 4m42s
cp600-cp-zookeeper-headless ClusterIP None <none> 2888/TCP,3888/TCP 4m42s
cp600db-influxdb ClusterIP 10.0.104.94 <none> 8086/TCP,8088/TCP 34m
cp600gf-grafana ClusterIP 10.0.185.234 <none> 3000/TCP 14m
cp600mq-rabbitmq ClusterIP 10.0.14.56 <none> 5672/TCP,4369/TCP,25672/TCP,15672/TCP 7m19s
cp600mq-rabbitmq-headless ClusterIP None <none> 4369/TCP,5672/TCP,25672/TCP,15672/TCP 7m19s
$ kubectl get configmap -n akscp01
NAME DATA AGE
cp600-cp-kafka-connect-jmx-configmap 1 5m1s
cp600-cp-kafka-jmx-configmap 1 5m1s
cp600-cp-ksql-server-jmx-configmap 1 5m1s
cp600-cp-ksql-server-ksql-queries-configmap 1 5m1s
cp600-cp-schema-registry-jmx-configmap 1 5m1s
cp600-cp-zookeeper-jmx-configmap 1 5m1s
cp600gf-grafana-envvars 10 14m
cp600mq-rabbitmq-config 1 7m38s
kube-root-ca.crt 1 35m
预备设置的步骤
Kafka客户端Pod
为了配置 Kafka 主题,我们将准备一个客户端容器。我们将使用 cp-helm-charts/examples 中预先准备好的 kafka-client.yaml 文件,并进行以下更改。
apiVersion: v1
kind: Pod
metadata:
name: kafka-client
spec:
containers:
- name: kafka-client
image: confluentinc/cp-kafka:6.0.0
command:
- sh
- -c
- "exec tail -f /dev/null"
我将启动这个 Pod。
$ kubectl apply -f cp-helm-charts/examples/kafka-client.yaml -n akscp01
ksql-client的Pod
为了进行 ksql 的配置,我们需要准备一个客户端容器。将 cp-helm-charts/examples 中预先准备好的 ksql-demo.yaml 复制为 ksql-client.yaml,并进行以下修改。
apiVersion: v1
kind: Pod
metadata:
name: ksql-client
spec:
containers:
- name: ksql-client
image: confluentinc/cp-ksqldb-cli:6.0.0
command:
- sh
- -c
- "exec tail -f /dev/null"
我会启动这个Pod。
$ kubectl apply -f cp-helm-charts/examples/ksql-client.yaml -n akscp01
AKS Pod 的状态
完成以上步骤后,Pod 的状态如下:
$ kubectl get pod -n akscp01
NAME READY STATUS RESTARTS AGE
cp600-cp-control-center-5b55c5676f-tn5w9 1/1 Running 3 8m45s
cp600-cp-kafka-0 2/2 Running 1 8m45s
cp600-cp-kafka-1 2/2 Running 0 8m7s
cp600-cp-kafka-2 2/2 Running 0 7m45s
cp600-cp-kafka-connect-764c9bd6cd-n84qw 2/2 Running 3 8m45s
cp600-cp-ksql-server-5948c75b8b-dnfcm 2/2 Running 4 8m45s
cp600-cp-schema-registry-5d79b8c57-r4r5p 2/2 Running 3 8m45s
cp600-cp-zookeeper-0 2/2 Running 0 8m45s
cp600-cp-zookeeper-1 2/2 Running 0 8m7s
cp600-cp-zookeeper-2 2/2 Running 0 7m31s
cp600db-influxdb-5ff9b5cfbc-zkvjb 1/1 Running 0 38m
cp600gf-grafana-59cff8f44b-rwlwx 1/1 Running 0 18m
cp600mq-rabbitmq-0 1/1 Running 0 11m
kafka-client 1/1 Running 0 24s
ksql-client 1/1 Running 0 8s
现在,为容器应用程序设置所需的环境已经准备好了。下一步将在此环境中运行应用程序进行测试。
Pod的卸载方法(示例)
$ helm delete cp600 -n akscp01
release "cp600" uninstalled
命名空间的删除方法 de
$ kubectl delete namespace akscp01
namespace "akscp01" deleted
本课题的步骤信息
第一步:在AKS上構建Confluent Platform環境
第二步:在AKS上運行容器應用程式
请提供一些相关的信息。
请提供一些参考资料。
请给我一些可以参考的情报。
感谢您提供的信息。我已经参考了这些信息。推荐使用Helm v3。Helm已成为实际上的Kubernetes部署工具的标准工具。