App contenitore di Azure in Azure Arc

App contenitore di Azure in Kubernetes abilitato per Azure Arc consente di eseguire workload di App contenitore su un'infrastruttura Kubernetes supportata all'esterno dei data center di Azure, incluso il servizio Azure Kubernetes in Azure Localee. Gestisci le applicazioni come risorse Azure mentre i container applicativi e il piano dati Container Apps girano sul tuo cluster Kubernetes.

Eseguire Container Apps su Azure Arc può aiutarti:

  • Esegui applicazioni vicino a utenti, dispositivi o fonti dati on-premises per ridurre la latenza.
  • Mantieni l'elaborazione delle domande in una posizione che supporti i requisiti di residenza dei dati, sovranità o conformità della tua organizzazione.
  • Fornire ai team applicative un modello applicativo Container Apps mentre i team infrastrutturali mantengono il controllo del cluster Kubernetes, della rete, dello storage, della capacità e del ciclo di vita.
  • Gestisci le applicazioni tra le sedi supportate tramite Azure Resource Manager, interfaccia della riga di comando di Azure e il portale Azure.
  • Utilizza funzionalità supportate dalle Container Apps come revisioni, ingressi, autoscaling, Dapr, jobs, metriche, log streaming, domini personalizzati e accesso alla console applicativa.

Container Apps su Azure Arc non è un servizio di calcolo ospitato. La tua organizzazione fornisce, protegge, scala, patcha e gestisce il cluster Kubernetes sottostante e le sue risorse di calcolo, networking e archiviazione.

Per preparare un cluster e distribuire la tua prima applicazione, completa Configura un cluster Kubernetes abilitato per Azure Arc per eseguire App contenitore di Azure, e poi completa Crea un'app container su Azure Arc.

Mentre configuri il tuo cluster, crei o utilizzi queste risorse:

  • Cluster connesso: La rappresentazione Azure Resource Manager del tuo cluster Kubernetes. Gli agenti Azure Arc che girano nel cluster mantengono la connessione ad Azure. Per altre informazioni, vedere Che cos'è Kubernetes abilitato per Azure Arc?

  • Estensione del cluster Container Apps: Software installato nel cluster che fornisce i controller Container Apps, ingress, scaling, Dapr, logging e altri componenti del piano dati. L'estensione è una risorsa figlia del cluster connesso.

  • Posizione personalizzata: Una risorsa di localizzazione Azure che associa il cluster connesso, l'estensione Container Apps e il namespace Kubernetes dove vengono create le risorse Container Apps.

  • Ambiente connesso di Container Apps: L'ambito dell'applicazione in cui gli sviluppatori distribuiscono app contenitore e processi. L'ambiente connesso fa riferimento alla posizione personalizzata e contiene la configurazione condivisa dalle sue applicazioni.

L'ordine delle dipendenze è: cluster connesso > estensione del cluster > posizione personalizzata > ambiente connesso > app contenitore o processo. Se una risorsa precedente è malsana, le risorse più avanzate nella catena potrebbero non essere approvvigionate.

Limitazioni

Le seguenti limitazioni si applicano ad App contenitore di Azure su Kubernetes abilitato per Azure Arc.

Limitazione Dettagli
Aree di Azure supportate Australia Est, Asia orientale, Est degli Stati Uniti, Nord Centro degli Stati Uniti, Sud-est asiatico, Svezia centrale, Regno Unito Sud, Europa occidentale, Ovest degli Stati Uniti
Requisito di rete del cluster Deve supportare il tipo di servizio LoadBalancer
Requisito del sistema operativo del nodo Solo Linux.
Funzionalità: Identità gestite Non disponibile
Funzionalità: eseguire il pull di immagini da ACR con identità gestita Non disponibile (dipende dalle identità gestite)
Caratteristica: File di Azure Il driver SMB (>= v1.18.0) dovrebbe essere installato prima di utilizzare lo storage SMB di File di Azure
Log Log Analytics deve essere configurato con l'estensione del cluster; non per applicazione

Sono supportate le seguenti funzionalità:

  • Etichette
  • Metriche
  • Autenticazione semplice
  • Flusso di log
  • Resilienza
  • Domini personalizzati
  • Processi di App contenitore
  • Gestione delle revisioni
  • Console del contenitore di app

Importante

Prima di installare l'estensione su AKS su Azure Locale, configura HAProxy o un altro bilanciatore di carico supportato e configura un CoreDNS personalizzato. Per configurare CoreDNS per AKS su Azure Locale, esegui az containerapp arc setup-core-dns --distro AksAzureLocal. Per le opzioni di comando, vedi az containerapp arc.

Risorse create dall'estensione App contenitore

Quando l'estensione App contenitore viene installata nel cluster Kubernetes abilitato per Azure Arc, vengono create diverse risorse nello spazio dei nomi della versione specificato. Queste risorse consentono al cluster di essere un'estensione del provider di risorse Microsoft.App per supportare la gestione e il funzionamento delle app.

L'estensione può installare i componenti KEDA utilizzati per la scalabilità guidata da eventi e HTTP. Solo un'installazione KEDA supportata può essere eseguita nel cluster. Prima dell'installazione, esegui kubectl get deployment -A | grep -i keda per verificare se esiste già un'installazione. Se KEDA esiste già, fermarsi e confermare la configurazione di coesistenza supportata prima di continuare. Non rimuovere l'installazione KEDA esistente né applicare impostazioni di estensione non documentate perché altri carichi di lavoro potrebbero dipendere da essa.

La tabella seguente descrive il ruolo di ogni componente di estensione creato per te:

Pod Descrizione Numero di istanze CPU (unità centrale di elaborazione) Memoria TIPO
<extensionName>-k8se-activator Usato come parte della pipeline di ridimensionamento 2 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-billing Generazione di record di fatturazione 3 100 millicpu 100 MB ReplicaSet
<extensionName>-k8se-containerapp-controller Pod dell'operatore principale che crea risorse nel cluster e mantiene lo stato dei componenti. 2 100 millicpu 1 GB ReplicaSet
<extensionName>-k8se-envoy Livello proxy front-end per tutte le richieste HTTP del piano dati. Instrada il traffico in ingresso alle app corrette. 3 1 core 1.536 MB ReplicaSet
<extensionName>-k8se-envoy-controller Operatore, che genera la configurazione Envoy 2 200 millicpu 500 MB ReplicaSet
<extensionName>-k8se-event-processor Una destinazione di routing alternativa di aiuto per le app con scalabilità orizzontale a zero mentre il sistema ottiene la prima istanza disponibile. 2 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-http-scaler Monitora il volume delle richieste in ingresso per fornire informazioni di ridimensionamento per KEDA. 1 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-keda-cosmosdb-scaler Scalare KEDA Cosmos DB 1 10 m 128 MB ReplicaSet
<extensionName>-k8se-keda-metrics-apiserver Server delle metriche KEDA 1 1 core 1.000 MB ReplicaSet
<extensionName>-k8se-keda-operator Ridimensiona i carichi di lavoro da 0/1 a N istanze 1 100 millicpu 500 MB ReplicaSet
<extensionName>-k8se-log-processor Raccoglie i log dalle app e da altri componenti e li invia a Log Analytics. 2 200 millicpu 500 MB DaemonSet
<extensionName>-k8se-mdm Agente metriche e log 2 500 millicpu (misura di potenza di calcolo in termini di millesimi di CPU) 500 MB ReplicaSet
dapr-metrics Pod delle metriche Dapr 1 100 millicpu 500 MB ReplicaSet
dapr-operator Gestisce gli aggiornamenti dei componenti e gli endpoint di servizio per Dapr 1 100 millicpu 500 MB ReplicaSet
dapr-placement-server Usato solo per Actors: crea tabelle di mapping che eseguono il mapping delle istanze dell'attore ai pod 1 100 millicpu 500 MB StatefulSet
dapr-sentry Gestisce mTLS tra i servizi e funge da CA 2 800 millicpu 200 MB ReplicaSet

Domande frequenti sulle app di Azure Container in Azure Arc

Quali funzionalità di App contenitore sono supportate?

Per lo stato di supporto documentato e i prerequisiti di ogni funzionalità, vedi Limitazioni. Il portale Azure disabilita anche i controlli non disponibili in un ambiente connesso. Il supporto può dipendere dalla versione installata dell'estensione, quindi verifica le note di rilascio dell'estensione prima di usare una funzione aggiunta di recente.

Le identità gestite sono supportate?

No. Non puoi assegnare un'identità gestita a un'app container o a un lavoro in un ambiente connesso. Anche l'autenticazione con identità gestita per le pull di immagini di Registro Azure Container non è disponibile.

Se un'applicazione deve autenticarsi a una risorsa di Azure, usa un'applicazione Microsoft Entra e un service principal:

  1. Crea o individua una registrazione dell'applicazione.
  2. Concedere al suo principale di servizio solo il ruolo Azure richiesto dall'applicazione.
  3. Conserva la credenziale come segreto di Container Apps.
  4. Fai riferimento al segreto attraverso variabili ambientali nell'applicazione.
  5. Stabilisci un processo di rotazione delle credenziali.

Per altre informazioni, vedere Oggetti applicazione e oggetti entità servizio in Microsoft Entra ID. Evita di incorporare credenziali in un repository di immagini o sorgenti.

Esistono limiti di scalabilità?

Le app container e i job possono scalare solo all'interno della CPU, della memoria e delle risorse specializzate allocatibili nel cluster Kubernetes sottostante. Impostare un numero massimo di repliche non riserva capacità.

Quando il cluster manca di capacità, Kubernetes lascia nuove repliche in sospeso e l'applicazione non raggiunge il numero richiesto. Verifica questa condizione con:

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

Pianifica la capacità del cluster per i componenti di estensione, le repliche di picco delle applicazioni, i carichi di lavoro di sistema Kubernetes, gli aggiornamenti rolling e i guasti dei nodi.

Quali log vengono raccolti?

I log per i componenti di sistema e le applicazioni vengono scritti nell'output standard.

Entrambi i tipi di log possono essere raccolti per l'analisi usando gli strumenti standard di Kubernetes. È anche possibile configurare l'estensione del cluster dell'ambiente dell'applicazione con un'area di lavoro Log Analytics e invia tutti i log a tale area di lavoro.

Per impostazione predefinita, i log dei componenti di sistema vengono inviati al team di Azure. I log dell'applicazione non vengono inviati. È possibile impedire il trasferimento dei log impostando logProcessor.enabled=false come impostazione di configurazione dell'estensione. Questa impostazione di configurazione disabilita l'inoltro dell'applicazione all'area di lavoro Log Analytics. La disabilitazione del processore di log potrebbe influire sul tempo necessario per tutti i casi di supporto e verrà chiesto di raccogliere i log dall'output standard tramite altri mezzi.

Come è possibile installare il driver SMB?

È possibile installare il driver SMB usando il comando Helm seguente. Per altri metodi di installazione, vedere Installare il driver in un cluster 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

L'estensione può essere installata nei nodi Windows?

No, l'estensione non può essere installata nei nodi Windows. L'estensione supporta l'installazione solo in nodi Linux.

Posso distribuire l'estensione Container Apps su un cluster basato su Arm64?

No. L'estensione non supporta cluster basati su Arm64.