チュートリアル: Azure Kubernetes Service (AKS) でのアプリケーションの更新
Kubernetes でアプリケーションをデプロイした後で、新しいコンテナー イメージまたはイメージ バージョンを指定することによってアプリケーションを更新できます。 更新は、デプロイの全体が一度に更新されないように、段階的に行われます。 この段階的な更新プログラムを使用すると、アプリケーションの更新中も引き続きアプリケーションを実行することができます。 デプロイ エラーが発生した場合のロールバック メカニズムも提供されています。
この 7 部構成の 6 番目のチュートリアルでは、サンプルの Azure Vote アプリを更新します。 学習内容は次のとおりです。
- フロントエンド アプリケーションのコードを更新する
- 更新後のコンテナー イメージを作成する
- Azure Container Registry にコンテナー イメージをプッシュする
- 更新したコンテナー イメージをデプロイする
開始する前に
これまでのチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化しました。 このイメージを Azure Container Registry にアップロードし、AKS クラスターを作成しました。 その後、AKS クラスターにアプリケーションをデプロイしました。
アプリケーション リポジトリも複製しましたが、それにはアプリケーションのソース コードと、このチュートリアルで使用する事前作成された Docker Compose ファイルが含まれています。 リポジトリの複製を作成したこと、およびディレクトリを複製ディレクトリに変更したことを確認します。 これらの手順を行っておらず、順番に進めたい場合は、チュートリアル 1 – コンテナー イメージを作成するに関するページから始めてください。
このチュートリアルでは、Azure CLI バージョン 2.0.53 以降を実行している必要があります。 バージョンを確認するには、az --version
を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。
アプリケーションを更新する
サンプル アプリケーションに変更を加えたうえで、AKS クラスターにデプロイ済みのバージョンを更新してみましょう。 複製された azure-voting-app-redis ディレクトリにいることを確認します。 その場合、サンプル アプリケーションのソース コードは、azure-vote ディレクトリ内にあります。 vi
などのエディターで config_file.cfg ファイルを開きます。
vi azure-vote/azure-vote/config_file.cfg
VOTE1VALUE と VOTE2VALUE の値を、色などの別の値に変更します。 次の例は、更新後の値を示しています。
# UI Configurations
TITLE = 'Azure Voting App'
VOTE1VALUE = 'Blue'
VOTE2VALUE = 'Purple'
SHOWHOST = 'false'
ファイルを保存して閉じます。 vi
では、:wq
を使用します。
コンテナー イメージを更新する
フロントエンド イメージを再作成し、更新したアプリケーションをテストするには、docker-compose を使用します。 引数 --build
は、Docker Compose にアプリケーション イメージの再作成を指示するために使用されます。
docker-compose up --build -d
ローカルでアプリケーションをテストする
更新後のコンテナー イメージに変更内容が反映されていることを確認するために、ローカル Web ブラウザーで http://localhost:8080
を開きます。
実行中のアプリケーションに、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 アドレスに移動します。
次のステップ
このチュートリアルでは、アプリケーションを更新し、この更新を AKS クラスターにロールアウトしました。 以下の方法を学習しました。
- フロントエンド アプリケーションのコードを更新する
- 更新後のコンテナー イメージを作成する
- Azure Container Registry にコンテナー イメージをプッシュする
- 更新したコンテナー イメージをデプロイする
次のチュートリアルに進んで、AKS クラスターを新しいバージョンの Kubernetes にアップグレードする方法を学習してください。
Azure Kubernetes Service