Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Dieses Tutorial bereitet einen unterstützten Kubernetes-Cluster vor, um Azure Container Apps auszuführen. Es erstellt einen Azure Arc-fähigen Kubernetes-Cluster, installiert die Container Apps-Erweiterung, erstellt einen benutzerdefinierten Standort und erstellt eine mit Container Apps verbundene Umgebung.
Das Abschließen dieses Tutorials ändert sowohl dein Azure-Abonnement als auch deinen Kubernetes-Cluster. Du brauchst Azure-Berechtigungen, um die aufgeführten Ressourcen zu erstellen, sowie Cluster-Admin-Zugriff auf den Kubernetes-Cluster.
Dieses Tutorial zeigt, wie man Azure Container Apps auf einem Azure Arc-fähigen Kubernetes-Cluster aktiviert. In diesem Tutorial erfahren Sie:
- Verbinde einen Kubernetes-Cluster mit Azure Arc, falls er noch nicht verbunden ist.
- Erstelle optional einen Log Analytics-Arbeitsbereich.
- Installiere und validiere die Container Apps-Erweiterung.
- Erstellen und validieren Sie einen benutzerdefinierten Standort.
- Erstellen und validieren Sie eine mit Container-Apps verbundene Umgebung.
Bevor Sie beginnen, lesen Sie Azure Container Apps auf Azure Arc. Wenn eine Ressource oder eine In-Cluster-Komponente nicht bereit wird, lesen Sie Problembehandlung für Azure Container Apps in Azure Arc-fähigem Kubernetes.
Voraussetzungen
Bevor Sie beginnen, überprüfen Sie die folgenden Anforderungen:
- Ein Azure-Konto mit einem aktiven Abonnement. Wenn Sie keins haben, erstellen Sie eine kostenlos.
- Berechtigung, Ressourcenanbieter zu registrieren und Ressourcengruppen zu erstellen, eine Azure Arc-fähige Kubernetes-Ressource, eine Cluster-Erweiterung, einen benutzerdefinierten Standort, eine mit Container-Apps verbundene Umgebung und optional einen Log Analytics-Arbeitsbereich.
- Die Azure CLI und ihre Voraussetzungen.
- Eine mit deinem Kubernetes-Cluster kompatible
kubectl-Version sowie Netzwerkzugriff von deiner Workstation auf den Kubernetes-API-Server. - Ein unterstützter Kubernetes-Cluster mit Linux-Worker-Nodes
amd64und Cluster-Admin-Zugriff über den aktivenkubectlKontext. - Eine funktionierende Kubernetes-Service-Implementierung
LoadBalancer. - Outbound-Verbindung zu den von Azure Arc und Container Apps benötigten Endpunkten.
- Ausreichend zuteilbare CPU und Speicher für die Erweiterung und Anwendungs-Workloads.
Bevor Sie einen Produktionscluster ändern, prüfen Sie die Plan-a-Container-Apps-Bereitstellung auf Azure Arc-fähigem Kubernetes.
Konfiguration
Installieren Sie die folgenden Azure CLI-Erweiterungen.
az extension add --name connectedk8s --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension add --name containerapp --upgrade --yes
Registrieren Sie die erforderlichen Namespaces.
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az provider register --namespace Microsoft.App --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.OperationalInsights --wait
Legen Sie Umgebungsvariablen basierend auf der Bereitstellung Ihres Kubernetes-Clusters fest.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Erstellen eines verbundenen Clusters
Wenn du bereits einen unterstützten, Azure Arc-fähigen Kubernetes-Cluster hast$GROUP_NAME, erstelle keinen weiteren Cluster. Setzen Sie CLUSTER_NAME auf den Namen der vorhandenen Connected-Cluster-Ressource, überprüfen Sie den Zugriff mit kubectl get nodes, und fahren Sie dann mit Erstellen eines Log Analytics-Arbeitsbereichs fort.
Die folgenden Schritte erstellen einen AKS-Cluster und verbinden ihn mit Azure Arc. Dieser Pfad ist ausschließlich als von Azure gehostete Evaluierungsumgebung für das Tutorial gedacht. Für einen bestehenden On-Premises- oder Multicloud-Cluster folgen Sie Quickstart: Verbinden Sie einen bestehenden Kubernetes-Cluster mit Azure Arc und kehren Sie dann zu diesem Tutorial zurück.
Erstellen Sie einen Cluster im Azure Kubernetes Service.
az group create --name $AKS_CLUSTER_GROUP_NAME --location $LOCATION az aks create \ --resource-group $AKS_CLUSTER_GROUP_NAME \ --name $AKS_NAME \ --enable-aad \ --generate-ssh-keysRufen Sie die Datei kubeconfig ab, und testen Sie ihre Verbindung mit dem Cluster. Standardmäßig wird die Datei „kubeconfig“ in
~/.kube/configgespeichert.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get nsErstellen Sie eine Ressourcengruppe für Ihre Azure Arc-Ressourcen.
az group create --name $GROUP_NAME --location $LOCATIONVerbinden Sie den erstellten Cluster mit Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAMEWarte, bis der verbundene Cluster die Bereitstellung abgeschlossen hat.
CONNECTED_CLUSTER_ID=$(az connectedk8s show \ --resource-group $GROUP_NAME \ --name $CLUSTER_NAME \ --query id \ --output tsv) az resource wait --ids $CONNECTED_CLUSTER_ID --created --timeout 600 az connectedk8s show \ --resource-group $GROUP_NAME \ --name $CLUSTER_NAME \ --query "{State:provisioningState,Connectivity:connectivityStatus}" \ --output tableNur dann fortfahren, wenn
StateistSucceededundConnectivityistConnected. Wenn der Befehl abläuft, sieh Connected Cluster ist nicht bereit.
Erstellen eines Log Analytics-Arbeitsbereichs
Ein Log Analytics-Arbeitsbereich bietet Zugriff auf Anwendungslogs für Container-Apps, die im Azure Arc-fähigen Kubernetes-Cluster laufen. Ein Log Analytics-Arbeitsbereich ist optional, wird aber für Anwendungsdiagnostik empfohlen.
Wichtig
Entscheide dich, ob du Log Analytics verwenden möchtest, bevor du die Container Apps-Erweiterung installierst. Stellen Sie die Log Analytics-Konfiguration während der Installation der Erweiterung bereit. Du kannst die Log Analytics-Konfiguration später nicht mehr zu dieser Erweiterungsinstanz hinzufügen.
Erstellen Sie einen Log Analytics-Arbeitsbereich.
WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAMEFühren Sie die folgenden Befehle aus, um die codierte Arbeitsbereichs-ID und den gemeinsam genutzten Schlüssel für einen vorhandenen Log Analytics-Arbeitsbereich abzurufen. Sie benötigen diese Angaben im nächsten Schritt.
Caution
Der Workspace Shared Key ist eine Zugangsberechtigung. Drucke es nicht aus, committe es nicht in die Versionskontrolle, speichere es nicht in der Shell-Historie oder füge es in Support-Bundles ein. Die folgenden Befehle speichern sie in einer Shell-Variable und geben sie als geschützte Erweiterungseinstellung an Azure weiter.
LOG_ANALYTICS_WORKSPACE_ID=$(az monitor log-analytics workspace show \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query customerId \ --output tsv) LOG_ANALYTICS_WORKSPACE_ID_ENC=$(printf %s $LOG_ANALYTICS_WORKSPACE_ID | base64 -w0) # Needed for the next step LOG_ANALYTICS_KEY=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAME \ --query primarySharedKey \ --output tsv) LOG_ANALYTICS_KEY_ENC=$(printf %s $LOG_ANALYTICS_KEY | base64 -w0) # Needed for the next step
Überprüfen Sie eine bestehende KEDA-Installation
Die Container Apps-Erweiterung installiert KEDA. Bevor Sie die Erweiterung installieren, überprüfen Sie den Cluster auf bestehende KEDA-Komponenten:
kubectl get deployments -A -o custom-columns="NAMESPACE:.metadata.namespace,NAME:.metadata.name"
kubectl get crd scaledobjects.keda.sh
Überprüfen Sie die Bereitstellungsliste auf KEDA-Komponenten. Wenn einer der Befehle eine bestehende KEDA-Installation identifiziert, 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.
Installieren der Container Apps-Erweiterung
Wichtig
Wenn du auf AKS unter Azure Local deployest, stelle sicher, dass du HAProxy oder einen benutzerdefinierten Load Balancer einrichtest, bevor du versuchst, die Erweiterung zu installieren. Du kannst es auch verwenden az containerapp arc setup-core-dns --distro AksAzureLocal , um CoreDNS für lokale Kontexte einzurichten.
Setzen Sie Namen für die Container-Apps-Erweiterung, deren Kubernetes-Namensraum und die verbundene Umgebung fest.
-
EXTENSION_NAMEidentifiziert die Azure-Cluster-Erweiterungsressource. -
NAMESPACEwird im Kubernetes-Cluster erstellt und enthält Erweiterungskomponenten sowie von Container Apps verwaltete Ressourcen. Die EinstellungappsNamespacemuss exakt mit dem Erweiterungs-Release-Namensraum übereinstimmen. -
CONNECTED_ENVIRONMENT_NAMEwird Teil der Standard-Anwendungsdomäne. Verwenden Sie einen DNS-kompatiblen Namen, der innerhalb der Ressourcengruppe eindeutig ist.
Installiere keine nicht zusammenhängenden Arbeitslasten im Erweiterungsnamensraum.
EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"-
Installieren Sie die Container Apps-Erweiterung in Ihrem mit Azure Arc verbundenen Cluster mit aktiviertem Log Analytics. Log Analytics kann der Erweiterung später nicht mehr hinzugefügt werden.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.App.Environment' \ --release-train stable \ --auto-upgrade-minor-version true \ --scope cluster \ --release-namespace $NAMESPACE \ --configuration-settings "Microsoft.CustomLocation.ServiceAccount=default" \ --configuration-settings "appsNamespace=${NAMESPACE}" \ --configuration-settings "clusterName=${CONNECTED_ENVIRONMENT_NAME}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"Hinweis
Um die Erweiterung ohne Log Analytics-Integration zu installieren, entferne die drei loggingbezogenen Parameter aus dem Befehl.
Für einen Cluster, der einen benutzerdefinierten Load Balancer verwendet, setzen Sie
loadBalancerIpauf eine Adresse, die für den Container Apps-Ingress reserviert ist:--configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"Die Adresse muss von Anwendungsclients erreichbar sein und darf nicht einem anderen Dienst zugewiesen werden. Verwenden Sie nach der Installation
kubectl get service -n $NAMESPACE -o wide, um zu überprüfen, ob der Ingressdienst der Erweiterung diese Adresse meldet. Konfigurieren Sie Wildcard-DNS erst, nachdem die Adresse zugewiesen wurde. Siehe DNS-Anforderungen.In der folgenden Tabelle sind die verschiedenen
--configuration-settings-Parameter bei Ausführung des Befehls beschrieben:Parameter BESCHREIBUNG Microsoft.CustomLocation.ServiceAccountDas für den benutzerdefinierten Speicherort erstellte Dienstkonto. Legen Sie den Wert auf defaultfest.appsNamespaceDer zum Erstellen der App-Definitionen und -Revisionen verwendete Namespace. Er muss mit dem Releasenamespace der Erweiterung übereinstimmen. clusterNameDer Name der Kubernetes-Umgebung für Container-Apps-Erweiterungen, die gegen diese Erweiterung erstellt wurde. logProcessor.appLogs.destinationWahlfrei. Ziel für Anwendungsprotokolle. Akzeptiert log-analyticsodernone, wenn Sie „none“ (keine) auswählen, werden Plattformprotokolle deaktiviert.logProcessor.appLogs.logAnalyticsConfig.customerIdNur erforderlich, wenn logProcessor.appLogs.destinationauflog-analyticsfestgelegt ist. Die base64-codierte Log Analytics-Arbeitsbereichs-ID. Dieser Parameter sollte als geschützte Einstellung konfiguriert werden.logProcessor.appLogs.logAnalyticsConfig.sharedKeyNur erforderlich, wenn logProcessor.appLogs.destinationauflog-analyticsfestgelegt ist. Der base64-codierte gemeinsam verwendete Schlüssel des Log Analytics-Arbeitsbereichs. Dieser Parameter sollte als geschützte Einstellung konfiguriert werden.loadBalancerIpDie Ingress-IP des Load Balancers. Speichern Sie die
id-Eigenschaft der Container Apps-Erweiterung für später.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)Warten Sie, bis die Erweiterung vollständig installiert ist, bevor Sie fortfahren.
az resource wait --ids $EXTENSION_ID --created --timeout 1200 az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query "{State:provisioningState,Version:currentVersion}" \ --output tableNur fortfahren, wenn
StateSucceededist. Wenn der Befehl abläuft oder einen Fehler meldet, siehe Erweiterungsinstallation fehlschlägt oder abläuft.Überprüfen Sie die Erweiterungs-Workloads, Dienste und aktuelle Ereignisse:
kubectl get pods -n $NAMESPACE kubectl get services -n $NAMESPACE -o wide kubectl get events -n $NAMESPACE --sort-by=.lastTimestampErstelle keinen benutzerdefinierten Standort, während ein Erweiterungspod aussteht, wiederholt neu gestartet wird oder unerwartet nicht bereit ist. Weitere Informationen zu diesen Pods und ihrer Rolle im System finden Sie unter Übersicht über Azure Arc.
Wenn du Log Analytics konfiguriert hast, lösche die lokalen Variablen, die den Workspace-Schlüssel enthalten.
unset LOG_ANALYTICS_KEY LOG_ANALYTICS_KEY_ENC
Erstellen eines benutzerdefinierten Standorts
Der benutzerdefinierte Speicherort ist ein Azure-Speicherort, den Sie der verbundenen Azure Container Apps-Umgebung zuweisen.
Legen Sie die folgenden Umgebungsvariablen auf den gewünschten Namen des benutzerdefinierten Speicherorts und für die ID des verbundenen Azure Arc-Clusters fest.
CUSTOM_LOCATION_NAME="my-custom-location" # Name of the custom location CONNECTED_CLUSTER_ID=$(az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME --query id --output tsv)Erstellen des benutzerdefinierten Standorts:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_IDHinweis
Wenn Sie Schwierigkeiten haben, einen benutzerdefinierten Standort auf Ihrem Cluster zu erstellen, müssen Sie möglicherweise die Funktion für benutzerdefinierte Standorte in Ihrem Cluster aktivieren. Aktivieren Sie diese Funktion beim Anmelden in der CLI, indem Sie einen Service-Principal oder einen Microsoft Entra-Benutzer mit eingeschränkten Berechtigungen auf der Cluster-Ressource verwenden.
Warte, bis der benutzerdefinierte Standort die Bereitstellung abgeschlossen hat, und speichere seine Ressourcen-ID.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv) az resource wait --ids $CUSTOM_LOCATION_ID --created --timeout 600 az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query "{State:provisioningState,Host:hostResourceId,Namespace:namespace}" \ --output tableÜberprüfe, dass
StateaufSucceededgesetzt ist,Hostden verbundenen Cluster identifiziert, den du verwenden möchtest, undNamespacemit$NAMESPACEübereinstimmt. Wenn die Bereitstellung fehlschlägt, siehe Benutzerdefinierte Standorterstellung fehlschlägt.
Erstellen der verbundenen Azure Container Apps-Umgebung
Bevor Sie mit dem Erstellen von Apps am benutzerdefinierten Speicherort beginnen können, benötigen Sie eine verbundene Azure Container Apps-Umgebung.
Erstellen der verbundenen Container Apps-Umgebung:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATIONWarte, bis die verbundene Umgebung die Bereitstellung abgeschlossen hat.
CONNECTED_ENVIRONMENT_ID=$(az containerapp connected-env show \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --query id \ --output tsv) az resource wait --ids $CONNECTED_ENVIRONMENT_ID --created --timeout 900 az containerapp connected-env show \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --query "{State:properties.provisioningState,Location:location,CustomLocation:extendedLocation.name,Domain:properties.defaultDomain}" \ --output yamlFahren Sie nur fort, wenn
StateSucceededist undCustomLocationmit dem benutzerdefinierten Speicherort übereinstimmt, den Sie in diesem Tutorial erstellt haben. Speichere das angezeigteDomainfür die DNS-Konfiguration der Anwendung. Wenn die Bereitstellung fehlschlägt, lesen Sie Die Erstellung der verbundenen Umgebung schlägt fehl.