0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

#1 Azure Kubernetes Service (AKS) で Confluent Platform の Helm Chart を使用してアプリケーションを動かしてみました

Last updated at Posted at 2021-08-30

概要

この記事 を参考にさせていただき、ちょっとだけ理解したつもりの Helm v3 を使って、Confuent Platform の Helm Chart と ACRにあるコンテナイメージ(rabbitmq)から AKS でコンテナアプリケーションを稼働させる手順をまとめました

ベースとなるDockerコンテナアプリケーションは、この記事達 となり、これをAKS上で稼働させます。
image.png

以下の2つのステップで上記内容を順次説明します。今回は STEP-1 について説明します。
STEP-1.AKS上での Confluent Platform 環境構築
STEP-2.AKS上でのコンテナアプリケーションの実行

ローカル環境

macOS Big Sur 11.3
python 3.8.3
helm 3.6.3

事前準備

  1. この記事 を参考にして、AKS と ACR を構築し、AKSクラスター上で動く Node の確認まで完了していること。
  2. この記事 を参考にして、ACRへコンテナイメージをプッシュしておきます。
  3. この記事 にある、「Helm 準備」が完了していること。

Helm Chart の作成(編集)

ACRログインサーバーアドレスの取得

$ az acr list --resource-group $ACR_RES_GROUP --query "[].{acrLoginServer:loginServer}" --output tsv
acr0ituru.azurecr.io

リポジトリの追加と確認

Confluent Platform は github から Helm Chart 情報を入手します。
Helm Hub から RabbitMQ / InfluxDB / Grafana の該当する Helm Chart 情報を見つけ、レポジトリに追加します。
image.png

$ 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 の検索

confluentinc / 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 Chrat の Pull

cp-helm-charts / rabbitmq / Influxdb / grafana の Helm Chart を Pull します。

$ 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 の以下の部分を編集します

Chart タグ 項目
rabbitmq global imageRegistry acr0ituru.azurecr.io
image registry acr0ituru.azurecr.io
image repository rabbitmq
image tag 3.8.17

Influxdb / grafana の各イメージ名称のディレクトリ内にある values.yaml については以下の部分を編集します。コンテナ起動後必要な設定を入れる必要があります。

Chart タグ 項目
influxdb global imageRegistry ""
image tag 1.8.5
auth enabled false
grafana global imageRegistry ""
image tag 8.0.6
admin password admin

cp-helm-charts の values.yaml については以下の部分を編集します(Confluent Platform は 6.0.0 を使用します)。ただし、Connector のみACRに登録されているコンテナイメージを使用します。また、今回は REST-Proxy を使用しないので無効化にしておきます

Chart タグ 項目
cp-helm-charts cp-zookeeper imageTag 6.0.0
cp-kafka imageTag 6.0.0
cp-schema-registry imageTag 6.0.0
cp-kafka-rest enabled false
cp-kafka-connect image acr0ituru.azurecr.io/cp-connect-base
cp-kafka-connect imageTag 6.0.0
cp-ksql-server imageTag 6.0.0
cp-control-center imageTag 6.0.0

アプリケーション環境のデプロイ

namespace の作成

$ kubectl create namespace akscp01

dry-run

$ 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 を アンブレラチャート/サブチャート で定義したかったのですが、そこまでの技量がまだなく、、、(涙)

インストール済み Chart の表示

$ 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-client Pod

kafka topic の設定を行うためのクライントのコンテナを用意します。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

namespace の削除方法

$ kubectl delete namespace akscp01
namespace "akscp01" deleted

本課題のステップ情報

STEP-1.AKS上での Confluent Platform 環境構築
STEP-2.AKS上でのコンテナアプリケーションの実行

参考情報

以下の情報を参考にさせていただきました。感謝申し上げます。
Helm v3のすゝめ
事実上の標準ツールとなっているKubernetes向けデプロイツール「Helm」入門

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?