Azure Functions での Linux コンテナーのサポート
Azure Functions で実行する個々の関数を計画して開発する場合、通常、コード自体に重点を置きます。 Azure Functions を使用すると、Azure の関数アプリにコード プロジェクトをデプロイするだけで済み、作業が容易になります。 Linux で実行される関数アプリにコード プロジェクトをデプロイすると、コンテナーが自動的に作成され、プロジェクトはそのコンテナーで実行されます。 このコンテナーは、Functions によって管理されます。
Functions では、コンテナー化された関数アプリのデプロイもサポートされています。 コンテナー化されたデプロイでは、サポートされているベース イメージからローカルの Docker コンテナーに独自の関数アプリ インスタンスを作成します。 その後、この "コンテナー化された" 関数アプリを Azure 内のホスティング環境にデプロイできます。 独自の関数アプリ コンテナーを作成すると、関数コードの即時ランタイム環境のカスタマイズまたは制御を行うことができます。
重要
独自のコンテナーを作成する場合は、コンテナーの基本イメージを、サポートされている最新の基本イメージに更新しておく必要があります。 Azure Functions でサポートされている基本イメージは言語固有であり、Azure Functions 基本イメージ リポジトリにあります。
Functions チームは、これらの基本イメージの毎月の更新プログラムを公開できるよう取り組んでいます。 通常の更新プログラムには、Functions ランタイムと言語の両方について、最新のマイナー バージョンの更新プログラムとセキュリティ修正プログラムが含まれます。 最新の基本イメージからコンテナーを定期的に更新し、コンテナーの更新されたバージョンを再デプロイする必要があります。
コンテナー ホスティング オプション
コンテナー化された関数アプリを Azure でホストするには、いくつかのオプションがあります。
ホスティング オプション | メリット |
---|---|
Azure Container Apps | Azure Functions では、Azure Container Apps でコンテナー化された関数アプリを開発、デプロイ、管理するための統合サポートが提供されます。 これにより、Azure portal で同じ Functions ツールおよびページを使用してアプリを管理できます。 Azure 内の、他のマイクロサービス、API、Web サイト、ワークフロー、またはコンテナーでホストされているプログラムと同じ環境で、イベント ドリブン関数を実行する必要がある場合は、Azure Container Apps を使って関数アプリ コンテナーをホストします。 Container Apps によるホスティングを使用すると、オープンソースの監視、mTLS、Dapr、KEDA の組み込みサポートを使って、マネージド Kubernetes ベースの環境内で関数を実行できます。 ゼロへのスケールをサポートし、サーバーレスの従量課金制ホスティング モデルを提供します。 ワークロード プロファイルを使用することで、専用のハードウェア (GPU も含む) を要求することもできます。 Azure 上でコンテナー化された関数アプリを実行するための推奨ホスティング オプション。 |
Azure Arc 対応 Kubernetes クラスター (プレビュー) | Azure Arc 対応 Kubernetes クラスターで、関数アプリをコードのみのデプロイとして、またはカスタム Linux コンテナー内のいずれかでホストできます。 Azure Arc を使用すると、Kubernetes クラスターをアタッチできるため、Azure で管理および構成できます。 "Azure Arc 対応 Kubernetes クラスターでの Azure Functions コンテナーのホスティングは、現在プレビュー段階です。" |
Azure Functions | コンテナー化された関数アプリを Azure Functions でホストするには、Elastic Premium プランまたは専用プランでコンテナーを実行します。 Premium プランにデプロイすると、動的スケーリングの利点があります。 使用していない既存の App Service プランのリソースを活用するには、専用プランのホスティングを使用することをお勧めします。 |
Kubernetes | Azure Functions ランタイムは、必要な場所や方法で柔軟にホストできるため、関数アプリ コンテナーを Kubernetes クラスターで直接ホストして管理できます。 KEDA (Kubernetes ベースのイベント ドリブン自動スケーリング) は、Azure Functions ランタイムおよびツールにシームレスに組み合わされ、Kubernetes でのイベント ドリブンな自動スケーリングを提供します。 KEDA を使用するか、直接デプロイして、Kubernetes 上でコンテナー化された関数アプリを実行することは、無料で使用できるオープンソースの作業であることに留意してください。これにより、共同作成者やコミュニティからベストエフォートのサポートが提供されます。 Azure Kubernetes Service (AKS) にデプロイする場合でも、クラスター内に独自の関数アプリ コンテナーを維持する責任があります。 |
機能サポートの比較
コンテナー内で関数アプリを実行する際に Azure Functions のさまざまな機能と動作がどの程度サポートされるかは、選択したコンテナー ホスティング オプションによって異なります。
機能/動作 | Container Apps (統合) | Container Apps (直接) | Premium プラン | 専用プラン | Kubernetes |
---|---|---|---|---|---|
製品サポート | はい | いいえ | はい | はい | いいえ |
Functions ポータルの統合 | はい | なし | はい | はい | なし |
イベント ドリブン スケーリング | はい5 | はい (スケール ルール) | はい | いいえ | いいえ |
最大スケール (インスタンス) | 10001 | 10001 | 1002 | 10 から 303 | クラスターによって異なります |
ゼロへのスケールのインスタンス | はい | はい | いいえ | いいえ | KEDA |
実行時間の制限 | 無制限6 | 無制限6 | 無制限7 | 無制限8 | なし |
Core Tools のデプロイ | func azurecontainerapps |
いいえ | いいえ | いいえ | func kubernetes |
リビジョン | なし | はい | なし | なし | なし |
デプロイ スロット | なし | なし | はい | はい | なし |
ストリーミング ログ | はい | はい | はい | はい | なし |
コンソール アクセス | 現在使用できません4 | はい | はい (Kudu を使用) | はい (Kudu を使用) | はい (ポッド内で kubctl を使用) |
コールド スタートの軽減策 | 最小レプリカ数 | スケール ルール | 常時使用可能な、または事前ウォーミングされたインスタンス | 該当なし | 該当なし |
App Service 認証 | 現在使用できません4 | はい | はい | はい | なし |
カスタム ドメイン名 | 現在使用できません4 | はい | はい | はい | なし |
秘密キー証明書 | 現在使用できません4 | はい | はい | はい | なし |
仮想ネットワーク | はい | はい | はい | はい | はい |
可用性ゾーン | はい | はい | はい | はい | はい |
診断 | 現在使用できません4 | はい | はい | はい | なし |
専用のハードウェア | はい (ワークロード プロファイル) | はい (ワークロード プロファイル) | なし | はい | はい |
専用 GPU | はい (ワークロード プロファイル) | はい (ワークロード プロファイル) | なし | いいえ | はい |
構成可能なメモリ/CPU の数 | はい | はい | いいえ | なし | はい |
"無料提供" オプション | はい | はい | いいえ | いいえ | いいえ |
価格の詳細 | Container Apps の課金 | Container Apps の課金 | Premium プランの課金 | 専用プランの課金 | AKS の価格 |
サービス名の要件 | 2 から 32 文字: 小文字、数字、ハイフンのみ使用できます。 先頭は文字、末尾は英数字にする必要があります。 | 2 から 32 文字: 小文字、数字、ハイフンのみ使用できます。 先頭は文字、末尾は英数字にする必要があります。 | 64 文字未満: 英数字とハイフンのみ使用できます。 先頭も末尾もハイフンにすることはできません。 | 64 文字未満: 英数字とハイフンのみ使用できます。 先頭も末尾もハイフンにすることはできません。 | 253 文字未満: 英数字とハイフンのみ使用できます。 先頭と末尾は英数字とする必要があります。 |
- Container Apps での既定値は 10 インスタンスですが、レプリカの最大数を設定でき、合計で最大 1,000 個です。 利用できるコア クォータが十分にある限り、この設定が使用されます。 Azure portal から関数アプリを作成する際は、300 インスタンスに制限されます。
- 一部のリージョンでは、Premium プランの Linux アプリは 100 インスタンスにスケーリングできます。 詳細については、Premium プランに関する記事を参照してください。
- 各種 App Service プラン オプションに固有の制限については、App Service プランの制限に関する記事を参照してください。
- 機能パリティは、Azure Container Apps 上で統合されたホスティングの目標となります。
- KEDA (ほとんどのトリガーでサポートされる) を必要とします。 イベント ドリブン スケーリングをサポートするトリガーについては、「Container Apps ホスティングに関する考慮事項」を参照してください。
- 最小レプリカ数が 0 に設定されている場合、既定のタイムアウトはアプリで使われている特定のトリガーによって異なります。
- 実行タイムアウトの最長期間は適用されません。 ただし、関数の実行に与えられる猶予期間は、スケールイン中は 60 分、プラットフォーム更新中は 10 分です。
- App Service プランが Always On に設定されている必要があります。 プラットフォームの更新中は 10 分の猶予期間が与えられます。
作業の開始
Linux コンテナーで Azure Functions の使用を開始するには、次のリンクを使用します。
ご希望のコースをお選びください。 | 参照する記事: |
---|---|
最初のコンテナー化された関数を作成する | ローカル Linux コンテナーに関数アプリを作成する |
関数を作成して Azure Container Apps にデプロイする | Azure Container Apps で最初のコンテナ化された関数を作成する |
コンテナー化された関数アプリを作成して Azure Functions にデプロイする | コンテナ化された最初の Azure Functions を作成する |
関数を作成して Azure Arc 対応 Kubernetes にデプロイする | Azure Arc でコンテナ化された最初の Azure Functions を作成する (プレビュー) |