次の方法で共有


(非推奨)Kubernetes でアプリケーションを更新する

ヒント

Azure Kubernetes Service を使用するこのチュートリアルの更新バージョンについては、「 チュートリアル: Azure Kubernetes Service (AKS) のアプリケーションを更新する」を参照してください。

警告

Azure Container Service (ACS) は非推奨です。 ACS に新しい機能が追加されることはありません。 すべての API、ポータル エクスペリエンス、CLI コマンド、およびドキュメントは非推奨としてマークされます。

2017 年には、Kubernetes の管理、デプロイ、および操作を簡略化するための Azure Kubernetes Service (AKS) が導入されました。 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

VOTE1VALUEVOTE2VALUEの値を変更し、ファイルを保存します。

# 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を参照して、更新されたアプリケーションを表示します。

AzureImage of Kubernetes cluster on AzureImage of Kubernetes cluster on Azure上の Kubernetes クラスターのイメージ

画像にタグを付けてプッシュする

コンテナー レジストリの loginServer を使用して、 azure-vote-front イメージにタグを付けます。

az acr list コマンドを使用してログイン サーバー名を取得します。

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

docker タグを使用してイメージにタグを付けます。 <acrLoginServer>を Azure Container Registry ログイン サーバー名またはパブリック レジストリホスト名に置き換えます。 また、イメージのバージョンが redis-v2に更新されていることにも注意してください。

docker tag azure-vote-front <acrLoginServer>/azure-vote-front:redis-v2

Docker プッシュを使用して、イメージをレジストリにアップロードします。 <acrLoginServer>を Azure Container Registry ログイン サーバー名に置き換えます。

docker push <acrLoginServer>/azure-vote-front:redis-v2

更新プログラム アプリケーションをデプロイする

最大アップタイムを確保するには、アプリケーション ポッドの複数のインスタンスが実行されている必要があります。 kubectl get pod コマンドを使用して、この構成を確認します。

kubectl get pod

アウトプット:

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

アウトプット:

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 アドレスを参照して、更新されたアプリケーションを表示します。

AzureImage of Kubernetes cluster on AzureImage of Kubernetes cluster on Azure上の Kubernetes クラスターのイメージ

次のステップ

このチュートリアルでは、アプリケーションを更新し、この更新プログラムを Kubernetes クラスターにロールアウトしました。 次のタスクが完了しました。

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

次のチュートリアルに進み、Log Analytics を使用して Kubernetes を監視する方法について説明します。