Azure Container-Apps in Azure Arc

Azure Container Apps auf Azure Arc-fähigem Kubernetes ermöglicht es Ihnen, Container Apps-Workloads auf unterstützter Kubernetes-Infrastruktur außerhalb von Azure-Rechenzentren auszuführen, einschließlich AKS auf Azure Local. Sie verwalten die Anwendungen als Azure-Ressourcen, während die Anwendungscontainer und die Container Apps Data Plane auf Ihrem Kubernetes-Cluster laufen.

Das Ausführen von Container-Apps auf Azure Arc kann Ihnen helfen:

  • Führen Sie Anwendungen in der Nähe von Nutzern, Geräten oder lokalen Datenquellen aus, um die Latenz zu reduzieren.
  • Führen Sie die Bearbeitung der Bewerbung an einem Ort auf, der die Anforderungen Ihrer Organisation an Datenresidenz, Souveränität oder Compliance unterstützt.
  • Geben Sie den Anwendungsteams ein Container-Apps-Anwendungsmodell, während die Infrastrukturteams die Kontrolle über den Kubernetes-Cluster, das Netzwerk, den Speicher, die Kapazität und den Lebenszyklus behalten.
  • Verwalten Sie Anwendungen an unterstützten Standorten über Azure Resource Manager, Azure CLI und das Azure-Portal.
  • Nutzen Sie unterstützte Container-Apps wie Revisionen, Ingress, Autoscaling, Dapr, Jobs, Metriken, Log-Streaming, benutzerdefinierte Domains und Zugriff auf die Anwendungskonsole.

Container Apps auf Azure Arc ist kein gehosteter Rechendienst. Ihre Organisation stellt den zugrunde liegenden Kubernetes-Cluster sowie dessen Rechen-, Netzwerk- und Speicherressourcen bereit, sichert, skaliert, patcht und betreibt sie.

Um einen Cluster vorzubereiten und Ihre erste Anwendung bereitzustellen, schließen Sie Einrichten eines für Azure Arc aktivierten Kubernetes-Clusters zum Ausführen von Azure Container Apps ab, und schließen Sie dann Erstellen einer Container-App auf Azure Arc ab.

Während Sie Ihren Cluster konfigurieren, erstellen oder nutzen Sie diese Ressourcen:

  • Verbundener Cluster: Die Azure Resource Manager-Darstellung Ihres Kubernetes-Clusters. Azure Arc-Agenten, die im Cluster laufen, halten die Verbindung zu Azure aufrecht. Weitere Informationen finden Sie unter Was ist Kubernetes mit Azure Arc-Unterstützung?.

  • Container-Apps-Clustererweiterung: Im Cluster installierte Software, die die Container-Apps-Controller, Ingress, Skalierung, Dapr, Protokollierung und andere Data-Plane-Komponenten bereitstellt. Die Erweiterung ist eine untergeordnete Ressource des verbundenen Clusters.

  • Benutzerdefinierter Standort: Eine Azure-Standortressource, die den verbundenen Cluster, die Container-Apps-Erweiterung und den Kubernetes-Namensraum verknüpft, in dem Container-Apps-Ressourcen erstellt werden.

  • Container-Apps verbundene Umgebung: Die Anwendungsgrenze, in die Entwickler Container-Apps und Jobs einsetzen. Die verbundene Umgebung verweist auf den benutzerdefinierten Standort und enthält Konfigurationen, die von ihren Anwendungen geteilt werden.

Die Abhängigkeitsreihenfolge lautet: verbundener Cluster > Clustererweiterung > benutzerdefinierter Standort > verbundene Umgebung > Container-App oder Job. Wenn eine frühere Ressource nicht funktionsfähig ist, können Ressourcen später in der Kette möglicherweise nicht bereitgestellt werden.

Einschränkungen

Die folgenden Einschränkungen gelten für Azure Container Apps auf Azure Arc-fähigem Kubernetes.

Einschränkung Einzelheiten
Unterstützte Azure-Regionen Australien Ost, Ostasien, Osten der USA, Nordzentral USA, Südostasien, Schweden Zentral, Großbritannien Südeuropa, Westeuropa und Westamerika
Clusternetzwerkanforderung Muss den Diensttyp LoadBalancer unterstützen
Anforderung an das Knotenbetriebssystem Nur Linux
Funktion: Verwaltete Identitäten Nicht verfügbar
Funktion: Images aus ACR mit verwalteter Identität herausziehen Nicht verfügbar (abhängig von verwalteten Identitäten)
Funktion: Azure Files SMB-Treiber (>= v1.18.0) sollte vor der Nutzung von Azure Files SMB Storage installiert werden
Protokolle Log Analytics muss mit der Clustererweiterung konfiguriert werden (nicht pro Anwendung).

Die folgenden Features werden unterstützt:

  • Beschriftungen
  • Metriken
  • Einfache Authentifizierung
  • Protokolldatenstrom
  • Resilienz
  • Benutzerdefinierte Domänen
  • Container Apps-Aufträge
  • Revisionsverwaltung
  • App-Containerkonsole

Wichtig

Bevor du die Erweiterung auf AKS unter Azure Local installierst, konfiguriere HAProxy oder einen anderen unterstützten Load Balancer und konfiguriere ein eigenes CoreDNS. Um CoreDNS für AKS auf Azure Local zu konfigurieren, führen Sie az containerapp arc setup-core-dns --distro AksAzureLocal aus. Für Befehlsoptionen siehe az containerapp arc.

Von der Container Apps-Erweiterung erstellte Ressourcen

Wenn die Container Apps-Erweiterung in dem Kubernetes-Cluster mit Azure Arc-Unterstützung installiert wird, werden mehrere Ressourcen im angegebenen Releasenamespace erstellt. Diese Ressourcen ermöglichen es Ihrem Cluster, als Erweiterung des Microsoft.App-Ressourcenanbieters zu fungieren, um die Verwaltung und den Betrieb Ihrer Apps zu unterstützen.

Die Erweiterung kann die KEDA-Komponenten installieren, die für ereignisgesteuerte und HTTP-Skalierung verwendet werden. Es kann nur eine unterstützte KEDA-Installation im Cluster laufen. Vor der Installation führen Sie kubectl get deployment -A | grep -i keda aus, um zu prüfen, ob bereits eine Installation vorhanden ist. Wenn KEDA bereits existiert, stoppen Sie und bestätigen Sie die unterstützte Koexistenzkonfiguration, bevor Sie fortfahren. Entferne nicht die bestehende KEDA-Installation und wende keine undokumentierten Erweiterungseinstellungen an, da andere Arbeitslasten davon abhängen könnten.

Die folgende Tabelle beschreibt die Rolle jeder für Sie erstellten Erweiterungskomponente:

Pod BESCHREIBUNG Anzahl von Instanzen Prozessor Arbeitsspeicher type
<extensionName>-k8se-activator Wird als Teil der Skalierungspipeline verwendet 2 100 Millicpu 500 MB ReplicaSet
<extensionName>-k8se-billing Generierung von Abrechnungsdatensätzen 3 100 Millicpu 100 MB ReplicaSet
<extensionName>-k8se-containerapp-controller Der Kern-Operatorpod, der Ressourcen im Cluster erstellt und den Zustand der Komponenten verwaltet. 2 100 Millicpu 1 GB ReplicaSet
<extensionName>-k8se-envoy Eine Front-End-Proxyebene für alle HTTP-Anforderungen auf Datenebene. Es leitet den eingehenden Datenverkehr an die richtigen Apps weiter. 3 1 Kern 1.536 MB ReplicaSet
<extensionName>-k8se-envoy-controller Operator, der die Envoy-Konfiguration generiert 2 200 Millicpu 500 MB ReplicaSet
<extensionName>-k8se-event-processor Ein alternatives Routing-Ziel zur Unterstützung von Apps, die auf 0 (null) skaliert wurden, während das System die erste verfügbare Instanz erhält. 2 100 Millicpu 500 MB ReplicaSet
<extensionName>-k8se-http-scaler Überwacht das eingehende Anforderungsvolumen, um Skalierungsinformationen für KEDA bereitzustellen. 1 100 Millicpu 500 MB ReplicaSet
<extensionName>-k8se-keda-cosmosdb-scaler KEDA-Cosmos DB-Scaler 1 10 m 128 MB ReplicaSet
<extensionName>-k8se-keda-metrics-apiserver KEDA-Metrikserver 1 1 Kern 1.000 MB ReplicaSet
<extensionName>-k8se-keda-operator Skaliert Workloads von 0/1 auf N-Instanzen (vertikal und horizontal) 1 100 Millicpu 500 MB ReplicaSet
<extensionName>-k8se-log-processor Erfasst Protokolle von Apps und anderen Komponenten und sendet sie an Log Analytics. 2 200 Millicpu 500 MB DaemonSet
<extensionName>-k8se-mdm Agent für Metriken und Protokolle 2 500 Millicpu 500 MB ReplicaSet
Dapr-Metriken Pod für Dapr-Metriken 1 100 Millicpu 500 MB ReplicaSet
dapr-operator Verwaltet Komponentenaktualisierungen und Dienstendpunkte für Dapr 1 100 Millicpu 500 MB ReplicaSet
dapr-placement-server Wird nur für Akteure verwendet. Erstellt Zuordnungstabellen für die Zuordnung von Akteurinstanzen zu Pods. 1 100 Millicpu 500 MB StatefulSet
dapr-sentry Verwaltet mTLS zwischen Diensten und fungiert als Zertifizierungsstelle. 2 800 Millicpu 200 MB ReplicaSet

Häufig gestellte Fragen zu Azure Container-Apps in Azure Arc

Welche Container Apps-Features werden unterstützt?

Für den dokumentierten Supportstatus und die Voraussetzungen jeder Funktion siehe Einschränkungen. Das Azure-Portal deaktiviert außerdem Steuerungen, die in einer verbundenen Umgebung nicht verfügbar sind. Der Support kann von der installierten Erweiterungsversion abhängen, daher sollten Sie die Versionshinweise der Erweiterung überprüfen, bevor Sie eine kürzlich hinzugefügte Funktion verwenden.

Werden verwaltete Identitäten unterstützt?

Nein. Du kannst in einer verbundenen Umgebung keine verwaltete Identität einer Container-App oder einem Job zuweisen. Managed-Identity-Authentifizierung für Azure Container Registry-Image-Pulls ist ebenfalls nicht verfügbar.

Wenn eine Anwendung sich bei einer Azure-Ressource authentifizieren muss, verwenden Sie eine Microsoft Entra-Anwendung und einen Service Principal:

  1. Erstellen oder identifizieren Sie eine Anwendungsregistrierung.
  2. Gewähren Sie seinem Service-Principal nur die Azure-Rolle, die von der Anwendung benötigt wird.
  3. Speichere die Zugangsdaten als Container-Apps-Geheimnis.
  4. Verweisen Sie in der Anwendung über Umgebungsvariablen auf das Geheimnis.
  5. Richten Sie einen Prozess für die Qualifikationsrotation ein.

Weitere Informationen finden Sie unter Anwendungs- und Dienstprinzipalobjekte in Microsoft Entra ID. Vermeiden Sie es, Zugangsdaten in ein Image- oder Quellverzeichnis einzubetten.

Gibt es Grenzen in Bezug auf die Skalierung?

Container-Apps und -Jobs können nur innerhalb der zugeordneten CPU-, Speicher- und spezialisierten Ressourcen im zugrunde liegenden Kubernetes-Cluster skalieren. Das Festlegen einer maximalen Replikenanzahl reserviert keine Kapazität.

Wenn der Cluster keine Kapazität mehr hat, lässt Kubernetes neue Replikate ausstehend und die Anwendung erreicht ihre angeforderte Replikenzahl nicht. Überprüfen Sie diese Bedingung mit:

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

Plane die Clusterkapazität für die Erweiterungskomponenten, Peak-Anwendungsreplikate, Kubernetes-System-Workloads, rollende Upgrades und Node-Ausfälle.

Welche Protokolle werden gesammelt?

Protokolle für Systemkomponenten und Ihre Anwendungen werden in die Standardausgabe geschrieben.

Beide Protokolltypen können für die Analyse mithilfe von Kubernetes-Standardtools gesammelt werden. Sie können die Clustererweiterung für die Anwendungsumgebung auch mit einem Log Analytics-Arbeitsbereich konfigurieren. Daraufhin werden alle Protokolle an diesen Arbeitsbereich gesendet.

Standardmäßig werden Protokolle von Systemkomponenten an das Azure-Team gesendet. Anwendungsprotokolle werden nicht gesendet. Sie können verhindern, dass diese Protokolle übertragen werden, indem Sie logProcessor.enabled=false als Erweiterungskonfigurationseinstellung festlegen. Durch diese Konfigurationseinstellung wird die Weiterleitung der Anwendung an Ihren Log Analytics-Arbeitsbereich deaktiviert. Das Deaktivieren des Protokollprozessors kann sich auf die Zeit auswirken, die für Supportfälle benötigt wird, und Sie werden aufgefordert, Protokolle aus der Standardausgabe auf andere Weise zu erfassen.

Wie kann ich SMB-Treiber installieren?

Sie können den SMB-Treiber mit dem folgenden Helm-Befehl installieren. Weitere Installationsmethoden finden Sie unter Install driver on a Kubernetes cluster.

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

Kann die Erweiterung auf Windows-Knoten installiert werden?

Nein, die Erweiterung kann nicht auf Windows-Knoten installiert werden. Die Erweiterung unterstützt nur die Installation auf Linux-Knoten.

Kann ich die Container Apps Erweiterung auf einem Arm64-basierten Cluster bereitstellen?

Nein. Die Erweiterung unterstützt keine Arm64-basierten Cluster.