チュートリアル: 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 名前空間とキューを作成する」を参照してください。

  1. az servicebus namespace create コマンドを使用して Azure Service Bus 名前空間を作成します。

    az servicebus namespace create -n $SB_NS -g $RG_NAME -l $LOC_NAME
    
  2. az servicebus queue create コマンドを使用して Azure Service Bus キューを作成します。

    az servicebus queue create -n orders -g $RG_NAME --namespace-name $SB_NS -g $RG_NAME
    
  3. 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
    
  4. 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 マニフェスト ファイルを更新する

  1. az aks get-credentials コマンドを使用して、クラスターに接続するように kubectl を構成します。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. テキスト エディターで aks-store-quickstart.yaml ファイルを開きます。

  3. 既存の 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 に格納します。

  4. 更新された 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
    

アプリケーションをテストする

サンプル注文を作成する

  1. kubectl get service コマンドを使用して、store-front サービスの外部 IP アドレスを取得します。

    kubectl get service store-front
    
  2. ブラウザーで、store-front サービスの外部 IP アドレスに移動します。

  3. 製品を選択し、[カートに追加] を選択して注文を作成します。

  4. [カート] を選択して注文を表示し、[チェックアウト] を選択します。

Azure Service Bus キューの注文を表示する

  1. Azure portal に移動し、前に作成した Azure Service Bus 名前空間を開きます。
  2. [エンティティ] で、[キュー] を選択し、[注文] キューを選択します。
  3. [注文] キューで、[Service Bus Explorer] を選択します。
  4. [最初からクイック表示] を選択して、送信した注文を表示します。

次のステップ

このチュートリアルでは、Azure Service Bus を使用してサンプル アプリケーションを更新してテストしました。 以下の方法を学習しました。

  • Azure Service Bus 名前空間とキューを作成します。
  • Azure Service Bus キューを使用するように Kubernetes マニフェスト ファイルを更新します。
  • 注文を作成し更新したアプリケーションをテストします。

次のチュートリアルでは、アプリケーションをスケーリングする方法について説明します。