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:

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
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?

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.

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 können eine Reihe von Speicherorten und API-Versionen enthalten, 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 Anwendungsdiensterweiterung 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

Nächste Schritte

Erstellen in der App Service Kubernetes-Umgebung (Vorschau)