チュートリアル: 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 ディレクトリ内にいることを確認し、テキスト エディター (
vi
など) でマニフェスト ファイルを開きます。vi 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 ...
ファイルを保存して閉じます。
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
kubectl
でポッドを表示して、デプロイが成功したことを確認しますkubectl get pods
アプリケーションをテストする
アプリケーションが実行されると、Kubernetes サービスによってアプリケーション フロント エンドがインターネットに公開されます。 このプロセスが完了するまでに数分かかることがあります。
コマンド ライン
kubectl get service
コマンドと--watch
引数を使用して、進行状況を監視します。kubectl get service store-front --watch
最初に、ストア フロント サービスの
EXTERNAL-IP
は、保留中として表示されます:store-front LoadBalancer 10.0.34.242 <pending> 80:30676/TCP 5s
EXTERNAL-IP
アドレスが "保留中" から実際のパブリック IP アドレスに変わったら、CTRL-C
を使ってkubectl
ウォッチ プロセスを停止します。次の出力例は、サービスに割り当てられている有効なパブリック IP アドレスを示しています。
store-front LoadBalancer 10.0.34.242 52.179.23.131 80:30676/TCP 67s
Web ブラウザーでサービスの外部 IP アドレスを開き、アプリケーションの動作を確認します。
アプリケーションが読み込まれない場合、イメージ レジストリの承認に問題がある可能性があります。 コンテナーのステータスを表示するには、kubectl get pods
コマンドを使用します。 コンテナー イメージをプルできない場合は、「Azure Kubernetes Service から Azure Container Registry の認証を受ける」を参照してください。
Azure portal
Azure portal に移動してデプロイ情報を見つけます。
Azure portal でお使いのリソース グループを開きます
クラスターの Kubernetes サービスに移動します
Kubernetes Resources
の下のServices and Ingress
を選択しますストアフロントの列に表示されている外部 IP をコピーします
IP をブラウザーに貼り付け、ストア ページにアクセスします
次のステップ
このチュートリアルでは、サンプルの Azure アプリケーションを AKS の Kubernetes クラスターにデプロイしました。 以下の方法を学習しました。
- Kubernetes マニフェスト ファイルを更新する。
- Kubernetes でアプリケーションを実行する。
- アプリケーションをテストします。
次のチュートリアルでは、Kubernetes のステートフル ワークロードに PaaS サービスを使用する方法について説明します。