Azure Container Apps 上の Functions V1 から Azure Container Apps 上の Functions V2 に移行する

このガイドを使って、従来のFunctions on Azure Container Apps V1ホスティングモデルから推奨されているFunctions on Azure Container Apps V2ホスティングモデルに移行してください。 移行する理由、変更内容、および最小限のリスクで移行を実行する方法について説明します。

注

Azure Functions on Azure Container Apps v1 migration assistantを使って、関数アプリをv1モデルからv2モデルへ移行するのを助けてください。

Azure Container Apps では、次の 2 つのデプロイ モデルを使用して Azure Functions をホストできます。

  • Azure Container Apps V1のFunctions:Function App(Microsoft.Webリソースプロバイダー)とバックグラウンドのコンテナアプリを組み合わせたレガシープロキシモデル。

  • Azure Container Apps V2の機能:kind=functionappで単一のAzureコンテナアプリリソース(Microsoft.App)を生成するネイティブモデル。

Azure Container Apps V2のFunctionsに移行すると、管理が簡素化され、ネイティブ機能が解放され、Azure Functionsの将来のロードマップに沿います。

モデルの比較

Area Azure Container Apps V1 上の Functions (レガシー) Azure Container Apps 上の Functions V2 (推奨)
リソース モデル プロキシ機能アプリと非表示コンテナーアプリのペア 単一のネイティブ コンテナー アプリ (kind=functionapp)
ネイティブ機能

(リビジョン、シークレット、ヘルスプローブ、カスタムドメイン、サイドカー)
サポートされていません サポートされています
コントロールのスケーリング

(クールダウン、ポーリング間隔)
Limited 完全なコンテナー アプリのスケーリング オプション
ロギングおよびトラブルシューティング インダイレクト。 ライブ コンソールなし 直接。 ライブ ログと診断を含む
Dapr の統合 一部の分離された .NET シナリオで問題がある 標準パターンでサポート
認証 (簡単な認証) 使用不可 在庫有り
証明書とカスタム ドメイン 使用不可 在庫有り
メトリックとアラート Basic 完全なネイティブ メトリックとアラート
今後のロードマップ

(関数リスト、キー、呼び出し数)
対応予定なし 対応予定
操作の複雑さ デュアル リソース管理 単一リソース
新規導入に推奨 いいえ イエス

Azure Container Apps V1 における Functions の制限事項

Azure Container Apps V1の関数には、スケーラビリティ、管理、機能の可用性に影響を与えるいくつかの制限があります。 これらの制約を理解することで、Azure Container Apps V2のFunctionsへの移行の利点が明確になります。

機能のギャップ

以下の機能は、Functions on Azure Container Apps V1 アプリには利用できません:

  • 簡単な認証
  • ヘルスプローブ
  • カスタム ドメイン
  • サイドカー コンテナー
  • マネージド証明書
  • コンテナー アプリのシークレット
  • 詳細なスケール設定
  • トラフィックの複数リビジョン分割

制約に関するトラブルシューティング

Azure Container Apps V1 アプリの Functions では、直接のコンテナアクセスやリアルタイムコンソール出力はありません。 代わりに、インフラ診断にはLog Analytics、アプリケーションログにはApplication Insightsを使いましょう。

Dapr 統合に関する課題

Dapr と .NET 分離関数は、依存関係と初期化の順序付けの制約により、ビルドまたは実行時に競合する可能性があります。

Azure Container Apps V2 上の Functions の利点

Azure Container Apps V2のFunctionsはネイティブなコンテナアプリリソースを直接作成します。 この方法では、プロキシの間接参照が削除され、Azure Container Apps の完全な機能が有効になります。

主な利点:

  • ID オフロードの Easy Auth を有効にします。
  • 可用性を向上させるためにヘルスプローブを構成します。
  • カスタム ドメインを設定し、マネージド証明書を使用します。
  • 1 つのリソースで運用上のオーバーヘッドを削減します。
  • シークレットをネイティブに格納し、サイドカー コンテナーをマウントします。
  • より明確なメトリック、アラート、ライブ ログ ストリーミングを取得します。
  • 複数のリビジョンデプロイメントを使用し、トラフィックを安全に分散します。
  • 詳細なスケーリング ルール (ポーリング間隔、クールダウン) を適用します。

注

コードに変更を加える必要はありません。 既存のコンテナー イメージを再利用できます。

従来の直接イメージのデプロイ (サポートされていません)

一部のデプロイでは、 kind=functionapp せずに標準コンテナー アプリを使用し、Functions イメージを手動で実行します。

Important

この方法はサポートされていません。 自動スケールルールがなく、Azure Container Apps V2プラットフォームの機能リストアップ、キー、呼び出し数などの今後の機能も提供されません。

推奨事項: Functions on Azure Container Apps V2 へ移行してください。

[前提条件]

移行する前に、次の手順を実行します。

  • Azure サブスクリプションとリソースを作成するためのアクセス許可。
  • [Azure CLI](/cli/azure/install-azure-cli-windows?view=azure-cli-latest (latest) がインストールされています。
  • 必要な拡張機能: az extension add --name containerapp、 az extension add --name functionapp (該当する場合)。
  • Azure Container Apps V1 デプロイ上の Functions で使用されるコンテナー イメージへのアクセス。
  • 環境変数、シークレット、ストレージ バインド、ネットワーク設定のインベントリ。

移行手順

1. 準備する

  1. 現在のデプロイがFunctions on Azure Container Apps V1アプリであることを特定してください。
  2. 環境変数、シークレット、接続文字列、カスタム バインドなど、すべての構成データをエクスポートします。
  3. 環境クォータ (CPU、メモリ、最大インスタンス) を確認し、必要に応じて調整します。
  4. レジストリでイメージの可用性を確認します。

2. Functions on Azure Container Apps V2 アプリを作成する

  1. Azure Container Apps 環境を作成または再利用します。

  2. 同じイメージで新しいFunctions on Azure Container Apps V2アプリをデプロイしてください。

    az containerapp create \
      --name my-func-v2 \
      --resource-group <RESOURCE_GROUP_NAME> \
      --environment <ENVRONMENT_NAME> \
      --image myregistry.azurecr.io/<IMAGE_NAME>:<TAG_NAME> \
      --kind functionapp \
      --ingress external --target-port <TARGET_PORT>
    
  3. シークレット、環境変数、ID、ネットワークなどの構成の詳細を再適用します。

  4. 必要に応じて、認証またはカスタム ドメインを有効にします。

  5. スケーリング ルール (HTTP、CPU、キュー トリガーの関連付け) を必要に応じて定義します。

3. 検証

  1. HTTP によってトリガーされる関数 (curl またはブラウザー) を呼び出します。

  2. 各トリガーの種類 (Event Hubs、Service Bus、タイマー) をテストします。

  3. Application Insights テレメトリと Log Analytics ログを確認します。

  4. 負荷がかかった状態でのスケーリング動作を確認します (自動スケーリングルールの発動)。

  5. シークレットと接続文字列が正しく解決されていることを確認します。

  6. ヘルスプローブのステータスとコンテナのリビジョン詳細を確認します。

4. DNS またはカスタム ドメインを更新する (省略可能)

  1. カスタムドメインを使用している場合は、Azure Container Apps V2の新しいFunctionsホスト名(CNAMEまたはAレコード)にマッピングしてください。

  2. SSL/TLS 証明書の再バインド (マネージドまたはアップロード)。

  3. ドメイン解決と TLS ハンドシェイクをテストします。

  4. エンドポイントの変更を内部的に伝達します。

5. 移行

  1. 運用環境のトラフィックをシフトする (DNS TTL またはルーティング規則を更新します)。

  2. 待機時間、エラー、および呼び出しの数を監視します。

  3. 必要に応じてスケーリング パラメーターを調整します (クールダウン、最小/最大インスタンス)。

  4. 最初の数時間の異常のログを追跡します。

6. クリーンアップ

  1. 古い Functions on Azure Container Apps V1 アプリと関連リソースを廃止する。

    注意事項

    削除前に、Functions on Azure Container Apps V1エンドポイントにまだプロダクショントラフィックがターゲットされていないか確認してください。

  2. 未使用のシークレットまたはストレージ参照を削除します。

  3. 内部ドキュメントと運用 Runbook を更新します。

検証チェックリスト

Item 合格基準
トリガーの起動 構成されたすべてのトリガーが正常に実行される
ログとテレメトリ Application Insights には次の呼び出しが表示されます; ライブ ログ ストリーム
Scaling ルール構成ごとのインスタンス数の調整
認証 (有効な場合) 保護されたエンドポイントから予期される状態コードが返される
ドメイン カスタム ドメインが有効な証明書で解決される
Secrets 機密値はエラーなしで読み込まれます

運用の機能強化 (省略可能)

移行後の信頼性の向上: