(非推奨) Kubernetes でアプリケーションを更新する
ヒント
Azure Kubernetes Serviceを使用するこのチュートリアルの更新バージョンについては、「チュートリアル: Azure Kubernetes Service (AKS) でアプリケーションを更新する」を参照してください。
警告
Azure Container Service (ACS) は非推奨となっています。 ACS に新しい機能が追加されることはありません。 API、ポータルのエクスペリエンス、CLI コマンド、ドキュメントはすべて非推奨としてマークされます。
Azure Kubernetes Service (AKS) は、Kubernetes の管理、デプロイ、および運用を簡素化するために 2017 年に導入されました。 Kubernetes オーケストレーターを使用する場合は、2020 年 1 月 31 日までに AKS に移行してください。 まずは、Azure Kubernetes Service への移行に関するページを参照してください。
詳細については、Azure.com で Azure Container Service の非推奨化に関するお知らせを参照してください。
Kubernetes でアプリケーションをデプロイした後で、新しいコンテナー イメージまたはイメージ バージョンを指定することによってアプリケーションを更新できます。 アプリケーションを更新するときは、デプロイの一部だけが同時に更新されるように、更新がステージングされます。 この段階的な更新プログラムを使用すると、アプリケーションの更新中も引き続きアプリケーションを実行することができます。 デプロイ エラーが発生した場合のロールバック メカニズムも提供されています。
この 7 部構成の 6 番目のチュートリアルでは、サンプルの Azure Vote アプリを更新します。 以下のタスクを行います。
- フロントエンド アプリケーション コードの更新
- 更新後のコンテナー イメージの作成
- Azure Container Registry へのコンテナー イメージのプッシュ
- 更新したコンテナー イメージのデプロイ
この後のチュートリアルでは、Kubernetes クラスターを監視するように Log Analytics を構成します。
開始する前に
これまでのチュートリアルでは、アプリケーションをコンテナー イメージにパッケージ化し、このイメージを Azure Container Registry にアップロードして、Kubernetes クラスターを作成しました。 その後、Kubernetes クラスターでアプリケーションを実行しました。
アプリケーション リポジトリも複製しましたが、それにはアプリケーションのソース コードと、このチュートリアルで使用する事前作成された Docker Compose ファイルが含まれています。 リポジトリの複製が作成されていること、およびディレクトリが複製されたディレクトリに変更されていることを確認します。 内部には、azure-vote
という名前のディレクトリと docker-compose.yml
という名前のファイルがあります。
これらの手順を実行していない場合で、順番に進めたい場合は、「チュートリアル 1 – コンテナー イメージを作成する」に戻ってください。
アプリケーションを更新する
このチュートリアルでは、アプリケーションを変更し、更新したアプリケーションを Kubernetes クラスターにデプロイします。
アプリケーションのソース コードは、azure-vote
ディレクトリ内にあります。 適当なコード エディターまたはテキスト エディターで config_file.cfg
ファイルを開きます。 この例では、 vi
が使用されます。
vi 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 にアプリケーション イメージの再作成を指示するために使用されます。
docker-compose up --build -d
ローカルでアプリケーションをテストする
https://localhost:8080
に移動し、更新したアプリケーションを確認します。
イメージにタグを付けてプッシュする
コンテナー レジストリの loginServer で azure-vote-front
イメージにタグを付けます。
az acr list コマンドを使用してログイン サーバー名を取得します。
az acr list --resource-group myResourceGroup --query "[].{acrLoginServer:loginServer}" --output table
docker tag を使用してイメージにタグを付けます。 <acrLoginServer>
を、Azure Container Registry のログイン サーバー名またはパブリック レジストリのホスト名で置き換えます。 また、イメージのバージョンは redis-v2
に更新されます。
docker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v2
docker push を使用してレジストリにイメージをアップロードします。 <acrLoginServer>
を Azure Container Registry のログイン サーバー名に置き換えます。
docker push <acrLoginServer>/azure-vote-front:redis-v2
更新したアプリケーションをデプロイする
最大限のアップタイムを保証するには、アプリケーション ポッドの複数のインスタンスを実行する必要があります。 kubectl get pod コマンドでこの構成を確認します。
kubectl get pod
Output:
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 イメージを複数のポッドで実行していない場合は、azure-vote-front
のデプロイを拡張します。
kubectl scale --replicas=3 deployment/azure-vote-front
アプリケーションを更新するには、kubectl set コマンドを使用します。 コンテナー レジストリのログイン サーバー名またはホスト名で、<acrLoginServer>
を更新します。
kubectl set image deployment azure-vote-front azure-vote-front=<acrLoginServer>/azure-vote-front:redis-v2
デプロイを監視するには、kubectl get pod コマンドを使います。 更新されたアプリケーションがデプロイされると、ポッドが終了されて、新しいコンテナー イメージで再作成されます。
kubectl get pod
Output:
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
その IP アドレスに移動し、更新したアプリケーションを確認します。
次の手順
このチュートリアルでは、アプリケーションを更新し、この更新を Kubernetes クラスターにロールアウトしました。 次のタスクを完了しました。
- フロントエンド アプリケーション コードの更新
- 更新後のコンテナー イメージの作成
- Azure Container Registry へのコンテナー イメージのプッシュ
- 更新したアプリケーションのデプロイ
次のチュートリアルに進み、Log Analytics で Kubernetes を監視する方法について学習してください。