チュートリアル: 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.0.53 以降が必要です。 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 を使用します。

アプリケーションの実行

  1. 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
    
  2. kubectl でポッドを表示して、デプロイが成功したことを確認します

    kubectl get pods
    

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

アプリケーションが実行されると、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 アドレスを開き、アプリケーションの動作を確認します。

    AKS Store サンプル アプリケーションのスクリーンショット。

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

Azure portal

Azure portal に移動してデプロイ情報を見つけます。

  1. Azure portal でお使いのリソース グループを開きます

  2. クラスターの Kubernetes サービスに移動します

  3. Kubernetes Resources の下の Services and Ingress を選択します

  4. ストアフロントの列に表示されている外部 IP をコピーします

  5. IP をブラウザーに貼り付け、ストア ページにアクセスします

    AKS Store サンプル アプリケーションのスクリーンショット。

次のステップ

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

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

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