Azure Functions の Azure Container Apps ホスティング
Azure Functions では、Azure Container Apps でコンテナー化された関数アプリを開発、デプロイ、管理するための統合サポートが提供されます。 マイクロサービス、API、Web サイト、ワークフローなど、コンテナーでホストされている他のプログラムと同じ環境で、Azure でイベント ドリブン関数を実行する必要がある場合は、Azure Container Apps を使用して関数アプリ コンテナーをホストします。 Container Apps ホスティングを使用すると、オープンソースの監視、mTLS、Dapr、KEDA の組み込みサポートを使用して、Kubernetes ベースの環境で関数を実行できます
重要
Azure Container Apps での関数アプリのホスティングのサポートは、現在プレビュー段階です。
Container Apps との統合により、既存の関数プログラミング モデルを使用して、Azure Functions でサポートされている任意のプログラミング言語またはフレームワークで関数コードを記述できます。 イベント ドリブン スケーリングでは、引き続き Functions のトリガーとバインドが得られます。 Container Apps では、基になる Azure Kubernetes Service (AKS) の機能を使用しながら、Kubernetes API での作業で必要となる複雑さが解消されます。
また、この統合は、既存の Functions クライアント ツールとポータルを使用してコンテナーを作成し、関数アプリ コンテナーを Container Apps にデプロイし、継続的デプロイを構成できることを意味します。 ネットワークと監視の構成は、Container App 環境のレベルで定義され、Container Apps 環境で実行されているすべてのマイクロサービス (関数アプリを含む) に適用されます。 また、KEDA、Dapr、Envoy など、Container Apps の他のクラウドネイティブ機能も使用できます。 Application Insights を使用して関数の実行を監視することもできます。
Azure Functions の Container Apps へのデプロイ
現在のプレビュー段階では、作成した Linux コンテナーに関数コードをデプロイする必要があります。 Functions では、コンテナー化された関数アプリの生成に使用できるlanuage固有の基本イメージのセットが保持されます。 Azure Functions Core Tools を使用して Functions プロジェクトを作成し、--docker
オプションを含めると、Core Tools では、適切な基本イメージからコンテナーを作成するために使用できる Dockerfile も生成されます。
現在、Azure Functions では、Azure Container Apps への次のデプロイ方法をサポートしています。
- Azure CLI
- Azure portal
- GitHub のアクション
- Azure パイプライン タスク
- ARM テンプレート
- Bicep テンプレート
- Azure Functions Core Tools
Azure CLI を使用して関数アプリ コンテナーを作成して Container Apps にデプロイする方法については、「Azure Container Apps で最初のコンテナー化された関数を作成する」を参照してください。
重要
独自のコンテナーを作成する場合は、コンテナーの基本イメージを、サポートされている最新の基本イメージに更新しておく必要があります。 Azure Functions でサポートされている基本イメージは言語固有であり、Azure Functions 基本イメージ リポジトリにあります。
Functions チームは、これらの基本イメージの毎月の更新プログラムを公開できるよう取り組んでいます。 通常の更新プログラムには、Functions ランタイムと言語の両方について、最新のマイナー バージョンの更新プログラムとセキュリティ修正プログラムが含まれます。 最新の基本イメージからコンテナーを定期的に更新し、コンテナーの更新されたバージョンを再デプロイする必要があります。
関数コードに変更を加える場合は、コンテナー イメージを再構築して再パブリッシュする必要があります。 詳細については、「レジストリ内のイメージを更新する」を参照してください。
スケール ルールを構成する
Container Apps の Azure Functions は、イベント ターゲットに従ってスケール パラメーターとルールを構成するように設計されています。 KEDA スケーリング オブジェクトの構成について考慮する必要はありません。 関数アプリを作成または変更する場合に、引き続きレプリカの最小数と最大数を設定できます。 次の Azure CLI コマンドでは、Container Apps 環境で Azure Container Registry から新しい関数アプリを作成するときの最小レプリカ数と最大レプリカ数を設定します。
az functionapp create --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1 --storage-account <STORAGE_NAME> --environment MyContainerappEnvironment --image <LOGIN_SERVER>/azurefunctionsimage:v1 --registry-username <USERNAME> --registry-password <SECURE_PASSWORD>
次のコマンドでは、既存の関数アプリで同じ最小レプリカ数と最大レプリカ数を設定します。
az functionapp config container set --name <APP_NAME> --resource-group <MY_RESOURCE_GROUP> --max-replicas 15 --min-replicas 1
Container Apps ホスティングに関する考慮事項
Container Apps に関数アプリ コンテナーをデプロイする際には、次の考慮事項に注意してください。
- Functions の Container Apps のサポートは現在プレビュー段階であり、次のリージョンでのみ使用できます。
- オーストラリア東部
- 米国中部
- 米国東部
- 米国東部 2
- 北ヨーロッパ
- 米国中南部
- 英国南部
- 西ヨーロッパ
- 米国西部 3
- コンテナーが 従量課金 + 専用プラン構造でホストされている場合、既定の従量課金プランのみが現在サポートされています。 この構造の専用プランは、Functions ではまだサポートされていません。 Container Apps で関数を実行する場合、Container Apps の使用に対してのみ課金されます。 詳細については、Azure Container Apps の価格ページを参照してください。
- すべてのトリガーを使用できますが、Container Apps で実行すると、次のトリガーのみが (0 個のインスタンスから) 動的にスケーリングできます。
- HTTP
- Azure Queue Storage
- Azure Service Bus
- Azure Event Hubs
- Kafka*
*Container Apps でホストされている場合、ssl
のプロトコル値はサポートされません。 別のプロトコル値を使用します。
- Dapr は、現在、プレビュー リリースで既定で有効になっています。 将来のリリースでは、Dapr の読み込みは構成可能となると思われます。
- 組み込みの Container Apps ポリシー定義では、現在、環境レベルのポリシーのみが Azure Functions コンテナーに適用されます。
- Container Apps を使用する場合、下位レベルの Kubernetes API に直接アクセスすることはできません。
- ユーザー割り当てマネージド ID の使用は現在サポートされており、Azure Container Registryへのアクセス方法として推奨されています。 詳細については、「ユーザー割り当て ID を追加する」を参照してください。
containerapp
拡張機能は Azure CLI のappservice-kube
拡張機能と競合します。 以前に Azure Arc にアプリをパブリッシュしたことがある場合は、az extension list
を実行し、appservice-kube
がインストールされていないことを確認してください。 インストールされている場合は、az extension remove -n appservice-kube
を実行して削除できます。- DAPR API を呼び出す、または Functions Dapr 拡張機能を実行するには、レプリカの最小数が少なくとも
1
に設定されていることを確認します。 これにより、DAPR サイドカーをバックグラウンドで実行して DAPR 要求を処理できます。 Functions Dapr 拡張機能もプレビュー段階であり、リポジトリでヘルプが提供されています。