デプロイ ラベルは、開発、ステージング、prod などのわかりやすい名前を特定のコンテナー リビジョンに割り当てるのに役立ちます。 これらの名前を適用すると、複雑なデプロイ シナリオと環境管理の処理が効率化されます。
デプロイ ラベルを使用すると、次のことができます。
- 変更履歴にわかりやすいわかりやすいラベルを割り当てます。
- ルーティングとトラフィック管理のためにラベルに新しいリビジョンを自動的に割り当てます。
- リビジョン名を変更する代わりに、ラベルに基づいてトラフィックをルーティングします。
- ラベルを再割り当てして、リビジョンのレベル上げまたはレベル下げを行います。
- ラベル履歴を使用して以前のリビジョンにロールバックします。
Important
デプロイ ラベルを使用する前に、手順に従って、最初にコンテナー アプリのポータルでデプロイ ラベルを 有効にする 必要があります。
主な機能
デプロイ ラベルを使用すると、次の機能を使用してアプリケーションのライフサイクルを制御しながら、高度なデプロイ戦略を作成できます。
ラベルの割り当て: コンテナーのリビジョンにわかりやすいラベルを作成して割り当てることで、開発、ステージング、prod などの環境の管理が容易になります。
トラフィック分割と A/B テスト: トラフィックの分割、ブラインド ロールバック、および A/B テストのサポートにより、新機能の段階的なロールアウトとテストが可能になります。
ステージング リリースと自動スワップ: リビジョンの自動アクティブ化により、新しいリビジョンをシームレスに作成し、新しいラベルまたは既存のラベルに割り当ててトラフィックを受信できます。 ラベルによって参照されなくなったリビジョンは自動的にシャットダウンされます。
デプロイ ラベルを使用する
既定では、デプロイ ラベルはコンテナー アプリでは使用できません。 デプロイ ラベルを有効にするには、Azure portal で次の手順に従います。
Azure portal でコンテナー アプリを開きます。
メニューの [ アプリケーション ] セクションで、[ リビジョンとレプリカ] を選択します。
[デプロイ モード] を選択します。
[ 配置ラベル ] 列を選択します。
を選択してを適用します。
新しいラベルを作成する
既存のラベルに基づいて、ポータルで新しいラベルを作成します。 既定では、Container Apps は label-1 という名前の最初のラベルを作成します。 CLI または Bicep を使用してラベルを作成する場合は、既存のリビジョンまたは新しいリビジョンにラベルを関連付けることができます。
Azure portal でコンテナー アプリを開きます。
メニューの [ アプリケーション ] セクションで、[ ラベル] を選択します。
[ 新しいラベル] を選択します。
新しいラベルの基にする既存のラベルを選択します。
テキスト ボックスに新しいラベル名を入力します。
[重複] を選択します。
ラベルの履歴とロールバック
次の手順を使用して、ラベルの完全な履歴を表示できます。
Azure portal でコンテナー アプリを開きます。
メニューの [ アプリケーション] で [ラベル] を選択 します。
目的のラベルの [履歴の表示 ] を選択します。
任意のラベルに [ 履歴の表示 ] オプションを使用して、次の手順を実行します。
- ラベルのリビジョン履歴を確認します。
- ラベルを別のコンテナー リビジョンにポイントして、前のリビジョンにロールバックします。
デプロイ ラベルを使用する
デプロイ ラベルを有効にするには、Azure CLI で次の手順に従います。
ターミナルを開きます。
次の環境変数を作成します。
CONTAINER_APP_NAME="my-container-app" CONTAINER_APP_IMAGE="mcr.microsoft.com/k8se/quickstart:latest" LOCATION="centralus" RESOURCE_GROUP="my-container-apps-rg" ENVIRONMENT_NAME="my-container-apps-env" TARGET_LABEL="stage"次のコマンドを使用して、ラベル付きの新しいアプリとリビジョンを作成します。
az containerapp create \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --image $CONTAINER_APP_IMAGE \ --environment $ENVIRONMENT_NAME \ --location $LOCATION \ --ingress external \ --target-port 0 \ --revisions-mode labels \ --target-label $TARGET_LABEL新しいラベルまたは既存のラベルを使用して新しいリビジョンを作成するには、次のコマンドを使用します。
az containerapp update \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --image $CONTAINER_APP_IMAGE \ --target-label $TARGET_LABELラベル履歴を表示するには、次のコマンドを使用します。
az containerapp label-history show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --label $TARGET_LABELラベル アプリのトラフィックを表示するには、次のコマンドを使用します。
az containerapp ingress traffic show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \リビジョンにラベルを追加するには、次のコマンドを使用します。
az containerapp revision label add \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --revision $REVISION_NAME \ --label $TARGET_LABELリビジョンからラベルを削除するには、次のコマンドを使用します。
az containerapp revision label remove \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP \ --label $TARGET_LABEL
サポートされているシナリオ
ブルーグリーンデプロイ: リビジョンのラベル付けと切り替えによって、ブルーグリーンのデプロイを簡単に管理できます。 この方法では、完全な環境スワップを処理する簡単な方法が提供されます。
A/B テスト: 機能テストのために、トラフィックの割合を異なるリビジョンに転送します。 この方法では、完全な展開の前に、ユーザーのサブセットで新しい機能を検証できます。
段階的ロールアウト: トラフィックの割合を調整することで、新しいリビジョンへのトラフィックを徐々に増やします。
環境の分離: ラベルを使用して、開発、ステージング、および運用環境を個別に維持します。 明確な昇格パスを維持しながら、各環境を個別に更新できます。
ワークフローの例
デプロイ ラベルを使用する一般的なワークフローを次に示します。
初期ラベルを作成する: 最初に同じリビジョンを指す "ステージ" や "production" などのラベルを作成します。
ラベルを更新する: ラベル ("ステージ" など) を選択して、新しいコンテナー、スケーリング、またはボリューム設定で更新します。
変更をテストします。新しいリビジョンがデプロイされたら、トラフィックの一部を更新されたラベルにルーティングします。
レベル上げを変更する: 運用環境のリビジョンに自信がある場合は、同じリビジョンを指すように運用ラベルを更新します。
必要に応じて監視とロールバック: 問題が発生した場合は、ラベル履歴を使用して以前のバージョンにロールバックします。