App Service, Funktionen und Logic Apps in Azure Arc (Vorschau)
Sie können App Service, Funktionen und Logic Apps auf einem Kubernetes-Cluster mit Azure Arc-Unterstützung ausführen. Der Kubernetes-Cluster kann lokal oder in einer Cloud eines Drittanbieters gehostet werden. Mit diesem Ansatz können App-Entwickler die Funktionen von App Service nutzen. Gleichzeitig können IT-Administratoren die Unternehmenskonformität beibehalten, indem sie die App Service-Apps in der internen Infrastruktur hosten. Außerdem können andere IT-Betreiber ihre früheren Investitionen in andere Cloud-Anbieter schützen, indem sie App Service auf bestehenden Kubernetes-Clustern ausführen.
Hinweis
Informationen zum Einrichten Ihres Kubernetes-Clusters für App Service, Funktionen und Logic Apps finden Sie unter Erstellen einer App Service Kubernetes-Umgebung (Vorschau).
In den meisten Fällen müssen App-Entwickler nur wissen, wie die Bereitstellung in der richtigen Azure-Region erfolgen soll, die die bereitgestellte Kubernetes-Umgebung darstellt. Operatoren, die die Umgebung bereitstellen und die zugrunde liegende Kubernetes-Infrastruktur verwalten, müssen mit den folgenden Azure-Ressourcen vertraut sein:
- Der verbundene Cluster, bei dem es sich um eine Azure-Projektion Ihrer Kubernetes-Infrastruktur handelt. Weitere Informationen finden Sie unter Was ist Kubernetes mit Azure Arc-Unterstützung?.
- Eine Clustererweiterung, die eine Unterressource der verbundenen Clusterressource ist. Die App Service-Erweiterung installiert die erforderlichen Pods in Ihrem verbundenen Cluster. Weitere Informationen zu Clustererweiterungen finden Sie unter Clustererweiterungen in Kubernetes mit Azure Arc-Unterstützung.
- Einen benutzerdefinierten Speicherort. Dieser bündelt eine Gruppe von Erweiterungen und weist sie einem Namespace für erstellte Ressourcen zu. Weitere Informationen finden Sie unter „Benutzerdefinierte Speicherorte“ auf Basis von Kubernetes mit Azure Arc-Unterstützung.
- Eine App Service Kubernetes-Umgebung, die die App-übergreifende Konfiguration ermöglicht, aber nicht im Zusammenhang mit Clustervorgängen steht. Konzeptionell wird sie in der benutzerdefinierten Standortressource bereitgestellt, und App-Entwickler erstellen Apps in dieser Umgebung. Diese Ressource wird unter App Service Kubernetes-Umgebung ausführlicher beschrieben.
Einschränkungen der öffentlichen Vorschauversion
Die folgenden Einschränkungen für die öffentliche Vorschau gelten für App Service Kubernetes-Umgebungen. Diese Liste der Einschränkungen wird aktualisiert, wenn Änderungen und Features verfügbar gemacht werden.
Einschränkung | Details |
---|---|
Unterstützte Azure-Regionen | Ost-USA, Europa, Westen |
Clusternetzwerkanforderung | Diensttyp LoadBalancer muss unterstützt werden |
Anforderung an das Knotenbetriebssystem | Nur Linux |
Clusterspeicheranforderung | Muss über eine an den Cluster angefügte Speicherklasse verfügen, die von der Erweiterung verwendet werden kann, um die Bereitstellung und ggf. den Build von codebasierten Apps zu unterstützen. |
Funktion: Netzwerk | Nicht verfügbar (angewiesen auf Clusternetzwerke) |
Funktion: Verwaltete Identitäten | Nicht verfügbar |
Funktion: Key Vault-Verweise | Nicht verfügbar (abhängig von verwalteten Identitäten) |
Funktion: Images aus ACR mit verwalteter Identität herausziehen | Nicht verfügbar (abhängig von verwalteten Identitäten) |
Funktion: Portal-Bearbeitung für Funktionen und Logic Apps | Nicht verfügbar |
Feature: Portalauflistung von Funktionen oder Schlüsseln | Nicht verfügbar, wenn der Cluster nicht öffentlich erreichbar ist |
Funktion: FTP-Veröffentlichung | Nicht verfügbar |
Protokolle | Log Analytics muss mit der Clustererweiterung konfiguriert werden. nicht pro Standort |
Pods, die von dem App Service erstellt werden
Wenn die App Service-Erweiterung auf dem Kubernetes-Cluster mit Azure Arc-Unterstützung installiert ist, werden mehrere Pods im angegebenen Releasenamespace erstellt. Diese Pods ermöglichen es Ihrem Kubernetes-Cluster, eine Erweiterung des Microsoft.Web
-Ressourcenanbieters in Azure zu sein und die Verwaltung und den Betrieb Ihrer Apps zu unterstützen. Optional können Sie festlegen, dass die Erweiterung KEDA für die ereignisgesteuerte Skalierung installiert.
In der folgenden Tabelle wird die Rolle der einzelnen Pods beschrieben, die standardmäßig erstellt werden:
Pod | Beschreibung |
---|---|
<extensionName>-k8se-app-controller |
Der Kern-Operatorpod, der Ressourcen im Cluster erstellt und den Zustand der Komponenten verwaltet. |
<extensionName>-k8se-envoy |
Eine Front-End-Proxy-Ebene für alle Anforderungen auf Datenebene. Es leitet den eingehenden Datenverkehr an die richtigen Apps weiter. |
<extensionName>-k8se-activator |
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. |
<extensionName>-k8se-build-service |
Unterstützt Bereitstellungsvorgänge und stellt das Erweiterte Tools-Funktion zur Verfügung. |
<extensionName>-k8se-http-scaler |
Überwacht das eingehende Anforderungsvolumen, um Skalierungsinformationen für KEDA bereitzustellen. |
<extensionName>-k8se-img-cacher |
Zieht Platzhalter- und App-Images in einen lokalen Cache auf dem Knoten. |
<extensionName>-k8se-log-processor |
Erfasst Protokolle von Apps und anderen Komponenten und sendet sie an Log Analytics. |
placeholder-azure-functions-* |
Wird verwendet, um Kaltstarts für Azure Functions zu beschleunigen. |
App Service Kubernetes-Umgebung
Die App Service-Kubernetes-Umgebungsressource ist erforderlich, damit Apps erstellt werden können. Sie ermöglicht die Konfiguration, die für Apps am benutzerdefinierten Speicherort üblich ist, z. B. das DNS-Standardsuffix.
An einem benutzerdefinierten Speicherort kann nur eine Kubernetes-Umgebungsressource erstellt werden. In den meisten Fällen muss ein Entwickler, der Apps erstellt und bereitstellt, die Ressource nicht direkt kennen. Sie kann direkt aus der angegebenen benutzerdefinierten Speicherort-ID abgeleitet werden. Wenn Sie jedoch Azure Resource Manager Vorlagen definieren, muss jede Plan-Ressource direkt auf die Ressourcen-ID der Umgebung verweisen. Die benutzerdefinierten Speicherortwerte des Plans und der angegebenen Umgebung müssen übereinstimmen.
FAQs zu App Service, Funktionen und Logic Apps in Azure Arc (Vorschau)
- Wie viel kostet es?
- Werden Sowohl Windows- als auch Linux-Apps unterstützt?
- Kann die Erweiterung auf Windows-Knoten installiert werden?
- Welche integrierten Anwendungsstapel werden unterstützt?
- Werden alle App-Bereitstellungstypen unterstützt?
- Welche App Service Funktionen werden unterstützt?
- Werden alle Netzwerkfunktionen unterstützt?
- Werden verwaltete Identitäten unterstützt?
- Gibt es Grenzen in Bezug auf die Skalierung?
- Welche Protokolle werden gesammelt?
- Was kann ich tun, wenn ein Anbieterregistrierungsfehler angezeigt wird?
- Kann ich die App Service-Erweiterung in einem arm64-basierten Cluster bereitstellen?
- Für welche Kubernetes-Distributionen kann ich die Erweiterung bereitstellen?
Wie viel kostet es?
App Service auf Azure Arc ist während der öffentlichen Vorschau kostenlos.
Werden Sowohl Windows- als auch Linux-Apps unterstützt?
Es werden nur Linux-basierte Apps unterstützt, sowohl Code als auch benutzerdefinierte Container. Windows-Apps werden nicht unterstützt.
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.
Welche integrierten Anwendungsstapel werden unterstützt?
Alle integrierten Linux-Stapel werden unterstützt.
Werden alle App-Bereitstellungstypen unterstützt?
Die FTP-Bereitstellung wird nicht unterstützt. Zu diesem Zeitpunkt wird az webapp up
ebenfalls nicht unterstützt. Andere Bereitstellungsmethoden werden unterstützt, einschließlich Git, ZIP, CI/CD, Visual Studio und Visual Studio Code.
Welche App Service Funktionen werden unterstützt?
Während des Vorschauzeitraums werden bestimmte App Service Funktionen überprüft. Wenn sie unterstützt werden, werden ihre linken Navigationsoptionen im Azure-Portal aktiviert. Features, die noch nicht unterstützt werden, werden abgeblendet dargestellt.
Werden alle Netzwerkfunktionen unterstützt?
Nein. Netzwerkfunktionen wie Hybridverbindungen oder die Integration virtueller Netzwerke werden nicht unterstützt. Die Unterstützung für Zugriffsbeschränkungen wurde im April 2022 hinzugefügt. Das Netzwerk sollte direkt in den Netzwerkregeln im Kubernetes-Cluster selbst verarbeitet werden.
Werden verwaltete Identitäten unterstützt?
Nein. Apps können keine verwalteten Identitäten zugewiesen werden, wenn sie in Azure Arc ausgeführt werden. Wenn Ihre App eine Identität für die Arbeit mit einer anderen Azure-Ressource benötigt, sollten Sie stattdessen einen Anwendungsdienstprinzipal verwenden.
Gibt es Grenzen in Bezug auf die Skalierung?
Alle mit Azure App Service in Kubernetes bereitgestellten Anwendungen mit Azure Arc lassen sich innerhalb der Grenzwerte des zugrunde liegenden Kubernetes-Clusters skalieren. Wenn die Computeressourcen (hauptsächlich CPU und Arbeitsspeicher) des zugrunde liegenden Kubernetes-Clusters zur Neige gehen, können Anwendungen nur auf die Anzahl von Anwendungsinstanzen skaliert werden, die Kubernetes mit den verfügbaren Ressourcen planen kann.
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 App Service-Clustererweiterung auch mit einem Log Analytics-Arbeitsbereich konfigurieren. Alle Protokolle werden dann 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 auch 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.
Was kann ich tun, wenn ein Anbieterregistrierungsfehler angezeigt wird?
Beim Erstellen einer Kubernetes-Umgebungsressource wird für einige Abonnements möglicherweise der Fehler „Es wurde kein registrierter Ressourcenanbieter gefunden“ angezeigt. Die Fehlerdetails enthalten ggf. eine Reihe von Speicherorten und API-Versionen, die als gültig betrachtet werden. Wenn diese Fehlermeldung zurückgegeben wird, muss das Abonnement beim Microsoft.Web-Anbieter erneut registriert werden. Dieser Vorgang hat keine Auswirkungen auf vorhandene Anwendungen oder APIs. Verwenden Sie zum erneuten Registrieren die Azure CLI, um az provider register --namespace Microsoft.Web --wait
auszuführen. Versuchen Sie dann erneut, den Kubernetes-Umgebungsbefehl auszuführen.
Kann ich die App Service-Erweiterung in einem arm64-basierten Cluster bereitstellen?
Arm64-basierte Cluster werden derzeit nicht unterstützt.
Für welche Kubernetes-Distributionen kann ich die Erweiterung bereitstellen?
Die Erweiterung wurde für AKS, AKS in Azure Stack HCI, Google Kubernetes Engine, Amazon Elastic Kubernetes Service und Kubernetes Cluster-API überprüft.
Versionshinweise zur Erweiterung
Anwendungsdiensterweiterung, Version 0.9.0 (Mai 2021)
- Erstes öffentliches Release der Vorschauversion der Anwendungsdiensterweiterung
- Unterstützung für code- und containerbasierte Bereitstellungen von Web-, Funktions- und Logikanwendungen.
- Runtimeunterstützung für Webanwendungen: .NET 3.1 und 5.0, Node.js 12 und 14, Python 3.6, 3.7 und 3.8, PHP 7.3 und 7.4, Ruby 2.5, 2.5.5, 2.6 und 2.6.2, Java SE 8u232, 8u242, 8u252, 11.05, 11.06 und 11.07, Tomcat 8.5, 8.5.41, 8.5.53, 8.5.57, 9.0, 9.0.20, 9.0.33, und 9.0.37
Anwendungsdiensterweiterung, Version 0.10.0 (November 2021)
- Die Anforderung für vorab zugewiesene statisch IP-Adressen, die für die Zuweisung zum Envoy-Endpunkt erforderlich sind, wurde entfernt
- Upgrade von Keda auf Version 2.4.0
- Upgrade von Envoy auf Version 1.19.0
- Upgrade der Azure Functions-Runtime auf Version 3.3.1
- Legen Sie die Standardreplikatanzahl von App Controller und Envoy Controller auf 2 fest, um weitere Stabilität zu schaffen.
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0
Anwendungsdiensteerweiterung v0.11.0 (Dezember 2021)
- Hinzufügen der Application Insights-Unterstützung für Java- und .NET-Webanwendungen
- Hinzufügen der Unterstützung für .NET 6.0-Webanwendungen
- Entfernen von .NET Core 2.0
- Probleme behoben, die zu einem Fehler bei Slotaustauschvorgängen geführt haben
- Probleme behoben, bei der Erstellung von Ruby-Webanwendungen bei Kunden aufgetreten sind
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0
Application Services-Erweiterung 0.11.1 (Dezember 2021)
- Nebenversion zur Behebung von Problemen mit dem CRD-Update
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1
Application Services-Erweiterung 0.12.0 (Januar 2022)
- Unterstützung für ausgehenden Proxy
- Unterstützung für parallele Builds im Builddienst
- Upgrade von Envoy auf Version 1.20.1
- Problem mit Application Insights-Unterstützung für .NET-Anwendungen behoben
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0
Anwendungsdiensteerweiterung, Version 0.12.1 (März 2022)
- Problem mit Unterstützung für ausgehenden Proxy behoben, um die Protokollierung im Log Analytics-Arbeitsbereich zu ermöglichen
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1
Anwendungsdiensteerweiterung, Version 0.12.2 (März 2022)
- Update, um Upgradefehler beim Upgrade von Version 0.12.0 zu beheben, wenn die Länge des Erweiterungsnamens mehr als 35 Zeichen umfasst
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2
Anwendungsdienste-Erweiterung, Version 0.13.0 (April 2022)
- Unterstützung für Application Insights codelose Integration für Node JS-Anwendungen hinzugefügt
- Unterstützung für Zugriffseinschränkungen über CLI hinzugefügt
- Weitere Details, die angegeben werden, wenn die Erweiterung nicht installiert werden kann, um Probleme bei der Problembehandlung zu unterstützen
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0
Anwendungsdienste-Erweiterung, Version 0.13.1 (April 2022)
- Update zum Beheben von Upgradefehlern, die während des automatischen Upgrades von Clustern auf v 0.13.0 angezeigt werden
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1
Application Services-Erweiterung v 0.13.5 (Dezember 2023)
- Aktualisieren Sie zur Unterstützung von Kubernetes-Version 1.26 und höher
- Aktualisieren Sie Envoy auf Version 1.2.1
- Aktualisieren Sie Keda auf v2.10.0
- Aktualisieren Sie EasyAuth auf v1.6.20
- Aktualisieren Sie Basisimages für unterstützte Sprachen
Wenn Sich Ihre Erweiterung in der stabilen Version befand und „auto-upgrade-minor-version“ auf „true“ festgelegt ist, wird automatisch ein Upgrade für die Erweiterung durchgeführt. Um die Erweiterung manuell auf die neueste Version upzugraden, können Sie den folgenden Befehl ausführen:
az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.5