Azure Service Busと連携~Kubernetesのチュートリアルをはじめから丁寧に③~
今回取り組むチュートリアルはこちら
前回はAKSにコンテナをデプロイしてみました。今回はAzure Service BusというPaaSと連携させてみます。
Azure Service Busとは何ぞやという事ですが、キュー形式のデータを扱うデータベースになります。前回まではrabitqtというオープンソースのものを使用していたものをAzureサービスに置き換えるといったイメージでしょうか。そう、Mysqlのイメージを使って自前でDBコンテナサーバを立てるのではなく、Azure Database for Mysqlを使うイメージです。
Azure Service Busを作成してデプロイする
では早速ポータルからservice busを作っていきます。(薄々感じていたのですが、ポータル画面って変化がくそ早いので、すぐこの内容が陳腐化するんですよね。じゃあCLIでやれよって話だと思うんですけど、CLIって正直何やってるか理解しにくいので勉強として適しているかというと微妙だと思うんですよ。ジレンマってやつすかね)
まず名前空間の作成。まあデフォルトでいいでしょう。ちなみにCLIでは以下のようなコマンドで実行しています
az servicebus namespace create --name 名前 --resource-group リソースグループ --location デプロイロケーション
リソースが作成出来たらキューの作成をします。ちなみにコマンドでは以下の通りになります。
az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
キューの承認規則を作成します。詳しくないのでよく知りませんが、アクセスキーをどの権限で発行するかということだと思います。CLIでは送信専用なのでこちらもそれに合わせます
az servicebus queue authorization-rule create --name sender --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --rights Send/
作成した接続情報(プライマリーキー)をコピペします。これはAKSデプロイ時にService Busへアクセス出来るようにするためで、このあたりはDBやストレージを扱うと必ず出てくる処理ですね(モザイクめんどうだったので主キーのとこでカットしました。ほんとはこの下に記載されています)
AKSにデプロイする
Service Busの準備ができたので、AKSにデプロイしているコンテナを更新します。
前回の記事で使ったデプロイ用yamlのうち、rabbitmq StatefulSet、ConfigMap、Service セクションを削除し、order-serviceイメージを以下のコードに置き換えます。パスワードはService busのプライマリーキーの事です。
流石にこれからはポータル画面から実行するのは厳しくなったのでkubectlコマンドを使います。
kubectl apply -f aks-store-quickstart.yaml
あ、ちなみにkubectlのインストール方法はチュートリアルの中に記載されています。最初はポータル画面からなんとか更新作業が出来ないかと思ったのですが、思った以上に関連サービスが多く、中途半端にやるとクラッシュするので諦めてコマンドからやることにしました。
で、再びサイトを開いて注文をします。
選択してオーダーボタンを押します。一方で、Azure Service busを見てみると
このように注文した内容がService busに格納されています。
という事で、AKSとAzure Service busの連携についてでした。次はスケーリングを行います。