【新規】 Azure Kubernetes Service (AKS) に Helm を使用して新規にアプリケーションをインストールしてみました


概要

この記事 を参考にさせていただき、Helm v3 をちょっとだけ理解するため、AKSへ新規でコンテナアプリケーション(RabbitMQ)を起動させる手順をまとめました。

ローカル環境

macOS Big Sur 11.3
python 3.8.3
helm 3.6.3

事前準備

この記事 を参考にして、AKS と ACR を構築し、AKSクラスター上で動く Node の確認まで完了していること。


Helm 準備

Helm のインストール

Helm のインストールとバージョンの確認

$ brew install kubernetes-helm

$ helm version   
version.BuildInfo{Version:"v3.6.3", GitCommit:"d506314abfb5d21419df8c7e7e68012379db2354", GitTreeState:"dirty", GoVersion:"go1.16.5"}

stable のリポジトリの追加と確認(サポート終了してますが、、、)

$ helm repo add stable https://charts.helm.sh/stable
"stable" has been added to your repositories


$ helm repo list
NAME    URL
stable  https://charts.helm.sh/stable

リポジトリの追加と確認(こちらが正式)

Helm Hub から RabbitMQ の該当する Helm Chart 情報を見つけます

レポジトリに追加します

$ helm repo add bitnami-azure https://marketplace.azurecr.io/helm/v1/repo
"bitnami-azure" has been added to your repositories


$ helm repo list
NAME            URL                                        
stable          https://charts.helm.sh/stable              
bitnami-azure   https://marketplace.azurecr.io/helm/v1/repo

Helm チャートの検索

$ helm search repo rabbitmq

NAME                                CHART VERSION   APP VERSION DESCRIPTION                                       
bitnami-azure/rabbitmq              8.19.1          3.8.19      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,...

アプリケーションのデプロイ(bitnami-azure を使用しました)

namespace の作成

$ kubectl create namespace helm-mq01

dry-run

$ helm install mqtest01 stable/rabbitmq --namespace helm-mq01 --dry-run
   or
$ helm install mqtest01 bitnami-azure/rabbitmq --namespace helm-mq01 --dry-run

デプロイ

$ helm install mqtest01 stable/rabbitmq --namespace helm-mq01
   or
$ helm install mqtest01 bitnami-azure/rabbitmq --namespace helm-mq01

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

$ helm list -n helm-mq01

NAME        NAMESPACE   REVISION    UPDATED                             STATUS      CHART           APP VERSION
mqtest01    helm-mq01   1           2021-08-05 17:39:14.6732 +0900 JST  deployed    rabbitmq-8.19.1 3.8.19     

Pod の確認

$ kubectl get pod -n helm-mq01

NAME                  READY   STATUS    RESTARTS   AGE
mqtest01-rabbitmq-0   1/1     Running   0          2m17s

その他リソースの確認

$ kubectl get deployment -n helm-mq01
$ kubectl get service -n helm-mq01
$ kubectl get configmap -n helm-mq01

アプリケーションの動作確認

NOTES での手順の確認

NOTES部分に基本的な使い方が記載されてます

$ helm install mqtest01 bitnami-azure/rabbitmq --namespace helm-mq01

NOTES:
** Please be patient while the chart is being deployed **

Credentials:
    echo "Username      : user"
    echo "Password      : $(kubectl get secret --namespace helm-mq01 mqtest01-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)"
    echo "ErLang Cookie : $(kubectl get secret --namespace helm-mq01 mqtest01-rabbitmq -o jsonpath="{.data.rabbitmq-erlang-cookie}" | base64 --decode)"

Note that the credentials are saved in persistent volume claims and will not be changed upon upgrade or reinstallation unless the persistent volume claim has been deleted. If this is not the first installation of this chart, the credentials may not be valid.
This is applicable when no passwords are set and therefore the random password is autogenerated. In case of using a fixed password, you should specify it when upgrading.
More information about the credentials may be found at https://docs.bitnami.com/general/how-to/troubleshoot-helm-chart-issues/#credential-errors-while-upgrading-chart-releases.

RabbitMQ can be accessed within the cluster on port  at mqtest01-rabbitmq.helm-mq01.svc.

To access for outside the cluster, perform the following steps:

To Access the RabbitMQ AMQP port:

    echo "URL : amqp://127.0.0.1:5672/"
    kubectl port-forward --namespace helm-mq01 svc/mqtest01-rabbitmq 5672:5672

To Access the RabbitMQ Management interface:

    echo "URL : http://127.0.0.1:15672/"
    kubectl port-forward --namespace helm-mq01 svc/mqtest01-rabbitmq 15672:15672

NOTES 手順の実行

パスワードの取得

$ echo "Password : $(kubectl get secret --namespace helm-mq01 mqtest01-rabbitmq -o jsonpath="{.data.rabbitmq-password}" | base64 --decode)"

Password : 1NB1n3fbsI

ポートフォワーディングの設定

$ kubectl port-forward --namespace helm-mq01 svc/mqtest01-rabbitmq 15672:15672

Forwarding from 127.0.0.1:15672 -> 15672
Forwarding from [::1]:15672 -> 15672

※ポートフォワーディングを中止する場合、CTRL+C を押します

アプリケーションへのアクセス

ブラウザで http://localhost:15672 にアクセスします。 RabbitMQのログイン画面が表示されます。
Username : user / Password : 1NB1n3fbsI を入力し、承認後 Ovweview 画面が表示され RabbitMQ 3.8.19 の管理コンソールにアクセスできました。

アプリケーションのアンインストール

$ helm uninstall mqtest01 -n helm-mq01
   or
$ helm delete mqtest01 -n helm-mq01
release "mqtest01" uninstalled

namespace の削除

$ kubectl delete namespace helm-mq01
namespace "helm-mq01" deleted

まとめ

Helm v3 を使用して Helm repository のチャートを利用することにより、AKSで新規にアプリケーションを稼働せさることを確認しました。

参考情報

以下の情報を参考にさせていただきました。感謝申し上げます。
Helm v3のすゝめ