チュートリアル: Azure Arc で有効になっている AKS でアプリケーションを更新する

適用対象: AKS on Azure Stack HCI 22H2、AKS on Windows Server

Arc で有効になっている AKS を使用して Kubernetes にアプリケーションをデプロイした後、新しいコンテナー イメージまたはイメージ バージョンを指定してアプリケーションを更新できます。 デプロイの全体が一度に更新されないように、段階的に更新を行ってください。 この段階的な更新プログラムを使用すると、アプリケーションの更新中も引き続きアプリケーションを実行することができます。 デプロイ エラーが発生した場合のロールバック メカニズムも提供されています。

このチュートリアルはパート 6/7 であり、サンプル Azure Vote アプリを更新する方法について説明します。 学習内容:

  • フロントエンド アプリケーションのコードを更新する
  • 更新後のコンテナー イメージを作成する
  • Azure Container Registry にコンテナー イメージをプッシュする
  • 更新したコンテナー イメージをデプロイする

開始する前に

これまでのチュートリアルでは、次の方法を学習しました。

  • アプリケーションをコンテナー イメージにパッケージ化し、Azure Container Registry にイメージをアップロードします。
  • Azure Stack HCI で 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

VOTE2VALUEVOTE1VALUE値を色などの異なる値に変更します。 次の例は、更新後の値を示しています。

# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'

ファイルを保存して閉じます。

コンテナー イメージを更新する

フロントエンド イメージを再作成し、更新したアプリケーションをテストするには、docker-compose を使用します。 引数は --build 、アプリケーション イメージを再作成するために使用されます。

docker-compose up --build -d

ローカルでアプリケーションをテストする

更新後のコンテナー イメージに変更内容が反映されていることを確認するために、ローカル Web ブラウザーで http://localhost:8080 を開きます。

ローカル Web ブラウザーで開かれた、ローカルで実行されている Azure 投票アプリの更新されたコンテナー イメージの例を示すスクリーンショット

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 のログイン サーバー名に置き換えます。

注意

コンテナー レジストリへのプッシュで問題が発生した場合は、まだログインしていることを確認してください。 「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 アドレスに移動します。

ローカル Web ブラウザーで開かれた Kubernetes クラスターで実行されている更新されたイメージ Azure Voting App の例を示すスクリーンショット。

次の手順

このチュートリアルでは、アプリケーションを更新し、この更新プログラムを Kubernetes クラスターにロールアウトしました。 以下の方法を学習しました。

  • フロントエンド アプリケーションのコードを更新する
  • 更新後のコンテナー イメージを作成する
  • Azure Container Registry にコンテナー イメージをプッシュする
  • 更新したコンテナー イメージをデプロイする

次のチュートリアルに進み、クラスターを新しいバージョンの Kubernetes にアップグレードする方法について説明します。