チュートリアル: Azure Kubernetes Service (AKS) クラスターで PaaS サービスを使用する

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を使用して、このチュートリアルのコマンドに使用する次の環境変数を作成します。

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

    az servicebus namespace create --name $SB_NS --resource-group $RG_NAME --location $LOC_NAME
    

    コマンドが正常に完了し、名前空間の詳細が返されたら続行します。

  2. 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 tsv
    
  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
    

    マニフェストの更新手順に対して次の値を保存します。

    • <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 マニフェスト ファイルを更新する

  1. AKS デスクトップの [プロジェクト] に移動し、前のチュートリアルで作成したプロジェクト ( my-dev-frontend) を選択します。

  2. [ リソース ] タブを選択し、[ ワークロード>デプロイ: order-service] を選択します。 デプロイ、リソース、ワークロード、デプロイ、Order-service の編集を示すスクリーンショット。

  3. エディターを選択 します

  4. 既存の 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
            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
    

    エディターを使用して YAML デプロイを更新する方法を示すスクリーンショット。

    API キーなどの機密情報を Kubernetes マニフェスト ファイルに直接追加することは安全ではなく、誤ってコード リポジトリにコミットされる可能性があります。 この例では、わかりやすくするために追加します。 運用ワークロードの場合は、マネージド ID を使用して Azure Service Bus で認証するか、シークレットを Azure Key Vault に格納します。

  5. [保存] & [適用] を選択して、更新プログラムを保持します。

  6. 続行する前に、更新された order-service デプロイがワークロード ビューで正常な状態に達したことを確認します。

更新したアプリケーションをデプロイする

  1. 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
    
  2. 更新されたデプロイが実行されていることを確認します。

    kubectl get pods
    

アプリケーション ポッドが Running 状態になったら続行します。

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

サンプル注文を作成する

AKS デスクトップ

Resource>Network>Service: store-front>External IP に移動して、パブリック IP アドレスを取得します。

外部 IP アドレスの取得を示すスクリーンショット。

コマンドライン

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

    kubectl get service store-front
    

    EXTERNAL-IP<pending>場合は、少し待ってから、パブリック IP アドレスが表示されるまでコマンドをもう一度実行します。

  2. store-front を使用してブラウザーで http://<external-ip> サービスの外部 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 マニフェスト ファイルを更新します。
  • 注文を作成し更新したアプリケーションをテストします。

次のチュートリアルでは、AKS でアプリケーションをスケールする方法を学びます。