Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Deze tutorial bereidt een ondersteunde Kubernetes-cluster voor om Azure Container Apps uit te voeren. Het creëert een Kubernetes-cluster met Azure Arc, installeert de Container Apps-extensie, maakt een aangepaste locatie aan en creëert een Container Apps-verbonden omgeving.
Het voltooien van deze tutorial verandert zowel je Azure-abonnement als je Kubernetes-cluster. Je hebt Azure-rechten nodig om de vermelde resources aan te maken en cluster-admin-toegang tot het Kubernetes-cluster.
Deze tutorial laat zien hoe je Azure Container Apps inschakelt op een Kubernetes-cluster met Azure Arc-ondersteuning. In deze handleiding leert u:
- Verbind een Kubernetes-cluster met Azure Arc, als het nog niet verbonden is.
- Maak optioneel een Log Analytics-werkruimte aan.
- Installeer en valideer de Container Apps-extensie.
- Maak een aangepaste locatie aan en valideer.
- Creëer en valideer een omgeving met Container Apps verbonden.
Lees Azure Container Apps op Azure Arc voordat u begint. Als een resource of onderdeel in het cluster niet gereed komt, raadpleegt u Problemen met Azure Container Apps op Kubernetes met Azure Arc oplossen.
Vereisten
Controleer voordat u begint, de volgende vereisten:
- Een Azure-account met een actief abonnement. Als u er nog geen hebt, kunt u er gratis een maken.
- Toestemming om resource providers te registreren en resource groups aan te maken, een Azure Arc-enabled Kubernetes-resource, een clusterextensie, een aangepaste locatie, een Container Apps-verbonden omgeving, en optioneel een Log Analytics-werkruimte.
- De Azure CLI en de bijbehorende vereisten.
- Een versie die
kubectlcompatibel is met je Kubernetes-cluster en netwerktoegang van je werkstation naar de Kubernetes API-server. - Een ondersteunde Kubernetes-cluster met Linux-worker-nodes
amd64en cluster-admin-toegang via de actievekubectlcontext. - Een werkende Kubernetes-service-implementatie
LoadBalancer. - Uitgaande connectiviteit naar de eindpunten die vereist zijn door Azure Arc en Container Apps.
- Voldoende toewijzingbare CPU en geheugen voor de extensie en applicatiewerklasten.
Voordat je een productiecluster verandert, bekijk Plan a Container Apps-implementatie op Azure Arc-enabled Kubernetes.
Installatie
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.Web --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
Als je al een ondersteunde Azure Arc-enabled Kubernetes-cluster $GROUP_NAMEhebt, maak dan geen nieuwe cluster aan. Stel de bestaande verbonden clusterresource naam inCLUSTER_NAME, verifieer de toegang met kubectl get nodes, en ga door met het creëren van een Log Analytics-werkruimte.
De volgende stappen maken een AKS-cluster aan en verbinden deze met Azure Arc. Dit pad is alleen bedoeld als een door Azure gehoste evaluatieomgeving voor de tutorial. Voor een bestaande on-premises of multicloud-cluster, volg Quickstart: Verbind een bestaand Kubernetes-cluster met Azure Arc, en ga daarna terug naar deze tutorial.
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-keysHaal 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 nsMaak een resourcegroep die uw Azure Arc-resources bevat.
az group create --name $GROUP_NAME --location $LOCATIONVerbind 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_NAMEWacht tot de verbonden cluster klaar is met provisionen.
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 tableGa alleen door wanneer
StateisSucceededenConnectivityisConnected. Als er een time-out optreedt bij de opdracht, zie Verbonden cluster is niet gereed.
Een Log Analytics-werkruimte maken
Een Log Analytics-werkruimte biedt toegang tot applicatielogs voor Container Apps die draaien in de door Azure Arc geschikte Kubernetes-cluster. Een Log Analytics-werkruimte is optioneel, maar wordt aanbevolen voor applicatiediagnostiek.
Belangrijk
Beslis of je Log Analytics wilt gebruiken voordat je de Container Apps-extensie installeert. Bied de Log Analytics-configuratie aan tijdens de installatie van de extensie. Je kunt Log Analytics-configuratie niet later aan die extensie-instantie toevoegen.
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_NAMEVoer 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.
Caution
De gedeelde sleutel van de werkruimte is een credential. Druk het niet af, commit het niet naar versiebeheer, sla het niet op in de shellgeschiedenis en neem het niet op in supportbundels. De volgende commando's houden het in een shellvariabele en geven het door aan Azure als een beschermde extensie-instelling.
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
Controleer op een bestaande KEDA-installatie
De Container Apps-extensie installeert KEDA. Controleer voordat je de extensie installeert de cluster op bestaande KEDA-componenten:
kubectl get deployments -A -o custom-columns="NAMESPACE:.metadata.namespace,NAME:.metadata.name"
kubectl get crd scaledobjects.keda.sh
Controleer de lijst met implementaties van KEDA-componenten. Als een van beide commando's een bestaande KEDA-installatie identificeert, stop dan en bevestig de ondersteunde coëxistentieconfiguratie voordat je verder gaat. Verwijder de bestaande KEDA-installatie niet en pas geen ongedocumenteerde extensies toe, want andere workloads kunnen ervan afhankelijk zijn.
De Container Apps-extensie installeren
Belangrijk
Als je op AKS deployt op Azure Lokaal, zorg er dan voor dat je HAProxy of een aangepaste load balancer hebt ingesteld voordat je de extensie probeert te installeren. Je kunt het ook gebruiken az containerapp arc setup-core-dns --distro AksAzureLocal om CoreDNS op te zetten voor lokale contexten.
Stel namen in voor de Container Apps-extensie, de Kubernetes-naamruimte en de verbonden omgeving.
-
EXTENSION_NAMEidentificeert de Azure-clusterextensieresource. -
NAMESPACEwordt gemaakt in de Kubernetes-cluster en bevat extensiecomponenten en door Container Apps beheerde resources. DeappsNamespaceinstelling moet exact overeenkomen met de extensie release-naamruimte. -
CONNECTED_ENVIRONMENT_NAMEwordt onderdeel van het standaard applicatiedomein. Gebruik een DNS-compatibele naam die uniek is binnen de resourcegroep.
Installeer geen niet-gerelateerde workloads in de extensienaamruimte.
EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"-
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 "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}"Notitie
Om de extensie te installeren zonder Log Analytics-integratie, verwijder je de drie logging-gerelateerde parameters uit het commando.
Voor een cluster dat een aangepaste load balancer gebruikt, stel je
loadBalancerIpin op een adres dat is gereserveerd voor Container Apps ingress:--configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"Het adres moet bereikbaar zijn voor applicatieclients en mag niet aan een andere dienst worden toegewezen. Gebruik na installatie
kubectl get service -n $NAMESPACE -o wideom te controleren of de extensie-ingangsdienst dit adres rapporteert. Configureer wildcard DNS alleen nadat het adres is toegewezen. Zie DNS-vereisten.In de volgende tabel worden de verschillende
--configuration-settingsparameters beschreven bij het uitvoeren van de opdracht:Kenmerk Beschrijving Microsoft.CustomLocation.ServiceAccountHet serviceaccount dat is gemaakt voor de aangepaste locatie. Stel de waarde in op default.appsNamespaceDe naamruimte die wordt gebruikt om de app-definities en -revisies te maken. Deze moet overeenkomen met die van de naamruimte van de extensierelease. clusterNameDe naam van de Kubernetes-omgeving van de Container Apps-extensie die is gemaakt op basis van deze extensie. logProcessor.appLogs.destinationOptioneel. Bestemming voor toepassingslogboeken. Accepteert log-analyticsofnone; als u geen van beide kiest, worden platformlogboeken uitgeschakeld.logProcessor.appLogs.logAnalyticsConfig.customerIdAlleen vereist wanneer logProcessor.appLogs.destinationis ingesteld oplog-analytics. De base64-gecodeerde Log Analytics werkruimte-ID. Deze parameter moet worden geconfigureerd als een beveiligde instelling.logProcessor.appLogs.logAnalyticsConfig.sharedKeyAlleen vereist wanneer logProcessor.appLogs.destinationis ingesteld oplog-analytics. De met base64 gecodeerde gedeelde sleutel van de Log Analytics-werkruimte. Deze parameter moet worden geconfigureerd als een beveiligde instelling.loadBalancerIpHet ingangs-IP-adres van de load balancer. Sla de
ideigenschap 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)Wacht tot de extensie volledig is geïnstalleerd voordat u doorgaat.
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 tableGa alleen verder wanneer
StateSucceededis. Als de opdracht een time-out geeft of een fout meldt, zie De installatie van de extensie mislukt of er treedt een time-out op.Bekijk de extensie-workloads, diensten en recente gebeurtenissen:
kubectl get pods -n $NAMESPACE kubectl get services -n $NAMESPACE -o wide kubectl get events -n $NAMESPACE --sort-by=.lastTimestampMaak de aangepaste locatie niet aan terwijl een extensiepod in wacht staat, herhaaldelijk opnieuw wordt opgestart of onverwacht niet klaar is. Zie het overzicht van Azure Arc voor meer informatie over deze pods en hun rol in het systeem.
Als je Log Analytics hebt geconfigureerd, wis dan de lokale variabelen die de sleutel van de werkruimte bevatten.
unset LOG_ANALYTICS_KEY LOG_ANALYTICS_KEY_ENC
Een aangepaste locatie maken
De aangepaste locatie is een Azure-locatie die u toewijst aan de met Azure Container Apps verbonden omgeving.
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)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_IDNotitie
Als je moeite hebt om een aangepaste locatie op je cluster aan te maken, moet je misschien de aangepaste locatiefunctie op je cluster inschakelen. Schakel deze functie in wanneer je inlogt op de CLI door een serviceprincipal of een Microsoft Entra-gebruiker met beperkte rechten op de clusterresource te gebruiken.
Wacht tot de aangepaste locatie is ingericht en sla de resource-ID op.
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 tableControleer of
StateSucceededis,Hosthet verbonden cluster identificeert dat je wilt, en ofNamespaceovereenkomt met$NAMESPACE. Als het inrichten mislukt, zie Het maken van een aangepaste locatie mislukt.
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.
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 $LOCATIONWacht tot de verbonden omgeving volledig is ingericht.
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 yamlGa alleen door wanneer
Statehet isSucceededenCustomLocationovereenkomt met de aangepaste locatie die je in deze tutorial hebt aangemaakt. Sla de weergegevenDomainop voor de DNS-configuratie van de applicatie. Als het inrichten mislukt, raadpleeg Het maken van een verbonden omgeving mislukt.