チュートリアル: Azure Kubernetes Service (AKS) にアプリケーションをデプロイする
Kubernetes には、コンテナー化されたアプリケーション用の分散プラットフォームが用意されています。 独自のアプリケーションとサービスをビルドして Kubernetes クラスターにデプロイし、クラスターで可用性と接続性を管理できるようにします。
このチュートリアル (4/7) では、サンプル アプリケーションを Kubernetes クラスターにデプロイします。 以下の方法について説明します。
- Kubernetes マニフェスト ファイルを更新する。
- Kubernetes でアプリケーションを実行する。
- アプリケーションをテストします。
ヒント
AKS では、構成管理に次の方法を使用できます。
GitOps: クラスターの状態の宣言をクラスターに自動的に適用できるようになります。 GitOps を使用して AKS クラスターでアプリケーションをデプロイする方法については、Flux v2 を使用した GitOps チュートリアルの Azure Kubernetes Service クラスターの前提条件に関する記事を参照してください。
DevOps: 継続的インテグレーション (CI) と継続的デリバリー (CD) でビルド、テスト、およびデプロイを行うことができます。 DevOps を使用して AKS クラスターでアプリケーションをデプロイする方法の例については、「Azure Pipelines を使用して AKS にビルドしてデプロイする」または「Kubernetes にデプロイするための GitHub Actions」を参照してください。
開始する前に
前のチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、そのイメージを 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 ログイン サーバー名が含まれるように更新する必要があります。
az acr list
コマンドを使用してログイン サーバーのアドレスを取得し、ログイン サーバーのクエリを実行します。az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
クローンされた aks-store-demo ディレクトリ内にいることを確認し、テキスト エディターで
aks-store-quickstart.yaml
マニフェスト ファイルを開きます。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 ...
ファイルを保存して閉じます。
アプリケーションの実行
kubectl apply
コマンドを使用してアプリケーションをデプロイします。これにより、マニフェスト ファイルが解析され、定義された Kubernetes オブジェクトが作成されます。kubectl apply -f aks-store-quickstart.yaml
次の出力例では、AKS クラスター内で正常に作成されたリソースが示されています。
statefulset.apps/rabbitmq created configmap/rabbitmq-enabled-plugins 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
kubectl get pods
コマンドでポッドを表示して、デプロイが成功したことを確認します。kubectl get pods
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。
コマンド ライン
kubectl get service
コマンドと--watch
引数を使用して、進行状況を監視します。kubectl get service store-front --watch
最初は、
store-front
サービスのEXTERNAL-IP
は<pending>
として表示されます。store-front LoadBalancer 10.0.34.242 <pending> 80:30676/TCP 5s
EXTERNAL-IP
アドレスが<pending>
からパブリック IP アドレスに変わったら、CTRL-C
を使用してkubectl
監視プロセスを停止します。次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
store-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s
Web ブラウザーを開いてサービスの外部 IP アドレス
http://<external-ip>
に移動し、アプリケーションの動作を確認します。
アプリケーションが読み込まれない場合、イメージ レジストリの承認に問題がある可能性があります。 コンテナーのステータスを表示するには、kubectl get pods
コマンドを使用します。 コンテナー イメージをプルできない場合は、「Azure Kubernetes Service から Azure Container Registry の認証を受ける」を参照してください。
Azure portal
Azure portal に移動してデプロイ情報を見つけます。
AKS クラスター リソースに移動します。
サービス メニューの [Kubernetes リソース] で、[サービスとイングレス] を選択します。
store-front
サービスの列に表示されている外部 IP をコピーします。IP をブラウザーに貼り付け、ストア ページにアクセスします。
リソースをクリーンアップする
アプリケーションの機能を検証したので、アプリケーションからクラスターを削除できるようになりました。 次のチュートリアルでは、アプリケーションを再度デプロイします。
kubectl delete
コマンドを使用して、コンテナー インスタンスとリソースを停止して削除します。kubectl delete -f aks-store-quickstart.yaml
kubectl get pods
コマンドを使用して、すべてのアプリケーション ポッドが削除されていることを確認します。kubectl get pods
次のステップ
このチュートリアルでは、サンプルの Azure アプリケーションを AKS の Kubernetes クラスターにデプロイしました。 以下の方法を学習しました。
- Kubernetes マニフェスト ファイルを更新する。
- Kubernetes でアプリケーションを実行する。
- アプリケーションをテストします。
次のチュートリアルでは、Kubernetes のステートフル ワークロードに PaaS サービスを使用する方法について説明します。
Azure Kubernetes Service