Azure Arc 上の Azure Container Apps

Azure Arc 対応 Kubernetes 上の Azure Container Apps では、AKS on Azure Local を含む、Azure データセンターの外部にあるサポート対象の Kubernetes インフラストラクチャ上で Container Apps ワークロードを実行できます。 アプリケーションはAzureリソースとして管理し、アプリケーションコンテナとコンテナアプリのデータプレーンはKubernetesクラスター上で動作します。

Azure Arc上でコンテナアプリを実行することは、以下の助けになります:

  • ユーザー、デバイス、オンプレミスのデータソースの近くにアプリケーションを稼働させて遅延を減らしましょう。
  • 申請処理は、組織のデータレジデンシー、主権、またはコンプライアンス要件を支持する場所に保管してください。
  • アプリケーションチームにコンテナアプリモデルを提供しつつ、インフラチームはKubernetesクラスター、ネットワーク、ストレージ、容量、ライフサイクルの管理を保持します。
  • Azure Resource Manager、Azure CLI、Azureポータルを通じて、サポートされている場所間でアプリケーションを管理できます。
  • リビジョン、入力、自動スケーリング、DAPR、ジョブ、メトリクス、ログストリーミング、カスタムドメイン、アプリケーションコンソールアクセスなど、サポートされたコンテナアプリの機能を活用してください。

Azure Arcのコンテナアプリはホスティングされたコンピュートサービスではありません。 貴組織は基盤となるKubernetesクラスターとその計算、ネットワーク、ストレージ資源を提供し、安全に管理し、拡張し、パッチを当て、運用しています。

クラスタを準備し、最初のアプリケーションをデプロイするには、「Azure Arc enabled Kubernetes cluster をセットアップして Azure Container Apps を動かす」を完了し、「Create a container app on Azure Arc」を完成させてください。

クラスタを設定する際には、以下のリソースを作成または利用します:

  • 接続クラスタ:あなたのKubernetesクラスタの Azure Resource Manager 表現。 クラスター内で動作するAzure ArcエージェントはAzureとの接続を維持しています。 詳細については、「Azure Arc 対応 Kubernetes とは」を参照してください。

  • コンテナアプリクラスタ拡張: クラスタ内にインストールされ、コンテナアプリコントローラ、イングレス、スケーリング、DAPR、ログ、その他のデータプレーンコンポーネントを提供します。 拡張は接続されたクラスタの子リソースです。

  • カスタムロケーション:接続されたクラスター、コンテナアプリ拡張、コンテナアプリリソースが作成されるKubernetes名前空間を関連付けるAzureのロケーションリソースです。

  • コンテナアプリ接続環境: 開発者がコンテナアプリやジョブをデプロイするアプリケーションの境界線。 接続された環境はカスタムロケーションを参照し、アプリケーションが共有する構成を含みます。

依存関係の順序は、接続されたクラスタ > クラスター拡張 > コンテナアプリやジョブ > 接続環境 > カスタムロケーションです。 もし前のリソースが不健康であれば、チェーンの後半のリソースがプロビジョニングに失敗することがあります。

制限事項

Azure Arc対応Kubernetesの上でのAzure Container Appsには以下の制限が適用されます。

制限事項 詳細
サポート対象の Azure リージョン オーストラリア東アジア、東アジア、東アメリカ、北中部アメリカ、東南アジア、スウェーデン中央、イギリス南部、西ヨーロッパ、西アメリカ
クラスターのネットワーク要件 LoadBalancer サービスの種類をサポートする必要があります
ノード OS の要件 Linux のみ。
機能: マネージド ID 使用不可
機能: マネージド ID を使用して ACR からイメージをプルする 使用不可 (マネージド ID によって異なる)
機能:Azure Files SMB ドライバー (>= v1.18.0) は、Azure Files SMB ストレージを使用する前にインストールする必要があります
ログ Log Analytics は、アプリケーションごとではなく、クラスター拡張機能を使用して構成する必要があります

以下の機能がサポートされています。

  • ラベル
  • メトリック
  • 簡単認証
  • ログ ストリーム
  • レジリエンス
  • カスタム ドメイン
  • Container Apps ジョブ
  • リビジョン管理
  • アプリ コンテナー コンソール

重要

Azure LocalでAKSに拡張機能をインストールする前に、HAProxyや他の対応ロードバランサーを設定し、カスタムCoreDNSを設定してください。 Azure LocalでAKS用のCoreDNSを設定するには、az containerapp arc setup-core-dns --distro AksAzureLocalを実行してください。 コマンドオプションについては az containerapp arcを参照してください。

Container Apps 拡張機能によって作成されたリソース

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

この拡張機能は、イベント駆動型およびHTTPスケーリングに用いられるKEDAコンポーネントをインストールできます。 クラスタ内で動作できるのはサポートされたKEDAのインストールが1つだけです。 インストール前に、既存のインストールがあるかどうか kubectl get deployment -A | grep -i keda 確認してください。 KEDAがすでに存在する場合は、停止してサポートされた共存構成を確認してから続けてください。 既存のKEDAインストールを削除したり、非公開の拡張機能設定を適用したりしないでください。他のワークロードがそれを必要とするかもしれません。

以下の表は、あなたのために作成された各拡張機能コンポーネントの役割を説明します。

ポッド 説明 インスタンスの数 CPU メモリ タイプ
<extensionName>-k8se-activator スケーリング パイプラインの一部として使用されます 2 100 ミリCPU 500MB ReplicaSet
<extensionName>-k8se-billing 請求レコードの生成 3 100 ミリCPU 100MB ReplicaSet
<extensionName>-k8se-containerapp-controller クラスター上にリソースを作成し、コンポーネントの状態を維持するコア オペレーター ポッド。 2 100 ミリCPU 1 GB ReplicaSet
<extensionName>-k8se-envoy すべてのデータ プレーン HTTP 要求のフロントエンド プロキシ レイヤー。 受信トラフィックを正しいアプリにルーティングします。 3 1 コア 1,536 MB ReplicaSet
<extensionName>-k8se-envoy-controller Envoy 構成を生成する演算子 2 200 ミリCPU 500MB ReplicaSet
<extensionName>-k8se-event-processor システムによって使用可能な最初のインスタンスが取得される間に、ゼロにスケーリングされたアプリに役立つ代替ルーティング先。 2 100 ミリCPU 500MB ReplicaSet
<extensionName>-k8se-http-scaler KEDA にスケーリング情報を提供するために、受信要求のボリュームを監視します。 1 100 ミリCPU 500MB ReplicaSet
<extensionName>-k8se-keda-cosmosdb-scaler KEDA Cosmos DB スケーラー 1 10 m 128MB ReplicaSet
<extensionName>-k8se-keda-metrics-apiserver KEDA メトリック サーバー 1 1 コア 1,000MB ReplicaSet
<extensionName>-k8se-keda-operator 0/1 から N 個のインスタンスへのワークロードのスケール インとスケール アウト 1 100 ミリCPU 500MB ReplicaSet
<extensionName>-k8se-log-processor アプリやその他のコンポーネントからログを収集し、Log Analytics に送信します。 2 200 ミリCPU 500MB デーモンセット
<extensionName>-k8se-mdm メトリックとログ エージェント 2 500 ミリCPU 500MB ReplicaSet
dapr-metrics Dapr メトリック ポッド 1 100 ミリCPU 500MB ReplicaSet
dapr-operator Dapr のコンポーネントの更新とサービス エンドポイントを管理する 1 100 ミリCPU 500MB ReplicaSet
dapr-placement-server アクターのみに使用 - アクター インスタンスをポッドにマップするマッピング テーブルを作成します 1 100 ミリCPU 500MB StatefulSet
dapr-sentry サービス間の mTLS を管理し、CA として機能します 2 800ミリCPU 200MB ReplicaSet

Azure Arc 上の Azure Container Apps に関する FAQ

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

各機能のサポート状況と前提条件については 「制限事項」を参照してください。 Azureポータルは接続環境では利用できないコントロールも無効にします。 サポートはインストールされている拡張機能のバージョンによって異なるため、最近追加された機能を使う前に拡張機能の リリースノート を必ず確認してください。

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

いいえ。 接続された環境では、コンテナ アプリまたはジョブにマネージド ID を割り当てることはできません。 Azure Container Registry からイメージをプルするためのマネージド ID 認証も利用できません。

アプリケーションがAzureリソースに認証する必要がある場合は、Microsoft Entraアプリケーションとサービスプリンシパルを使いましょう。

  1. 申請登録を作成または特定してください。
  2. アプリケーションで必要なAzureロールのみをサービスプリンシパルに付与してください。
  3. 認証情報をコンテナアプリのシークレットとして保存します。
  4. アプリケーション内の環境変数を通じて秘密を参照します。
  5. 資格のローテーションプロセスを確立しましょう。

詳細については、「 Microsoft Entra ID のアプリケーション オブジェクトとサービス プリンシパル オブジェクト」を参照してください。 画像やソースリポジトリに認証情報を埋め込むのは避けましょう。

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

コンテナアプリやジョブは、基盤となるKubernetesクラスタ内で利用可能な割り当て可能なCPU、メモリ、特殊リソース内でのみスケール可能です。 最大レプリカ数を設定しても容量は確保されません。

クラスタの容量が不足すると、Kubernetesは新しいレプリカを保留のままにし、アプリケーションは要求されたレプリカ数に達しません。 以下でこの状態を確認してください:

kubectl get pods -n <APPS_NAMESPACE>
kubectl describe pod <PENDING_POD_NAME> -n <APPS_NAMESPACE>
kubectl get events -n <APPS_NAMESPACE> --sort-by=.lastTimestamp

拡張コンポーネント、ピークのアプリケーションレプリカ、Kubernetesシステムのワークロード、ローリングアップグレード、ノード障害のためのクラスター容量を計画しましょう。

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

システム コンポーネントとアプリケーションの両方のログが標準出力に書き込まれます。

どちらのログの種類も、標準の Kubernetes ツールを使用して分析用に収集できます。 また、Log Analytics ワークスペースを使用してアプリ環境クラスター拡張機能を構成し、そのワークスペースにすべてのログを送信することもできます。

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

SMB ドライバーをインストールする方法

SMB ドライバーは、次の Helm コマンドを使用してインストールできます。 その他のインストール方法については、「 Kubernetes クラスターにドライバーをインストールする」を参照してください。

helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.18.0

拡張機能を Windows ノードにインストールすることはできますか

いいえ。拡張機能を Windows ノードにインストールすることはできません。 この拡張機能は、Linux ノードへのインストールのみをサポートしています。

Arm64ベースのクラスタにContainer Apps拡張機能をデプロイできますか?

いいえ。 この拡張機能はArm64ベースのクラスタをサポートしていません。