Azure Arc の App Service、Functions、および Logic Apps (プレビュー)

App Service、Functions、Logic Apps を Azure Arc 対応 Kubernetes クラスターで実行できます。 Kubernetes クラスターは、オンプレミスにすることも、サードパーティのクラウドでホストすることもできます。 このアプローチにより、アプリ開発者は App Service の機能を利用できます。 同時に、IT 管理者は、内部のインフラストラクチャで App Service アプリをホストすることによって企業のコンプライアンスを維持することができます。 また、既存の Kubernetes クラスターで App Service を実行することで、他の IT オペレーターが他のクラウド プロバイダーへの以前の投資を保護することもできます。

Note

App Service、Functions、Logic Apps 用に Kubernetes クラスターを設定する方法については、「App Service Kubernetes 環境の作成 (プレビュー)」を参照してください。

ほとんどの場合、アプリ開発者が知る必要があるのは、デプロイされた Kubernetes 環境を表す適切な Azure リージョンにデプロイする方法だけです。 環境を提供し、基盤となる Kubernetes インフラストラクチャを維持するオペレーターの場合は、次の Azure リソースに注意する必要があります。

  • 接続されているクラスター。Kubernetes インフラストラクチャの Azure プロジェクションです。 詳細については、「Azure Arc 対応 Kubernetes とは」を参照してください。
  • クラスターの拡張機能。接続されたクラスター リソースのサブリソースです。 App Service 拡張機能によって、接続されているクラスターに必要なポッドがインストールされます。 クラスター拡張機能の詳細については、「Azure Arc 対応 Kubernetes のクラスター拡張機能」を参照してください。
  • カスタムの場所。拡張機能のグループをまとめ、それらを作成されたリソースの名前空間にマップします。 詳細については、「Azure Arc 対応 Kubernetes でのカスタムの場所」を参照してください。
  • App Service Kubernetes 環境。これにより、クラスター操作に関係なく、アプリ間で共通の構成が可能になります。 概念的には、これはカスタムの場所のリソースにデプロイされ、アプリ開発者がこの環境にアプリを作成します。 このリソースについては、「App Service Kubernetes 環境」で詳しく説明します。

パブリック プレビューの制限事項

App Service Kubernetes 環境には、次のパブリック プレビューの制限が適用されます。 この制限のリストは、変更と機能が利用可能になったときに更新されます。

制限事項 詳細
サポート対象の Azure リージョン 米国東部、西ヨーロッパ
クラスターのネットワーク要件 LoadBalancer のサービスの種類をサポートする必要があります
クラスター ストレージの要件 必要に応じて、コード ベースのアプリのデプロイとビルドをサポートするために、拡張機能で使用できるクラスター接続ストレージ クラスが必要です
機能: ネットワーク 使用不可 (クラスター ネットワークに依存)
機能: マネージド ID 使用不可
機能: Key Vault 参照 使用不可 (マネージド ID によって異なる)
機能: マネージド ID を使用して ACR からイメージをプルする 使用不可 (マネージド ID によって異なる)
機能: Functions と Logic Apps のポータル内編集 使用不可
機能: ポータルの機能またはキーのリスト クラスターにパブリックに到達できない場合は使用できません
機能: FTP 発行 使用不可
ログ Log Analytics は、サイトごとではなく、クラスター拡張機能を使用して構成する必要がある

App Service 拡張機能によって作成されたポッド

Azure Arc 対応 Kubernetes クラスターに App Service 拡張機能がインストールされると、指定されたリリース名前空間で作成された複数のポッドが表示されます。 これらのポッドを使用すると、Kubernetes クラスターを Azure の Microsoft.Web リソース プロバイダーの拡張機能にして、アプリの管理と操作をサポートできます。 必要に応じて、拡張機能を使用してイベント ドリブン スケーリング用に KEDA をインストールできます。

次の表では、既定で作成される各ポッドの役割について説明します。

Pod Description
<extensionName>-k8se-app-controller クラスター上にリソースを作成し、コンポーネントの状態を維持するコア オペレーター ポッド。
<extensionName>-k8se-envoy すべてのデータ プレーン要求のフロントエンド プロキシ レイヤー。 受信トラフィックを正しいアプリにルーティングします。
<extensionName>-k8se-activator システムによって使用可能な最初のインスタンスが取得される間に、ゼロにスケーリングされたアプリに役立つ代替ルーティング先。
<extensionName>-k8se-build-service デプロイ操作をサポートし、高度なツール機能を提供します。
<extensionName>-k8se-http-scaler KEDA にスケーリング情報を提供するために、受信要求のボリュームを監視します。
<extensionName>-k8se-img-cacher プレースホルダーとアプリのイメージをノードのローカル キャッシュにプルします。
<extensionName>-k8se-log-processor アプリやその他のコンポーネントからログを収集し、Log Analytics に送信します。
placeholder-azure-functions-* Azure Functions のコールド スタートを高速化するために使用されます。

App Service Kubernetes 環境

アプリを作成するには、事前に App Service Kubernetes 環境リソースが必要です。 これにより、カスタムの場所にあるアプリに共通する構成 (既定の DNS サフィックスなど) が可能になります。

1 つのカスタムの場所に作成できる Kubernetes 環境リソースは 1 つだけです。 ほとんどの場合、アプリを作成してデプロイする開発者は、リソースを直接認識する必要はありません。 指定されたカスタムの場所 ID から直接推論できます。 ただし、Azure Resource Manager テンプレートを定義する場合、すべてのプラン リソースは環境のリソース ID を直接参照する必要があります。 プランと指定した環境のカスタムの場所の値が一致している必要があります。

Azure Arc の App Service、Functions、および Logic Apps (プレビュー) に関する FAQ

料金はどのくらいですか。

Azure Arc 上の App Service は、パブリック プレビュー期間中は無料です。

Windows と Linux のアプリはどちらもサポートされていますか?

コードとカスタム コンテナーの両方がサポートされているのは、Linux ベースのアプリのみです。 Windows アプリはサポートされていません。

どの組み込みアプリケーション スタックがサポートされていますか?

すべての組み込み Linux スタックがサポートされています。

すべてのアプリのデプロイの種類がサポートされていますか?

FTP デプロイはサポートされていません。 現時点では、az webapp up もサポートされていません。 Git、ZIP、CI/CD、Visual Studio、Visual Studio Code など、その他のデプロイ方法はサポートされています。

どの App Service 機能がサポートされていますか?

プレビュー期間中は、特定の App Service 機能が検証されています。 サポートされている場合は、Azure portal の左側のナビゲーション オプションがアクティブ化されます。 まだサポートされていない機能は淡色表示のままです。

すべてのネットワーク機能がサポートされていますか?

いいえ。 ハイブリッド接続や Virtual Network 統合などのネットワーク機能はサポートされていません。 アクセス制限のサポートが 2022 年 4 月に追加されました。 ネットワークは、Kubernetes クラスター自体のネットワーク規則で直接処理する必要があります。

マネージド ID はサポートされていますか?

いいえ。 Azure Arc で実行している場合、アプリにマネージド ID を割り当てることはできません。アプリで別の Azure リソースを操作するために ID が必要な場合は、代わりにアプリケーション サービス プリンシパルの使用を検討してください。

スケーリングの制限はありますか?

Azure Arc を使用する Kubernetes 上の Azure App Service によってデプロイされたすべてのアプリケーションは、基盤となる Kubernetes クラスターの制限内でスケーリングできます。 基盤となる Kubernetes クラスターにおいて使用可能なコンピューティング リソース (主に CPU とメモリ) が不足すると、アプリケーションがスケーリングできるのは、Kubernetes において使用可能なリソースでスケジュールできるアプリケーションのインスタンス数までに限られます。

どのようなログが収集されますか?

システム コンポーネントとアプリケーションの両方のログが標準出力に書き込まれます。 どちらのログの種類も、標準の Kubernetes ツールを使用して分析用に収集できます。 また、Log Analytics ワークスペースを使用して App Service クラスター拡張機能を構成し、そのワークスペースにすべてのログを送信することもできます。

既定では、システム コンポーネントからのログは Azure チームに送信されます。 アプリケーション ログは送信されません。 拡張機能の構成設定として logProcessor.enabled=false を設定することで、これらのログが転送されないようにすることができます。 この構成設定により、Log Analytics ワークスペースへのアプリケーションの転送も無効になります。 ログ プロセッサを無効にすると、サポート ケースに必要な時間に影響する可能性があります。また、他の方法を使用して標準出力からログを収集するように求められます。

プロバイダー登録エラーが発生した場合はどうすればよいですか?

Kubernetes 環境リソースを作成するときに、一部のサブスクリプションで、"登録済みのリソース プロバイダーが見つかりませんでした" というエラーが表示される場合があります。 エラーの詳細に、有効と見なされる一連の場所と API バージョンが含まれていることがあります。 このエラーが返される場合、サブスクリプションを Microsoft.Web プロバイダーに再登録することが必要である可能性があります。この操作は、既存のアプリケーションや API には影響しません。 再登録するには、Azure CLI を使用して az provider register --namespace Microsoft.Web --wait を実行します。 次に、Kubernetes 環境コマンドを再試行します。

ARM64 で動作しているクラスターに、Application のサービスの拡張機能をデプロイできますか。

ARM64 で動作しているクラスターは現在サポートされていません。

拡張機能をデプロイできる Kubernetes ディストリビューションはどれですか?

この拡張機能は、AKS、AKS on Azure Stack HCI、Google Kubernetes Engine、Amazon Elastic Kubernetes Service、Kubernetes Cluster API で検証済みです。

拡張機能のリリース ノート

アプリケーション サービス拡張機能 v 0.9.0 (2021 年 5 月)

  • アプリケーション サービス拡張の初期パブリック プレビュー リリース。
  • Web、関数、およびロジック アプリケーションのコードとコンテナーベースのデプロイのサポート。
  • Web アプリケーション ランタイム サポート -.NET 3.1 および 5.0、ノード JS 12 および 14、Python 3.6、3.7、3.8、PHP 7.3 および 7.4、Ruby 2.5、2.5.5、2.6、および 2.6.2。Java SE 8u232、8u242、8u252、11.05、11.06、11.07。Tomcat 8.5、8.5.41、8.5.53、8.5.57、9.0、9.0.20、9.0.33、9.0.37。

アプリケーション サービス拡張 v 0.10.0 (2021 年 11 月)

  • Envoy エンドポイントへの割り当てに必要な、事前割り当て済み静的 IP アドレスの要件を削除しました
  • Keda を v2.4.0 にアップグレードする
  • Envoy を v1.19.0 にアップグレードする
  • Azure Function runtime を v3.3.1 にアップグレードする
  • App Controller と Envoy Controller の既定のレプリカ数を 2 に設定して安定性をさらに向上させる

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

アプリケーション サービスの拡張機能 v 0.11.0 (2021 年 12 月)

  • Java および .NET Web アプリケーションの Application Insights サポートを追加しました
  • .NET 6.0 Web アプリケーションのサポートを追加しました
  • .NET Core 2.0 を削除しました
  • スロット スワップ操作が失敗する原因となった問題を解決しました
  • Ruby web アプリケーションの作成中に発生していた問題を解決しました

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0

アプリケーション サービスの拡張機能 v 0.11.1 (2021 年 12 月)

  • CRD の更新に関する問題を解決するためのマイナー リリース

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1

アプリケーション サービス拡張機能 v 0.12.0 (2022 年 1 月)

  • 送信プロキシのサポート
  • ビルド サービスでの並行ビルドのサポート
  • Envoy を 1.20.1 にアップグレードする
  • .NET アプリケーションの Application Insights サポートの問題を解決しました

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0

アプリケーション サービス拡張機能 v 0.12.1 (2022 年 3 月)

  • Log Analytics ワークスペースへのログ記録を有効にするためのアウトバウンド プロキシ サポートに関する問題を解決しました

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1

アプリケーション サービス拡張機能 v 0.12.2 (2022 年 3 月)

  • 拡張機能の名前が 35 文字を超えていると、v 0.12.0 からのアップグレードが失敗する問題を解決するための更新

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2

アプリケーション サービス拡張機能 v 0.13.0 (2022 年 4 月)

  • Node.js アプリケーションについて Application Insights コードなし統合のサポートを追加しました
  • CLI によるアクセス制限のサポートを追加しました
  • 拡張機能のインストールが失敗した場合に、問題のトラブルシューティングを支援するために、詳細情報を用意しました

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0

アプリケーション サービス拡張機能 v 0.13.1 (2022 年 4 月)

  • クラスターを v 0.13.0 に自動アップグレードするときに発生するアップグレード エラーを解決するための更新プログラム

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1

アプリケーション サービスの拡張機能 v 0.13.5 (2023 年 12 月)

  • Kubernetes バージョン 1.26 以降をサポートするように更新
  • Envoy を 1.2.1 に更新
  • Keda を v2.10.0 に更新
  • EasyAuth を 1.6.20 に更新
  • サポートされている言語の基本イメージを更新

拡張機能が安定したバージョンであり、auto-upgrade-minor-version が true に設定されている場合、拡張機能は自動的にアップグレードされます。 拡張機能を最新バージョンに手動でアップグレードするには、次のコマンドを実行します。

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.5

次の手順

App Service Kubernetes 環境の作成 (プレビュー)