Kubernetes では、Azure Service Bus などの PaaS サービスを使用して、アプリケーションを開発および実行できます。
このチュートリアルでは、アプリケーションをテストするための Azure Service Bus 名前空間とキューを作成します。 以下の方法を学びます:
- Azure Service Bus 名前空間とキューを作成します。
- Azure Service Bus キューを使用するように Kubernetes マニフェスト ファイルを更新します。
- 注文を作成し更新したアプリケーションをテストします。
開始する前に
前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを Azure Container Registry にアップロードし、Kubernetes クラスターを作成して、アプリケーションをデプロイしました。 このチュートリアルを完了するには、事前に作成した aks-store-quickstart.yaml Kubernetes マニフェスト ファイルが必要です。 このファイル ダウンロードは、前のチュートリアルでは、アプリケーションのソース コードに含まれていました。 リポジトリのクローンが作成されていること、およびディレクトリがクローンされたリポジトリに変更されていることを確認します。 これらのステップを完了しておらず、順番に進めたい場合は、「チュートリアル 1 - AKS 用のアプリケーションを準備する」から始めます。
このチュートリアルでは、課金対象のAzure Service Bus リソースを作成します。 これらの手順を完了するには、Service Bus リソースを作成および管理し、共同作成者や所有者などのリソース グループ内の AKS ワークロードを更新できる ID を使用します。
このチュートリアルでは、 AKS デスクトップをインストールする必要があります。
環境変数を作成する
Azure CLIを使用して、このチュートリアルのコマンドに使用する次の環境変数を作成します。
LOC_NAME=westus2 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 名前空間とキューを作成する」を参照してください。
このフローでは、order-serviceこのセクションで作成したorders承認規則とキーを使用して、sender キューにメッセージを送信します。
Azure CLIを使用して、このチュートリアルのコマンドに使用する次の環境変数を作成します。
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 show --name orders --resource-group $RG_NAME --namespace-name $SB_NS --query name -o tsvaz 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 Sendaz 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マニフェストの更新手順に対して次の値を保存します。
-
<REPLACE_WITH_YOUR_ACR_NAME>: 前のチュートリアルで使用した Azure Container Registry の名前。 -
<REPLACE_WITH_YOUR_SB_NS_HOSTNAME>:$SB_NS.servicebus.windows.net。 -
<REPLACE_WITH_YOUR_SB_SENDER_PASSWORD>: コマンド出力のprimaryKey値。
-
Kubernetes マニフェスト ファイルを更新する
AKS デスクトップの [プロジェクト] に移動し、前のチュートリアルで作成したプロジェクト (
my-dev-frontend) を選択します。[ リソース ] タブを選択し、[ ワークロード>デプロイ: order-service] を選択します。
エディターを選択 します。
既存の
rabbitmqStatefulSet、ConfigMap、および Service セクションを削除します。 既存のorder-serviceDeployment セクションを次の内容に置き換えます。 コンテンツをコピーして貼り付けます。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 startupProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 20 periodSeconds: 10 readinessProbe: httpGet: path: /health port: 3000 failureThreshold: 3 initialDelaySeconds: 3 periodSeconds: 5 livenessProbe: httpGet: path: /health port: 3000 failureThreshold: 5 initialDelaySeconds: 3 periodSeconds: 3
注
API キーなどの機密情報を Kubernetes マニフェスト ファイルに直接追加することは安全ではなく、誤ってコード リポジトリにコミットされる可能性があります。 この例では、わかりやすくするために追加します。 運用ワークロードの場合は、マネージド ID を使用して Azure Service Bus で認証するか、シークレットを Azure Key Vault に格納します。
[保存] & [適用] を選択して、更新プログラムを保持します。
続行する前に、更新された
order-serviceデプロイがワークロード ビューで正常な状態に達したことを確認します。
更新したアプリケーションをデプロイする
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 pods
アプリケーション ポッドが Running 状態になったら続行します。
アプリケーションをテストする
サンプル注文を作成する
AKS デスクトップ
Resource>Network>Service: store-front>External IP に移動して、パブリック IP アドレスを取得します。
コマンドライン
store-frontコマンドを使用して、kubectl get serviceサービスの外部 IP アドレスを取得します。kubectl get service store-frontEXTERNAL-IPが<pending>場合は、少し待ってから、パブリック IP アドレスが表示されるまでコマンドをもう一度実行します。store-frontを使用してブラウザーでhttp://<external-ip>サービスの外部 IP アドレスに移動します。製品を選択し、[カートに追加] を選択して注文を作成します。
[カート] を選択して注文を表示し、[チェックアウト] を選択します。
Azure Service Bus キューの注文を表示する
- Azure portal に移動し、前に作成した Azure Service Bus 名前空間を開きます。
- [エンティティ] で、[キュー] を選択し、[注文] キューを選択します。
- [注文] キューで、[Service Bus Explorer] を選択します。
- [最初からクイック表示] を選択して、送信した注文を表示します。
次のステップ
このチュートリアルでは、Azure Service Bus を使用してサンプル アプリケーションを更新してテストしました。 以下の方法を学習しました。
- Azure Service Bus 名前空間とキューを作成します。
- Azure Service Bus キューを使用するように Kubernetes マニフェスト ファイルを更新します。
- 注文を作成し更新したアプリケーションをテストします。
次のチュートリアルでは、AKS でアプリケーションをスケールする方法を学びます。