チュートリアル: Azure Kubernetes Service (AKS) にアプリケーションをデプロイする

Kubernetes には、コンテナー化されたアプリケーション用の分散プラットフォームが用意されています。 独自のアプリケーションとサービスをビルドして Kubernetes クラスターにデプロイし、クラスターで可用性と接続性を管理できるようにします。

このチュートリアル (4/7) では、サンプル アプリケーションを Kubernetes クラスターにデプロイします。 以下の方法について説明します。

  • Kubernetes マニフェスト ファイルを更新する。
  • Kubernetes でアプリケーションを実行する。
  • アプリケーションをテストします。

ヒント

AKS では、構成管理に次の方法を使用できます。

開始する前に

前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを Azure Container Registry にアップロードして、Kubernetes クラスターを作成しました。 このチュートリアルを完了するには、事前に作成した aks-store-quickstart.yaml Kubernetes マニフェスト ファイルが必要です。 このファイル ダウンロードは、前のチュートリアルでは、アプリケーションのソース コードに含まれていました。 リポジトリのクローンが作成されていること、およびディレクトリがクローンされたリポジトリに変更されていることを確認します。 これらのステップを完了しておらず、順番に進めたい場合は、「チュートリアル 1 - AKS 用のアプリケーションを準備する」から始めます。

このチュートリアルには、Azure CLI バージョン 2.34.1 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

マニフェスト ファイルを更新する

これらのチュートリアルでは、Azure Container Registry (ACR) インスタンスがサンプル アプリケーション用のコンテナー イメージを格納しています。 アプリケーションをデプロイするには、Kubernetes マニフェスト ファイル内のイメージ名を、ACR ログイン サーバー名が含まれるように更新する必要があります。

  1. az acr list コマンドを使用してログイン サーバーのアドレスを取得し、ログイン サーバーのクエリを実行します。

    az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
    
  2. クローンされた aks-store-demo ディレクトリ内にいることを確認し、テキスト エディター (vi など) でマニフェスト ファイルを開きます。

    vi aks-store-quickstart.yaml
    
  3. ghcr.io/azure-samples を ACR ログイン サーバー名に置き換えて、コンテナーの image プロパティを更新します。

    containers:
    ...
    - name: order-service
     image: <acrName>.azurecr.io/aks-store-demo/order-service:latest
    ...
    - name: product-service
     image: <acrName>.azurecr.io/aks-store-demo/product-service:latest
    ...
    - name: store-front
     image: <acrName>.azurecr.io/aks-store-demo/store-front:latest
    ...
    
  4. ファイルを保存して閉じます。 vi では、:wq を使用します。

アプリケーションの配置

  • kubectl apply コマンドを使用してアプリケーションをデプロイします。これにより、マニフェスト ファイルが解析され、定義された Kubernetes オブジェクトが作成されます。

    kubectl apply -f aks-store-quickstart.yaml
    

    次の出力例では、AKS クラスター内で正常に作成されたリソースが示されています。

    deployment.apps/rabbitmq created
    service/rabbitmq created
    deployment.apps/order-service created
    service/order-service created
    deployment.apps/product-service created
    service/product-service created
    deployment.apps/store-front created
    service/store-front created
    

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

アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。

  1. kubectl get service コマンドと --watch 引数を使用して、進行状況を監視します。

    kubectl get service store-front --watch
    

    最初に、ストア フロント サービスの EXTERNAL-IP は、保留中として表示されます。

    store-front   LoadBalancer   10.0.34.242   <pending>     80:30676/TCP   5s
    
  2. EXTERNAL-IP アドレスが "保留中" から実際のパブリック IP アドレスに変わったら、CTRL-C を使って kubectl ウォッチ プロセスを停止します。

    次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。

    store-front   LoadBalancer   10.0.34.242   52.179.23.131   80:30676/TCP   67s
    
  3. Web ブラウザーでサービスの外部 IP アドレスを開き、アプリケーションの動作を確認します。

アプリケーションが読み込まれない場合、イメージ レジストリの承認に問題がある可能性があります。 コンテナーのステータスを表示するには、kubectl get pods コマンドを使用します。 コンテナー イメージをプルできない場合は、「Azure Kubernetes Service から Azure Container Registry の認証を受ける」を参照してください。

次のステップ

このチュートリアルでは、サンプルの Azure アプリケーションを AKS の Kubernetes クラスターにデプロイしました。 以下の方法を学習しました。

  • Kubernetes マニフェスト ファイルを更新する。
  • Kubernetes でアプリケーションを実行する。
  • アプリケーションをテストします。

次のチュートリアルでは、Kubernetes のステートフル ワークロードに PaaS サービスを使用する方法について説明します。