Een Kubernetes-cluster met ondersteuning voor Azure Arc configureren voor het uitvoeren van App Service, Functions en Logic Apps (preview)
Als u een Kubernetes-clustermet Azure Arc-functionaliteit hebt, kunt u dit gebruiken om een aangepaste locatie met App Service-functionaliteit te maken en er web-apps, functie-apps en logische apps in te implementeren.
Azure Arc Kubernetes-functionaliteit kunt u uw on-premises kubernetes- of cloudcluster zichtbaar maken voor App Service, Functions en Logic Apps in Azure. U kunt een app maken en erop implementeren, net als in een andere Azure-regio.
Vereisten
Als u geen Azure-account hebt, kunt u zich vandaag registreren voor een gratis account.
Azure CLI-extensies toevoegen
Start de Bash-omgeving in Azure Cloud Shell.
Omdat deze CLI-opdrachten nog geen deel uitmaken van de CLI-kernset, voegt u deze toe met de volgende opdrachten.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Een verbonden cluster maken
Notitie
In deze zelfstudie wordt Azure Kubernetes Service (AKS) gebruikt om concrete instructies te geven voor het instellen van een nieuwe omgeving. Voor een productieworkload wilt u echter waarschijnlijk geen Azure Arc inschakelen op een AKS-cluster, omdat het al wordt beheerd in Azure. De onderstaande stappen helpen u aan de slag te gaan met het begrijpen van de service, maar voor productie-implementaties moeten ze worden gezien als illustratief, niet als prescriptief. Zie Quickstart: Verbinding maken kubernetes-cluster maken met Azure Arc voor algemene instructies over het maken van een Kubernetes-cluster Azure Arc kubernetes-cluster met ingeschakelde toegang.
Maak een cluster in Azure Kubernetes Service met een openbaar IP-adres. Vervang
<group-name>door de naam van de resourcegroep die u wilt gebruiken.aksClusterGroupName="<group-name>" # Name of resource group for the AKS cluster aksName="${aksClusterGroupName}-aks" # Name of the AKS cluster resourceLocation="eastus" # "eastus" or "westeurope" az group create -g $aksClusterGroupName -l $resourceLocation az aks create --resource-group $aksClusterGroupName --name $aksName --enable-aad --generate-ssh-keys infra_rg=$(az aks show --resource-group $aksClusterGroupName --name $aksName --output tsv --query nodeResourceGroup)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 $aksClusterGroupName --name $aksName --admin kubectl get nsMaak een resourcegroep voor uw Azure Arc resources. Vervang
<group-name>door de naam van de resourcegroep die u wilt gebruiken.groupName="<group-name>" # Name of resource group for the connected cluster az group create -g $groupName -l $resourceLocationVerbinding maken cluster dat u hebt gemaakt voor Azure Arc.
clusterName="${groupName}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $groupName --name $clusterNameValideer de verbinding met de volgende opdracht. De eigenschap moet
provisioningStateworden weer geven alsSucceeded. Zo niet, voer de opdracht na een minuut opnieuw uit.az connectedk8s show --resource-group $groupName --name $clusterName
Een Log Analytics-werkruimte maken
Hoewel een Log Analytic-werkruimte niet vereist is om App Service uit te voeren in Azure Arc, kunnen ontwikkelaars op deze manier toepassingslogboeken downloaden voor hun apps die worden uitgevoerd in het Kubernetes-cluster met Azure Arc-functie.
Maak de werkruimte nu om het eenvoudig te houden.
workspaceName="$groupName-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $groupName \ --workspace-name $workspaceNameVoer de volgende opdrachten uit om de gecodeerde werkruimte-id en gedeelde sleutel voor een bestaande Log Analytics-werkruimte op te halen. U hebt ze in de volgende stap nodig.
logAnalyticsWorkspaceId=$(az monitor log-analytics workspace show \ --resource-group $groupName \ --workspace-name $workspaceName \ --query customerId \ --output tsv) logAnalyticsWorkspaceIdEnc=$(printf %s $logAnalyticsWorkspaceId | base64 -w0) # Needed for the next step logAnalyticsKey=$(az monitor log-analytics workspace get-shared-keys \ --resource-group $groupName \ --workspace-name $workspaceName \ --query primarySharedKey \ --output tsv) logAnalyticsKeyEnc=$(printf %s $logAnalyticsKey | base64 -w0) # Needed for the next step
De extensie App Service installeren
Stel de volgende omgevingsvariabelen in voor de gewenste naam van de App Service-extensie, de clusternaamruimte waarin resources moeten worden ingericht en de naam voor de App Service Kubernetes-omgeving. Kies een unieke naam voor , omdat deze deel zal uitmaken van de domeinnaam voor de app die is gemaakt
<kube-environment-name>in App Service Kubernetes-omgeving.extensionName="appservice-ext" # Name of the App Service extension namespace="appservice-ns" # Namespace in your cluster to install the extension and provision resources kubeEnvironmentName="<kube-environment-name>" # Name of the App Service Kubernetes environment resourceInstalleer de App Service-extensie op uw Azure Arc verbonden cluster, met Log Analytics ingeschakeld. Hoewel Log Analytics niet vereist is, kunt u deze later niet meer toevoegen aan de extensie, dus het is nu eenvoudiger om dit te doen.
az k8s-extension create \ --resource-group $groupName \ --name $extensionName \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --extension-type 'Microsoft.Web.Appservice' \ --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=${kubeEnvironmentName}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${namespace}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${logAnalyticsWorkspaceIdEnc}" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${logAnalyticsKeyEnc}"Notitie
Als u de extensie wilt installeren zonder Log Analytics-integratie, verwijdert u de laatste drie
--configuration-settingsparameters uit de opdracht .In de volgende tabel worden de verschillende
--configuration-settingsparameters beschreven bij het uitvoeren van de opdracht:Parameter Beschrijving Microsoft.CustomLocation.ServiceAccountHet serviceaccount dat moet worden gemaakt voor de aangepaste locatie die wordt gemaakt. Het wordt aanbevolen om deze in te stellen op de waarde default.appsNamespaceDe naamruimte voor het inrichten van de app-definities en pods. Moet overeenkomen met die van de naamruimte van de extensie-release. clusterNameDe naam van de App Service Kubernetes-omgeving die wordt gemaakt voor deze extensie. keda.enabledOf KEDA moet worden geïnstalleerd op het Kubernetes-cluster. Accepteert trueoffalse.buildService.storageClassNameDe naam van de opslagklasse voor de buildservice voor het opslaan van buildartefacten. Een waarde zoals defaultgeeft een klasse met de naam op en geen klasse die als standaard isdefaultgemarkeerd. Standaard is een geldige opslagklasse voor AKS en AKS HCI, maar dit is mogelijk niet voor andere distrubtions/platforms.buildService.storageAccessModeDe toegangsmodus die moet worden gebruikt met de hierboven genoemde opslagklasse. Accepteert ReadWriteOnceofReadWriteMany.customConfigMapDe naam van de configuratiekaart die wordt ingesteld door de App Service Kubernetes-omgeving. Op dit moment moet deze <namespace>/kube-environment-configzijn, vervangen<namespace>door de bovenstaandeappsNamespacewaarde.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-groupDe naam van de resourcegroep waarin het Azure Kubernetes Service cluster zich bevindt. Geldig en alleen vereist wanneer het onderliggende cluster is Azure Kubernetes Service. logProcessor.appLogs.destinationOptioneel. Accepteert log-analyticsof , als u geennonekiest, worden platformlogboeken uitgeschakeld.logProcessor.appLogs.logAnalyticsConfig.customerIdAlleen vereist wanneer logProcessor.appLogs.destinationis ingesteld oplog-analytics. De met 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.Sla de
ideigenschap van de App Service voor later gebruik op.extensionId=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --resource-group $groupName \ --name $extensionName \ --query id \ --output tsv)Wacht tot de extensie volledig is geïnstalleerd voordat u doorgaat. U kunt uw terminalsessie laten wachten tot dit is voltooid door de volgende opdracht uit te voeren:
az resource wait --ids $extensionId --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
U kunt gebruiken kubectl om de pods te zien die in uw Kubernetes-cluster zijn gemaakt:
kubectl get pods -n $namespace
Meer informatie over deze pods en hun rol in het systeem vindt u in Pods die door de extensie App Service gemaakt.
Een aangepaste locatie maken
De aangepaste locatie in Azure wordt gebruikt om de kubernetes-App Service toe te wijzen.
Stel de volgende omgevingsvariabelen in voor de gewenste naam van de aangepaste locatie en voor de id van Azure Arc verbonden cluster.
customLocationName="my-custom-location" # Name of the custom location connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)Maak de aangepaste locatie:
az customlocation create \ --resource-group $groupName \ --name $customLocationName \ --host-resource-id $connectedClusterId \ --namespace $namespace \ --cluster-extension-ids $extensionIdControleer of de aangepaste locatie is gemaakt met de volgende opdracht. In de uitvoer moet de
provisioningStateeigenschap worden weer geven alsSucceeded. Zo niet, voer deze na een minuut opnieuw uit.az customlocation show --resource-group $groupName --name $customLocationNameSla de aangepaste locatie-id op voor de volgende stap.
customLocationId=$(az customlocation show \ --resource-group $groupName \ --name $customLocationName \ --query id \ --output tsv)
De Kubernetes App Service omgeving maken
Voordat u kunt beginnen met het maken van apps op de aangepaste locatie, hebt u een App Service Kubernetes-omgeving nodig.
Maak de App Service Kubernetes-omgeving:
az appservice kube create \ --resource-group $groupName \ --name $kubeEnvironmentName \ --custom-location $customLocationIdControleer of de App Service Kubernetes-omgeving is gemaakt met de volgende opdracht. In de uitvoer moet de
provisioningStateeigenschap worden weer geven alsSucceeded. Als dat niet het zo is, moet u deze na een minuut opnieuw uitvoeren.az appservice kube show --resource-group $groupName --name $kubeEnvironmentName
