Delen via


Zelfstudie: Azure Container Apps inschakelen in Kubernetes met Azure Arc (preview)


Met Kubernetes-clusters met Azure Arc kunt u een aangepaste locatie voor Container Apps maken in uw on-premises of cloud-Kubernetes-cluster om uw Azure Container Apps-toepassingen te implementeren, net als elke andere regio.

In deze zelfstudie leert u hoe u Azure Container Apps inschakelt in uw Kubernetes-cluster met Arc. In deze zelfstudie gaat u:

  • Maak een verbonden cluster.
  • Maak een Log Analytics-werkruimte.
  • Installeer de Container Apps-extensie.
  • Maak een aangepaste locatie.
  • Maak de met Azure Container Apps verbonden omgeving.

Notitie

Tijdens de preview worden Azure Container Apps in Arc niet ondersteund in productieconfiguraties. Dit artikel bevat alleen een voorbeeldconfiguratie voor evaluatiedoeleinden.

In deze zelfstudie wordt gebruikgemaakt van Azure Kubernetes Service (AKS) om concrete instructies te bieden voor het instellen van een volledig nieuwe omgeving. Voor een productieworkload wilt u Azure Arc echter mogelijk niet inschakelen op een AKS-cluster, omdat deze al wordt beheerd in Azure.

Vereisten

Instellingen

Installeer de volgende Azure CLI-extensies.

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

Registreer de vereiste naamruimten.

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

Stel omgevingsvariabelen in op basis van de implementatie van uw Kubernetes-cluster.

GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"

Een verbonden cluster maken

Met de volgende stappen kunt u aan de slag met het begrijpen van de service, maar voor productie-implementaties moeten ze worden weergegeven als illustratief, niet prescriptief. Zie quickstart: Een bestaand Kubernetes-cluster verbinden met Azure Arc voor algemene instructies over het maken van een Kubernetes-cluster met Azure Arc.

  1. Maak een cluster in 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. Haal het kubeconfig-bestand op en test de verbinding met het cluster. Standaard wordt het kubeconfig-bestand opgeslagen in ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Maak een resourcegroep die uw Azure Arc-resources bevat.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Verbind het cluster dat u hebt gemaakt met Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Valideer de verbinding met de volgende opdracht. De eigenschap moet worden weergegeven provisioningState als Succeeded. Als dat niet het is, voert u de opdracht na een minuut opnieuw uit.

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

Een Log Analytics-werkruimte maken

Een Log Analytics-werkruimte biedt toegang tot logboeken voor Container Apps-toepassingen die worden uitgevoerd in het Kubernetes-cluster met Azure Arc. Een Log Analytics-werkruimte is optioneel, maar wordt aanbevolen.

  1. Maak een Log Analytics-werkruimte.

    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. Voer de volgende opdrachten uit om de gecodeerde werkruimte-id en gedeelde sleutel voor een bestaande Log Analytics-werkruimte op te halen. U hebt ze nodig in de volgende stap.

    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
    

De Container Apps-extensie installeren

Belangrijk

Als u implementeert op AKS-HCI , moet u HAProxy of een aangepaste load balancer instellen voordat u de extensie installeert.

  1. Stel de volgende omgevingsvariabelen in op de gewenste naam van de Container Apps-extensie, de clusternaamruimte waarin resources moeten worden ingericht en de naam voor de met Azure Container Apps verbonden omgeving. Kies een unieke naam voor <connected-environment-name>. De naam van de verbonden omgeving maakt deel uit van de domeinnaam voor de app die u maakt in de met Azure Container Apps verbonden omgeving.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Installeer de Container Apps-extensie op uw met Azure Arc verbonden cluster waarvoor Log Analytics is ingeschakeld. Log Analytics kan later niet worden toegevoegd aan de extensie.

    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}"
    

    Notitie

    Als u de extensie wilt installeren zonder Log Analytics-integratie, verwijdert u de laatste drie --configuration-settings parameters uit de opdracht.

    In de volgende tabel worden de verschillende --configuration-settings parameters beschreven bij het uitvoeren van de opdracht:

    Parameter Description
    Microsoft.CustomLocation.ServiceAccount Het serviceaccount dat is gemaakt voor de aangepaste locatie. Het wordt aanbevolen dat deze is ingesteld op de waarde default.
    appsNamespace De naamruimte die wordt gebruikt om de app-definities en -revisies te maken. Deze moet overeenkomen met die van de naamruimte van de extensierelease.
    clusterName De naam van de Kubernetes-omgeving van de Container Apps-extensie die wordt gemaakt op basis van deze extensie.
    logProcessor.appLogs.destination Optioneel. Bestemming voor toepassingslogboeken. log-analytics Accepteert ofnone, als u geen kiest, worden platformlogboeken uitgeschakeld.
    logProcessor.appLogs.logAnalyticsConfig.customerId Alleen vereist als logProcessor.appLogs.destination deze is ingesteld op log-analytics. De met Base64 gecodeerde Log Analytics-werkruimte-id. Deze parameter moet worden geconfigureerd als een beveiligde instelling.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Alleen vereist als logProcessor.appLogs.destination deze is ingesteld op log-analytics. De gedeelde sleutel van de Met Base64 gecodeerde Log Analytics-werkruimte. Deze parameter moet worden geconfigureerd als een beveiligde instelling.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group De naam van de resourcegroep waarin het Azure Kubernetes Service-cluster zich bevindt. Geldig en alleen vereist wanneer het onderliggende cluster Azure Kubernetes Service is.
  3. Sla de id eigenschap van de Container Apps-extensie op voor later gebruik.

    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. Wacht tot de extensie volledig is geïnstalleerd voordat u doorgaat. U kunt uw terminalsessie laten wachten totdat deze is voltooid door de volgende opdracht uit te voeren:

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

U kunt de kubectl pods zien die zijn gemaakt in uw Kubernetes-cluster:

kubectl get pods -n $NAMESPACE

Zie het overzicht van Azure Arc voor meer informatie over deze pods en hun rol in het systeem.

Een aangepaste locatie maken

De aangepaste locatie is een Azure-locatie die u toewijst aan de met Azure Container Apps verbonden omgeving.

  1. Stel de volgende omgevingsvariabelen in op de gewenste naam van de aangepaste locatie en voor de id van het met Azure Arc verbonden cluster.

    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. Maak de aangepaste locatie:

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \
        --cluster-extension-ids $EXTENSION_ID
    

    Notitie

    Als u problemen ondervindt met het maken van een aangepaste locatie in uw cluster, moet u mogelijk de functie voor aangepaste locatie inschakelen in uw cluster. Dit is vereist als u bent aangemeld bij de CLI met behulp van een service-principal of als u bent aangemeld met een Microsoft Entra-gebruiker met beperkte machtigingen voor de clusterresource.

  3. Controleer of de aangepaste locatie is gemaakt met de volgende opdracht. De uitvoer moet de provisioningState eigenschap weergeven als Succeeded. Zo niet, voer de opdracht na een minuut opnieuw uit.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Sla de aangepaste locatie-id op voor de volgende stap.

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

De met Azure Container Apps verbonden omgeving maken

Voordat u apps op de aangepaste locatie kunt maken, hebt u een met Azure Container Apps verbonden omgeving nodig.

  1. Maak de verbonden Container Apps-omgeving:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Controleer of de verbonden container-apps-omgeving is gemaakt met de volgende opdracht. De uitvoer moet de provisioningState eigenschap weergeven als Succeeded. Zo niet, voer het na een minuut opnieuw uit.

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

Volgende stappen