Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Denna handledning förbereder ett stödd Kubernetes-kluster för att köra Azure Container Apps. Den skapar ett Azure Arc-aktiverat Kubernetes-kluster, installerar Container Apps-tillägget, skapar en anpassad plats och skapar en Container Apps-ansluten miljö.
Att slutföra denna handledning ändrar både din Azure-prenumeration och ditt Kubernetes-kluster. Du behöver Azure-behörigheter för att skapa de listade resurserna och klusteradministratörsåtkomst till Kubernetes-klustret.
Denna handledning visar hur man aktiverar Azure Container Apps på ett Kubernetes-kluster med Azure Arc-aktivering. I den här handledningen kommer du att:
- Koppla ett Kubernetes-kluster till Azure Arc, om det inte redan är anslutet.
- Skapa eventuellt ett Log Analytics-arbetsområde.
- Installera och validera tillägget Container Apps.
- Skapa och validera en anpassad plats.
- Skapa och validera en miljö kopplad till Container Apps.
Innan du börjar, läs igenom Azure Container Apps på Azure Arc. Om en resurs eller komponent i klustret inte blir redo, se Felsöka Azure Container Apps på Kubernetes med Azure Arc.
Förutsättningar
Innan du börjar, kontrollera följande krav:
- Ett Azure-konto med en aktiv prenumeration. Om du inte har en kan du skapa en kostnadsfritt.
- Behörighet att registrera resursleverantörer och skapa resursgrupper, en Azure Arc-aktiverad Kubernetes-resurs, en klustertillägg, en anpassad plats, en Container Apps-ansluten miljö och eventuellt en Log Analytics-arbetsyta.
- Azure CLI och dess förutsättningar.
- En
kubectl-version som är kompatibel med ditt Kubernetes-kluster och nätverksåtkomst från din arbetsstation till Kubernetes API-servern. - Ett stödd Kubernetes-kluster med Linux-arbetarnoder
amd64och klusteradministratörsåtkomst via den aktivakubectlkontexten. - En fungerande Kubernetes-tjänstimplementering
LoadBalancer. - Utgående anslutningar till de slutpunkter som Azure Arc och Container Apps kräver.
- Tillräckligt med tilldelbar CPU och minne för tilläggs- och applikationsarbetsbelastningar.
Innan du ändrar ett produktionskluster, granska Plan a Container Apps-distribution på Azure Arc-aktiverad Kubernetes.
Ställ in
Installera följande Azure CLI-tillägg.
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
Registrera de nödvändiga namnrymderna.
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
Ange miljövariabler baserat på kubernetes-klusterdistributionen.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Skapa ett anslutet kluster
Om du redan har ett Azure Arc-aktiverat Kubernetes-kluster i $GROUP_NAME, skapa inte ett nytt kluster. Ställ CLUSTER_NAME in på det befintliga resursnamnet för anslutna kluster, verifiera åtkomst med kubectl get nodes, och fortsätt skapa en Log Analytics-arbetsyta.
Följande steg skapar ett AKS-kluster och kopplar det till Azure Arc. Denna sökväg är endast avsedd som en Azure-hostad utvärderingsmiljö för handledningen. För ett befintligt lokalt eller multicloud-kluster, följ Quickstart: Koppla ett befintligt Kubernetes-kluster till Azure Arc, och återvänd sedan till denna handledning.
Skapa ett kluster i 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-keysHämta kubeconfig-filen och testa anslutningen till klustret. Som standard sparas kubeconfig-filen till
~/.kube/config.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get nsSkapa en resursgrupp som ska innehålla dina Azure Arc-resurser.
az group create --name $GROUP_NAME --location $LOCATIONAnslut klustret som du skapade till Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAMEVänta tills det anslutna klustret är klart med provisionering.
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 tableFortsätt endast när
StateärSucceededochConnectivityärConnected. Om kommandot överskrider tidsgränsen, se Det anslutna klustret är inte redo.
Skapa en Log Analytics-arbetsyta
En Log Analytics-arbetsyta ger tillgång till applikationsloggar för Container Apps som körs i det Azure Arc-aktiverade Kubernetes-klustret. En Log Analytics-arbetsyta är valfri men rekommenderas för applikationsdiagnostik.
Viktigt!
Bestäm om du ska använda Log Analytics innan du installerar tillägget Container Apps. Tillhandahåll Log Analytics-konfigurationen under installationen av tillägget. Du kan inte lägga till Log Analytics-konfiguration i den tilläggsinstansen senare.
Skapa en Log Analytics-arbetsyta.
WORKSPACE_NAME="$GROUP_NAME-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $GROUP_NAME \ --workspace-name $WORKSPACE_NAMEKör följande kommandon för att hämta det kodade arbetsyte-ID:t och den delade nyckeln för en befintlig Log Analytics-arbetsyta. Du behöver dem i nästa steg.
Caution
Den delade arbetsytnyckeln är en legitimation. Skriv inte ut det, sätt det inte in i versionshantering, lagra det inte i shellhistoriken eller inkludera det i supportpaket. Följande kommandon behåller den i en skalvariabel och skickar den till Azure som en skyddad tilläggsinställning.
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
Kontrollera om det finns en befintlig KEDA-installation
Tillägget Container Apps installerar KEDA. Innan du installerar tillägget, kontrollera klustret för befintliga KEDA-komponenter:
kubectl get deployments -A -o custom-columns="NAMESPACE:.metadata.namespace,NAME:.metadata.name"
kubectl get crd scaledobjects.keda.sh
Inspektera distributionslistan för KEDA-komponenter. Om något av kommandona identifierar en befintlig KEDA-installation, stoppa och bekräfta den stödda samexistenskonfigurationen innan du fortsätter. Ta inte bort den befintliga KEDA-installationen eller applicera odokumenterade tilläggsinställningar eftersom andra arbetsbelastningar kan vara beroende av det.
Installera tillägget Container Apps
Viktigt!
Om du distribuerar till AKS på Azure Local, se till att du sätter upp HAProxy eller en anpassad lastbalanserare innan du försöker installera tillägget. Du kan också använda az containerapp arc setup-core-dns --distro AksAzureLocal det för att ställa in CoreDNS för lokala kontexter.
Sätt namn på Container Apps-tillägget, dess Kubernetes-namnrymd och den anslutna miljön.
-
EXTENSION_NAMEidentifierar Azure-kluster-extension-resursen. -
NAMESPACEskapas i Kubernetes-klustret och innehåller tilläggskomponenter samt resurser hanterade av Container Apps. InställningenappsNamespacemåste exakt matcha extensionens releasenamnrymd. -
CONNECTED_ENVIRONMENT_NAMEblir en del av standardapplikationsdomänen. Använd ett DNS-kompatibelt namn som är unikt inom resursgruppen.
Installera inte orelaterade arbetsbelastningar i tilläggsnamnrymden.
EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"-
Installera Container Apps-tillägget till ditt Azure Arc-anslutna kluster med Log Analytics aktiverat. Log Analytics kan inte läggas till i tillägget senare.
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}"Kommentar
För att installera tillägget utan Log Analytics-integration, ta bort de tre loggningsrelaterade parametrarna från kommandot.
För ett kluster som använder en anpassad lastbalanserare, sätt
loadBalancerIptill en adress reserverad för Container Apps ingress:--configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"Adressen måste vara tillgänglig för applikationsklienter och får inte tilldelas en annan tjänst. Efter installationen, använd
kubectl get service -n $NAMESPACE -o wideför att verifiera att tilläggsingångstjänsten rapporterar denna adress. Konfigurera wildcard-DNS endast efter att adressen har tilldelats. Se DNS-krav.I följande tabell beskrivs de olika
--configuration-settingsparametrarna när du kör kommandot:Parameter Beskrivning Microsoft.CustomLocation.ServiceAccountTjänstkontot som skapats för den anpassade platsen. Ange värdet till default.appsNamespaceNamnområdet som används för att skapa appdefinitioner och revisioner. Det måste stämma överens med tilläggsutgåvans namnområde. clusterNameNamnet på Kubernetes-miljön för Container Apps-tillägget som skapats för det här tillägget. logProcessor.appLogs.destinationValfritt. Mål för programloggar. Accepterar log-analyticsellernone. Om inget väljs inaktiveras plattformens loggar.logProcessor.appLogs.logAnalyticsConfig.customerIdKrävs endast när logProcessor.appLogs.destinationär inställt pålog-analytics. Det base64-kodade Log Analytics-arbetsym-ID:t. Den här parametern ska konfigureras som en skyddad inställning.logProcessor.appLogs.logAnalyticsConfig.sharedKeyKrävs endast när logProcessor.appLogs.destinationär inställt pålog-analytics. Den base64-kodade Log Analytics-arbetsytan delade nyckel. Den här parametern ska konfigureras som en skyddad inställning.loadBalancerIpLastbalanserarens inkommande IP-adress. idSpara egenskapen för Container Apps-tillägget för senare.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)Vänta tills tillägget har installerats helt innan du fortsätter.
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 tableFortsätt endast när
StateärSucceeded. Om kommandot överskrider tidsgränsen eller misslyckas, se Installationen av tillägget misslyckas eller överskrider tidsgränsen.Inspektera tilläggsarbetsbelastningar, tjänster och senaste händelser:
kubectl get pods -n $NAMESPACE kubectl get services -n $NAMESPACE -o wide kubectl get events -n $NAMESPACE --sort-by=.lastTimestampSkapa inte den anpassade platsen medan en förlängningspod väntar, startar om upprepade gånger eller oväntat inte är klar. Mer information om dessa poddar och deras roll i systemet finns i Översikt över Azure Arc.
Om du har konfigurerat Log Analytics rensar du de lokala variabler som innehåller nyckeln för arbetsytan.
unset LOG_ANALYTICS_KEY LOG_ANALYTICS_KEY_ENC
Skapa en anpassad plats
Den anpassade platsen är en Azure-plats som du tilldelar till den anslutna Azure Container Apps-miljön.
Ange följande miljövariabler till önskat namn på den anpassade platsen och för ID:t för det Azure Arc-anslutna klustret.
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)Skapa den anpassade platsen:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_IDKommentar
Om du har problem med att skapa en anpassad plats på ditt kluster kan du behöva aktivera funktionen för anpassad plats på ditt kluster. Aktivera denna funktion när du loggar in på CLI genom att använda en tjänstechef eller en Microsoft Entra-användare med begränsade behörigheter på klusterresursen.
Vänta tills den anpassade platsen är klar med provisionering och spara dess resurs-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 tableKontrollera att
StateärSucceeded,Hostidentifierar det anslutna klustret du vill ha, ochNamespacematchar$NAMESPACE. Om provisionering misslyckas, se Det går inte att skapa anpassad plats.
Skapa den anslutna Azure Container Apps-miljön
Innan du kan börja skapa appar på den anpassade platsen behöver du en ansluten Azure Container Apps-miljö.
Skapa den anslutna miljön för Container Apps:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATIONVänta tills den anslutna miljön är klar med provisioneringen.
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 yamlFortsätt endast när
Statehar värdetCustomLocationochSucceededmatchar den anpassade platsen som du skapade i den här handledningen. Spara den visadeDomainför applikationens DNS-konfiguration. Om provisionering misslyckas, se Connected environment creation fails.