チュートリアル: Azure Kubernetes Service (AKS) クラスターで PaaS サービスを使用する
Kubernetes では、Azure Service Bus などの PaaS サービスを使用して、アプリケーションを開発および実行できます。
このチュートリアルでは、7 部構成の 5 番目で、アプリケーションをテストするための Azure Service Bus 名前空間とキューを作成します。 以下の方法について説明します。
- Azure Service Bus 名前空間とキューを作成します。
- Azure Service Bus キューを使用するように Kubernetes マニフェスト ファイルを更新します。
- 注文を作成し更新したアプリケーションをテストします。
開始する前に
前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを Azure Container Registry にアップロードし、Kubernetes クラスターを作成して、アプリケーションをデプロイしました。 このチュートリアルを完了するには、事前に作成した aks-store-quickstart.yaml
Kubernetes マニフェスト ファイルが必要です。 このファイル ダウンロードは、前のチュートリアルでは、アプリケーションのソース コードに含まれていました。 リポジトリのクローンが作成されていること、およびディレクトリがクローンされたリポジトリに変更されていることを確認します。 これらのステップを完了しておらず、順番に進めたい場合は、「チュートリアル 1 - AKS 用のアプリケーションを準備する」から始めます。
このチュートリアルには、Azure CLI バージョン 2.34.1 以降が必要です。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
環境変数を作成する
このチュートリアルのコマンドに使用する次の環境変数を作成します。
LOC_NAME=eastus RAND=$RANDOM RG_NAME=myResourceGroup AKS_NAME=myAKSCluster SB_NS=sb-store-demo-$RAND
Azure Service Bus 名前空間とキューを作成する
前のチュートリアルでは、RabbitMQ コンテナーを使用して、order-service
によって送信された注文を格納しました。 このチュートリアルでは、Azure Service Bus 名前空間を使用して、アプリケーション内の Service Bus リソースのスコープ コンテナーを提供します。 また、Azure Service Bus キューを使用して、アプリケーション コンポーネント間でメッセージを送受信します。 Azure Service Bus の詳細については、「Azure Service Bus 名前空間とキューを作成する」を参照してください。
az servicebus namespace create
コマンドを使用して Azure Service Bus 名前空間を作成します。az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
az servicebus queue create
コマンドを使用して Azure Service Bus キューを作成します。az servicebus queue create --name orders --resource-group $RG_NAME --namespace-name $SB_NS
az servicebus queue authorization-rule create
コマンドを使用して Azure Service Bus 認可規則を作成します。az servicebus queue authorization-rule create \ --name sender \ --namespace-name $SB_NS \ --resource-group $RG_NAME \ --queue-name orders \ --rights Send
az servicebus namespace show
コマンドとaz servicebus queue authorization-rule keys list
コマンドを使用して、後で使用するために Azure Service Bus の資格情報を取得します。az servicebus namespace show --name $SB_NS --resource-group $RG_NAME --query name -o tsv az servicebus queue authorization-rule keys list --namespace-name $SB_NS --resource-group $RG_NAME --queue-name orders --name sender --query primaryKey -o tsv
Kubernetes マニフェスト ファイルを更新する
az aks get-credentials
コマンドを使用して、クラスターに接続するようにkubectl
を構成します。az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
テキスト エディターで
aks-store-quickstart.yaml
ファイルを開きます。既存の
rabbitmq
StatefulSet、ConfigMap、Service セクションを削除し、既存のorder-service
Deployment セクションを次の内容に置き換えます。apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 1 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: nodeSelector: "kubernetes.io/os": linux containers: - name: order-service image: <REPLACE_WITH_YOUR_ACR_NAME>.azurecr.io/aks-store-demo/order-service:latest ports: - containerPort: 3000 env: - name: ORDER_QUEUE_HOSTNAME value: "<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>" # Example: sb-store-demo-123456.servicebus.windows.net - name: ORDER_QUEUE_PORT value: "5671" - name: ORDER_QUEUE_TRANSPORT value: "tls" - name: ORDER_QUEUE_USERNAME value: "sender" - name: ORDER_QUEUE_PASSWORD value: "<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>" - name: ORDER_QUEUE_NAME value: "orders" - name: FASTIFY_ADDRESS value: "0.0.0.0" resources: requests: cpu: 1m memory: 50Mi limits: cpu: 75m memory: 128Mi
Note
API キーなどの機密情報を Kubernetes マニフェスト ファイルに直接追加することは安全ではなく、誤ってコード リポジトリにコミットされる可能性があります。 ここでは、わかりやすくするために追加しました。 運用ワークロードの場合は、マネージド ID を使用して Azure Service Bus で認証するか、シークレットを Azure Key Vault に格納します。
更新された
aks-store-quickstart.yaml
ファイルを保存して閉じます。
更新したアプリケーションをデプロイする
kubectl apply
コマンドを使用して、更新されたアプリケーションをデプロイします。kubectl apply -f aks-store-quickstart.yaml
次の出力例では、正常に更新されたリソースが示されています。
deployment.apps/order-service configured service/order-service unchanged deployment.apps/product-service unchanged service/product-service unchanged deployment.apps/store-front configured service/store-front unchanged
アプリケーションをテストする
サンプル注文を作成する
kubectl get service
コマンドを使用して、store-front
サービスの外部 IP アドレスを取得します。kubectl get service store-front
http://<external-ip>
を使用してブラウザーでstore-front
サービスの外部 IP アドレスに移動します。製品を選択し、[カートに追加] を選択して注文を作成します。
[カート] を選択して注文を表示し、[チェックアウト] を選択します。
Azure Service Bus キューの注文を表示する
- Azure portal に移動し、前に作成した Azure Service Bus 名前空間を開きます。
- [エンティティ] で、[キュー] を選択し、[注文] キューを選択します。
- [注文] キューで、[Service Bus Explorer] を選択します。
- [最初からクイック表示] を選択して、送信した注文を表示します。
次のステップ
このチュートリアルでは、Azure Service Bus を使用してサンプル アプリケーションを更新してテストしました。 以下の方法を学習しました。
- Azure Service Bus 名前空間とキューを作成します。
- Azure Service Bus キューを使用するように Kubernetes マニフェスト ファイルを更新します。
- 注文を作成し更新したアプリケーションをテストします。
次のチュートリアルでは、アプリケーションをスケーリングする方法について説明します。
Azure Kubernetes Service