チュートリアル: Azure Arc で有効になっている AKS でアプリケーションを更新する
適用対象: AKS on Azure Stack HCI 22H2、Windows Server 上の AKS
Arc で有効になっている AKS を使用して Kubernetes にアプリケーションをデプロイした後、新しいコンテナー イメージまたはイメージ バージョンを指定してアプリケーションを更新できます。 デプロイの全体が一度に更新されないように、段階的に更新を行ってください。 この段階的な更新プログラムを使用すると、アプリケーションの更新中も引き続きアプリケーションを実行することができます。 デプロイ エラーが発生した場合のロールバック メカニズムも提供されています。
このチュートリアルはパート 6/7 であり、サンプル Azure Vote アプリを更新する方法について説明します。 学習内容:
- フロントエンド アプリケーションのコードを更新する
- 更新後のコンテナー イメージを作成する
- Azure Container Registry にコンテナー イメージをプッシュする
- 更新したコンテナー イメージをデプロイする
開始する前に
これまでのチュートリアルでは、次の方法を学習しました。
- アプリケーションをコンテナー イメージにパッケージ化し、Azure Container Registry にイメージをアップロードします。
- Azure Local に Kubernetes クラスターを作成し、そのクラスターにアプリケーションをデプロイします。
- アプリケーション リポジトリを複製します。これには、このチュートリアルで使用できるアプリケーションのソース コードと事前作成された Docker Compose ファイルが含まれています。
リポジトリの複製を作成し、複製されたディレクトリにディレクトリを変更したことを確認します。 これらの手順を完了していない場合は、コンテナー イメージの作成に関するチュートリアル 1 から始めてください。
このチュートリアルでは、Azure CLI バージョン 2.0.53 以降を実行する必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
アプリケーションを更新する
このセクションでは、サンプル アプリケーションを変更し、AKS クラスターに既にデプロイされているバージョンを更新する方法について説明します。 複製された azure-voting-app-redis ディレクトリにいることを確認します。 その場合、サンプル アプリケーションのソース コードは、azure-vote ディレクトリ内にあります。 メモ帳などのエディターで config_file.cfg ファイルを開きます。
notepad azure-vote/azure-vote/config_file.cfg
VOTE1VALUE
とVOTE2VALUE
の値を色などの異なる値に変更します。 次の例は、更新後の値を示しています。
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
ファイルを保存して閉じます。
コンテナー イメージを更新する
フロントエンド イメージを再作成し、更新したアプリケーションをテストするには、docker-compose を使用します。 --build
引数は、アプリケーション イメージを再作成するために使用されます。
docker-compose up --build -d
ローカルでアプリケーションをテストする
更新後のコンテナー イメージに変更内容が反映されていることを確認するために、ローカル Web ブラウザーで http://localhost:8080
を開きます。
config_file.cfg で指定された更新された値は、実行中のアプリケーションに表示されます。
イメージにタグを付けてプッシュする
更新されたイメージを正しく使用するには、 azure-vote-front イメージに Azure Container Registry インスタンスのログイン サーバー名をタグ付けします。 az acr list コマンドを使用して、ログイン サーバー名を取得します。
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
docker tag を使用してイメージにタグを付けます。 <acrLoginServer>
をコンテナー レジストリ ログイン サーバー名またはパブリック レジストリのホスト名に置き換え、次のようにイメージバージョンを v2 に更新します。
docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2
次に、docker push を使用してご利用のレジストリにイメージをアップロードします。 <acrLoginServer>
を Azure Container Registry のログイン サーバー名に置き換えます。
Note
コンテナー レジストリへのプッシュで問題が発生した場合は、まだログインしていることを確認してください。 「Azure Container Registry を作成する」手順で作成した Azure Container Registry の名前を使用して az acr login コマンドを実行します。 たとえば、az acr login --name <azure container registry name>
のようにします。
docker push <acrLoginServer>/azure-vote-front:v2
更新したアプリケーションをデプロイする
最大限のアップタイムを提供するには、アプリケーション ポッドの複数のインスタンスを実行する必要があります。 実行中のフロントエンド インスタンスの数を kubectl get pods コマンドを使用して確認します。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-217588096-5w632 1/1 Running 0 10m
azure-vote-front-233282510-b5pkz 1/1 Running 0 10m
azure-vote-front-233282510-dhrtr 1/1 Running 0 10m
azure-vote-front-233282510-pqbfk 1/1 Running 0 10m
複数のフロントエンド ポッドがない場合は、次のように azure-vote-front デプロイをスケーリングします。
kubectl scale --replicas=3 deployment/azure-vote-front
アプリケーションを更新するには、kubectl set コマンドを使用します。 実際のコンテナー レジストリのログイン サーバー名またはホスト名で <acrLoginServer>
を更新し、アプリケーション バージョンとして v2 を指定します。
kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:v2
デプロイを監視するには、kubectl get pod コマンドを使います。 更新されたアプリケーションがデプロイされると、ポッドが終了し、新しいコンテナー イメージで再作成されます。
kubectl get pods
次の出力例には、デプロイの進行状況として、終了状態のポッドと実行状態の新しいインスタンスが示されています。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
azure-vote-back-2978095810-gq9g0 1/1 Running 0 5m
azure-vote-front-1297194256-tpjlg 1/1 Running 0 1m
azure-vote-front-1297194256-tptnx 1/1 Running 0 5m
azure-vote-front-1297194256-zktw9 1/1 Terminating 0 1m
更新したアプリケーションをテストする
更新したアプリケーションを表示するには、まず、azure-vote-front
サービスの外部 IP アドレスを取得します。
kubectl get service azure-vote-front
次に、Web ブラウザーを開いて、サービスの IP アドレスに移動します。
次のステップ
このチュートリアルでは、アプリケーションを更新し、この更新プログラムを Kubernetes クラスターにロールアウトしました。 以下の方法を学習しました。
- フロントエンド アプリケーションのコードを更新する
- 更新後のコンテナー イメージを作成する
- Azure Container Registry にコンテナー イメージをプッシュする
- 更新したコンテナー イメージをデプロイする
次のチュートリアルに進み、クラスターを新しいバージョンの Kubernetes にアップグレードする方法について説明します。