Freigeben über


Tutorial: Aktivieren von Azure Container Apps in Kubernetes mit Azure Arc-Unterstützung (Vorschau)


Mit Kubernetes-Clustern mit Azure Arc-Unterstützung können Sie einen für Container Apps aktivierten benutzerdefinierten Speicherort in Ihrem lokalen oder Cloud-Kubernetes-Cluster erstellen, um Ihre Azure Container Apps-Anwendungen wie in jeder anderen Region bereitzustellen.

In diesem Tutorial erfahren Sie, wie Sie Azure Container Apps in Ihrem Kubernetes-Cluster mit Arc-Unterstützung aktivieren. In diesem Lernprogramm führen Sie folgende Schritte aus:

  • Erstellen Sie einen verbundenen Cluster.
  • Erstellen Sie einen Log Analytics-Arbeitsbereich.
  • Installieren Sie die Container Apps-Erweiterung.
  • Erstellen eines benutzerdefinierten Standorts.
  • Erstellen Sie die verbundene Azure Container Apps-Umgebung.

Hinweis

Während der Vorschauphase werden Azure Container Apps in Arc nicht in Produktionskonfigurationen unterstützt. Dieser Artikel enthält eine Beispielkonfiguration zu reinen Evaluierungszwecken.

In diesem Tutorial wird Azure Kubernetes Service (AKS) verwendet, um konkrete Anweisungen zum Einrichten einer Umgebung von Grund auf bereitzustellen. Für eine Produktionsworkload sollten Sie jedoch Azure Arc eventuell nicht in einem AKS-Cluster aktivieren, da er bereits in Azure verwaltet wird.

Voraussetzungen

Setup

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

Die folgenden Schritte helfen Ihnen beim Einstieg in das Verständnis des Diensts. Für Produktionsbereitstellungen sollten sie die Schritte jedoch nur als illustrativ und nicht als verbindlich betrachten. Allgemeine Anweisungen zum Erstellen eines Kubernetes-Clusters mit Azure Arc-Unterstützung finden Sie unter Schnellstart: Verbinden eines vorhandenen Kubernetes-Clusters mit Azure Arc.

  1. 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-keys
    
  2. Rufen Sie die Datei kubeconfig ab, und testen Sie ihre Verbindung mit dem Cluster. Standardmäßig wird die Datei „kubeconfig“ in ~/.kube/config gespeichert.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Erstellen Sie eine Ressourcengruppe für Ihre Azure Arc-Ressourcen.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Verbinden 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_NAME
    
  5. Überprüfen Sie die Verbindung mit dem folgenden Befehl. Die provisioningState-Eigenschaft sollte als Succeeded angezeigt werden. Falls nicht, führen Sie den Befehl nach einer Minute erneut aus.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Erstellen eines Log Analytics-Arbeitsbereichs

Ein Log Analytics-Arbeitsbereich bietet Zugriff auf Protokolle für Container Apps-Anwendungen, die im Kubernetes-Cluster mit Azure Arc-Unterstützung ausgeführt werden. Ein Log Analytics-Arbeitsbereich ist optional, wird aber empfohlen.

  1. 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_NAME
    
  2. Fü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.

    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
    

Installieren der Container Apps-Erweiterung

Wichtig

Stellen Sie bei der Bereitstellung auf AKS-HCI sicher, dass Sie HAProxy oder einen benutzerdefinierte Lastenausgleich eingerichtet haben, bevor Sie versuchen, die Erweiterung zu installieren.

  1. Legen Sie die folgenden Umgebungsvariablen auf den gewünschten Namen der Container Apps-Erweiterung, den Clusternamespace, in dem Ressourcen bereitgestellt werden sollen, und den Namen für die verbundene Azure Container Apps-Umgebung fest. Wählen Sie für <connected-environment-name> einen eindeutigen Namen aus. Der Name der verbundenen Umgebung ist Bestandteil des Domänennamens für die App, die Sie in der verbundenen Azure Container Apps-Umgebung erstellen.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. 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 "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \
        --configuration-settings "logProcessor.appLogs.destination=log-analytics" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \
        --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
    

    Hinweis

    Um die Erweiterung ohne Log Analytics-Integration zu installieren, entfernen Sie die letzten drei --configuration-settings-Parameter aus dem Befehl.

    In der folgenden Tabelle sind die verschiedenen --configuration-settings-Parameter bei Ausführung des Befehls beschrieben:

    Parameter BESCHREIBUNG
    Microsoft.CustomLocation.ServiceAccount Das für den benutzerdefinierten Speicherort erstellte Dienstkonto. Es wird empfohlen, es auf den Wert default festzulegen.
    appsNamespace Der zum Erstellen der App-Definitionen und -Revisionen verwendete Namespace. Er muss mit dem Releasenamespace der Erweiterung übereinstimmen.
    clusterName Der Name der Kubernetes-Umgebung der Container Apps-Erweiterung, die für diese Erweiterung erstellt wird.
    logProcessor.appLogs.destination Optional. Ziel für Anwendungsprotokolle. Akzeptiert log-analytics oder none, wenn Sie „none“ (keine) auswählen, werden Plattformprotokolle deaktiviert.
    logProcessor.appLogs.logAnalyticsConfig.customerId Nur erforderlich, wenn logProcessor.appLogs.destination auf log-analytics festgelegt ist. Die base64-codierte Log Analytics-Arbeitsbereichs-ID. Dieser Parameter sollte als geschützte Einstellung konfiguriert werden.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Nur erforderlich, wenn logProcessor.appLogs.destination auf log-analytics festgelegt ist. Der base64-codierte gemeinsam verwendete Schlüssel des Log Analytics-Arbeitsbereichs. Dieser Parameter sollte als geschützte Einstellung konfiguriert werden.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group Der Name der Ressourcengruppe, in der sich der Azure Kubernetes Service Cluster befindet. Nur gültig und erforderlich, wenn der zugrunde liegende Cluster Azure Kubernetes Service ist.
  3. 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)
    
  4. Warten Sie, bis die Erweiterung vollständig installiert ist, bevor Sie fortfahren. Sie können Ihre Terminalsitzung warten lassen, bis dies abgeschlossen ist, indem Sie den folgenden Befehl ausführen:

    az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
    

Sie können kubectl verwenden, um die Pods anzuzeigen, die in Ihrem Kubernetes-Cluster erstellt wurden:

kubectl get pods -n $NAMESPACE

Weitere Informationen zu diesen Pods und ihrer Rolle im System finden Sie unter Übersicht über Azure Arc.

Erstellen eines benutzerdefinierten Standorts

Der benutzerdefinierte Speicherort ist ein Azure-Speicherort, den Sie der verbundenen Azure Container Apps-Umgebung zuweisen.

  1. 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)
    
  2. 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_ID
    

    Hinweis

    Wenn beim Erstellen eines benutzerdefinierten Speicherorts in Ihrem Cluster Probleme auftreten, müssen Sie möglicherweise das Feature für benutzerdefinierte Speicherorte in Ihrem Cluster aktivieren. Dies ist erforderlich, wenn Sie mit einem Dienstprinzipal bei der CLI angemeldet sind oder wenn Sie mit einem Microsoft Entra-Benutzer mit eingeschränkten Berechtigungen für die Clusterressource angemeldet sind.

  3. Überprüfen Sie mit dem folgenden Befehl, ob der benutzerdefinierte Standort erfolgreich erstellt wurde. In der Ausgabe sollte die provisioningState-Eigenschaft als Succeeded angezeigt werden. Wenn nicht, führen Sie den Befehl nach einer Minute erneut aus.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Speichern Sie die benutzerdefinierte Standort-ID für den nächsten Schritt.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

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.

  1. 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 $LOCATION
    
  2. Überprüfen Sie mit dem folgenden Befehl, ob die verbundene Container Apps-Umgebung erfolgreich erstellt wurde. In der Ausgabe sollte die provisioningState-Eigenschaft als Succeeded angezeigt werden. Falls nicht, führen Sie den Befehl nach einer Minute erneut aus.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Nächste Schritte