チュートリアル: Azure Kubernetes Service on Azure Stack HCI and Windows Server でアプリケーションを更新する

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

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

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

開始する前に

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

  • アプリケーションをコンテナー イメージにパッケージ化し、Azure Container Registry にイメージをアップロードします。
  • AKS on Azure Stack HCI クラスターを作成し、アプリケーションをクラスターにデプロイします。
  • アプリケーション リポジトリを複製します。これには、このチュートリアルで使用できるアプリケーションのソース コードと事前作成された Docker Compose ファイルが含まれています。

リポジトリの複製を作成したこと、およびディレクトリを複製ディレクトリに変更したことを確認します。 これらの手順を完了していない場合は、コンテナー イメージの作成に関するチュートリアル 1 から始めてください。

このチュートリアルでは、Azure CLI バージョン 2.0.53 以降を実行している必要があります。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

アプリケーションを更新する

このセクションでは、サンプル アプリケーションに変更を加え、AKS on Azure Stack HCI and Windows Server クラスターにデプロイ済みのバージョンを更新する方法について説明します。 複製された azure-voting-app-redis ディレクトリにいることを確認します。 その場合、サンプル アプリケーションのソース コードは、azure-vote ディレクトリ内にあります。 notepad などのエディターで config_file.cfg ファイルを開きます。

notepad azure-vote/azure-vote/config_file.cfg

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

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

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

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

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

docker-compose up --build -d

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

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

Screenshot showing an example of the updated container image Azure Voting App running locally opened in a local web browser

実行中のアプリケーションに、config_file.cfg ファイルで指定した更新後の値が表示されます。

イメージにタグを付けてプッシュする

更新したイメージを正しく使用するために、azure-vote-front イメージに ACR レジストリのログイン サーバー名のタグを付けます。 az acr list コマンドを使用して、ログイン サーバー名を取得します。

az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table

docker tag を使用してイメージにタグを付けます。 <acrLoginServer> を実際の ACR ログイン サーバー名またはパブリック レジストリのホスト名に置き換え、イメージのバージョンを次のように :v2 に更新します。

docker tag mcr.microsoft.com/azuredocs/azure-vote-front:v1 <acrLoginServer>/azure-vote-front:v2

次に、docker push を使用してご利用のレジストリにイメージをアップロードします。 <acrLoginServer> は、実際の ACR ログイン サーバー名に置き換えてください。

Note

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

Screenshot showing an example of the updated image Azure Voting App running in an AKS cluster opened in a local web browser.

次のステップ

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

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

次のチュートリアルに進んで、AKS クラスターを新しいバージョンの Kubernetes にアップグレードする方法を学習してください。