チュートリアル: Azure Kubernetes Service (AKS) にアプリケーションをデプロイする
[アーティクル] 2024/08/02
25 人の共同作成者
フィードバック
この記事の内容
開始する前に
マニフェスト ファイルを更新する
アプリケーションの実行
アプリケーションをテストする
リソースをクリーンアップする
次のステップ
さらに 2 個を表示
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 PowerShell バージョン 5.9.0 以降が必要です。 Get-InstalledModule -Name Az
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードするには、「Azure PowerShell のインストール 」に関するページを参照してください。
このチュートリアルでは、Azure Developer CLI (azd
) バージョン 1.5.1 以降が必要です。 azd version
を使用して、お使いのバージョンを確認します。 インストールまたはアップグレードが必要な場合は、「Azure Developer 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
...
ファイルを保存して閉じます。
Get-AzContainerRegistry
コマンドレットを使用してログイン サーバーのアドレスを取得し、ログイン サーバーのクエリを実行します。 <acrName>
は必ず ACR インスタンスの名前に置き換えてください。
(Get-AzContainerRegistry -ResourceGroupName myResourceGroup -Name $ACRNAME).LoginServer
クローンされた 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
...
ファイルを保存して閉じます。
azd
はテンプレート内にあるため、コンテナー レジストリのステップは必要ありません。
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
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
azd
でのデプロイは、フックによって表される複数のステージに分割されます。 azd
では、既定ですべてのフックを使用してデプロイされます。
azd up
コマンドを使用して、アプリケーションをデプロイします。
azd up
Azure リソースをホストするサブスクリプションとリージョンを選択します。
? Select an Azure Subscription to use: [Use arrows to move, type to filter]
> 1. My Azure Subscription (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
Select an Azure location to use: [Use arrows to move, type to filter]
> 43. (US) East US 2 (eastus2)
AZURE_LOCATION
と AZURE_SUBSCRIPTION_ID
の変数は、.azure/<your-env-name>/.env
ファイル内で更新できます。
アプリケーションが実行されると、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 に移動してデプロイ情報を見つけます。
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 サービスを使用する方法について説明します。