Nastavení clusteru Kubernetes s podporou služby Azure Arc pro provoz služeb App Service, Functions a Logic Apps (Preview)
Pokud máte cluster Kubernetess podporou Azure Arc, můžete ho použít k vytvoření vlastního umístění s podporou App Service a nasazení webových aplikací, aplikací funkcí a aplikací logiky.
Azure Arc Kubernetes umožňuje zviditelnit místní nebo cloudový cluster Kubernetes pro App Service, Functions a Logic Apps v Azure. Aplikaci můžete vytvořit a nasadit do ní stejně jako v jiné oblasti Azure.
Požadavky
Pokud nemáte účet Azure, zaregistrujte si bezplatný účet ještě dnes.
Přidání rozšíření Azure CLI
Spusťte prostředí Bash v Azure Cloud Shell.
Vzhledem k tomu, že tyto příkazy rozhraní příkazového řádku ještě nejsou součástí základní sady rozhraní příkazového řádku, přidejte je pomocí následujících příkazů.
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
Vytvoření připojeného clusteru
Poznámka
V tomto kurzu Azure Kubernetes Service (AKS) konkrétní pokyny pro nastavení prostředí od začátku. U produkčních úloh ale pravděpodobně nechcete povolit Azure Arc clusteru AKS, protože je již spravován v Azure. Následující kroky vám pomůžou začít službu chápat, ale u produkčních nasazení by se na tyto služby měly nahlížet jako na ilustrativní, nikoli preskriptivní. Obecné pokyny k Připojení clusteru Kubernetes s podporou clusterů Kubernetes najdete v tématu Rychlý Azure Arc Azure Arc: Vytvoření existujícího clusteru Kubernetes s podporou clusterů Kubernetes.
Vytvořte cluster v Azure Kubernetes Service s veřejnou IP adresou. Nahraďte
<group-name>názvem skupiny prostředků, který chcete.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)Získejte soubor kubeconfig a otestujte připojení ke clusteru. Ve výchozím nastavení se soubor kubeconfig uloží do
~/.kube/config.az aks get-credentials --resource-group $aksClusterGroupName --name $aksName --admin kubectl get nsVytvořte skupinu prostředků, která bude obsahovat Azure Arc prostředky. Nahraďte
<group-name>názvem skupiny prostředků, který chcete.groupName="<group-name>" # Name of resource group for the connected cluster az group create -g $groupName -l $resourceLocationPřipojení clusteru, který jste vytvořili pro Azure Arc.
clusterName="${groupName}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $groupName --name $clusterNamePomocí následujícího příkazu ověřte připojení. Měla by se zobrazit
provisioningStatevlastnostSucceededjako . Pokud ne, za minutu spusťte příkaz znovu.az connectedk8s show --resource-group $groupName --name $clusterName
Vytvoření pracovního prostoru služby Log Analytics
I když pracovní prostor služby Log Analytics ke spuštění App Service v Azure Arc není potřeba, vývojáři mohou získat protokoly aplikací pro své aplikace, které běží v clusteru Kubernetes s podporou Azure Arc s podporou.
Pro zjednodušení teď vytvořte pracovní prostor.
workspaceName="$groupName-workspace" # Name of the Log Analytics workspace az monitor log-analytics workspace create \ --resource-group $groupName \ --workspace-name $workspaceNameSpuštěním následujících příkazů získejte ID zakódovaného pracovního prostoru a sdílený klíč pro existující pracovní prostor služby Log Analytics. Budete je potřebovat v dalším kroku.
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
Instalace rozšíření App Service
Nastavte následující proměnné prostředí pro požadovaný název rozšíření App Service , obor názvů clusteru, ve kterém se mají prostředky zřídit, anázev pro App Service Prostředí Kubernetes. Zvolte jedinečný název pro , protože bude součástí názvu domény pro aplikaci vytvořenou v App Service
<kube-environment-name>Kubernetes.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 resourceNainstalujte App Service do clusteru připojeného Azure Arc s povolenou službou Log Analytics. I když log Analytics není potřeba, nemůžete ho později přidat do rozšíření, takže je to teď jednodušší.
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}"Poznámka
Pokud chcete rozšíření nainstalovat bez integrace Log Analytics, odeberte z příkazu
--configuration-settingsposlední tři parametry.Následující tabulka popisuje různé parametry
--configuration-settingspři spuštění příkazu:Parametr Popis Microsoft.CustomLocation.ServiceAccountÚčet služby, který by se měl vytvořit pro vlastní umístění, které se vytvoří. Doporučuje se nastavit na hodnotu default.appsNamespaceObor názvů pro zřízení definic aplikací a podů. Musí odpovídat oboru názvů verze rozšíření. clusterNameNázev virtuálního App Service Kubernetes, které se vytvoří pro toto rozšíření. keda.enabledUrčuje, jestli se má v clusteru Kubernetes nainstalovat KEDA. Přijímá truenebofalse.buildService.storageClassNameNázev třídy úložiště pro službu sestavení pro ukládání artefaktů sestavení. Hodnota jako určuje třídu s názvem a ne žádnou defaultdefaulttřídu, která je označena jako výchozí. Výchozí hodnota je platná třída úložiště pro AKS a AKS HCI, ale nemusí být daná pro jiné rozdělení nebo platformy.buildService.storageAccessModeRežim přístupu, který se má použít s pojmenovanou třídou úložiště uvedenou výše. Přijímá ReadWriteOnceneboReadWriteMany.customConfigMapNázev mapy konfigurace, kterou nastaví App Service Kubernetes. V současné době musí být <namespace>/kube-environment-config,<namespace>nahraďte výše uvedenouappsNamespacehodnotou.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-groupNázev skupiny prostředků, ve které se nachází Azure Kubernetes Service cluster. Platné a povinné pouze v případě, že je základní cluster Azure Kubernetes Service. logProcessor.appLogs.destinationNepovinný parametr. log-analyticsAkceptuje nebo . Pokudnonezvolíte žádný, zakáže se protokoly platformy.logProcessor.appLogs.logAnalyticsConfig.customerIdVyžaduje se jenom v logProcessor.appLogs.destinationpřípadě, že je nastavená nalog-analytics. ID pracovního prostoru služby Log Analytics s kódováním Base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.logProcessor.appLogs.logAnalyticsConfig.sharedKeyVyžaduje se jenom v logProcessor.appLogs.destinationpřípadě, že je nastavená nalog-analytics. Sdílený klíč pracovního prostoru služby Log Analytics s kódováním Base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.Uložte
idvlastnost rozšíření App Service pro pozdější použití.extensionId=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $clusterName \ --resource-group $groupName \ --name $extensionName \ --query id \ --output tsv)Než budete pokračovat, počkejte na úplnou instalaci rozšíření. Spuštěním následujícího příkazu můžete počkat na dokončení relace terminálu:
az resource wait --ids $extensionId --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Pomocí můžete kubectl zobrazit pody, které byly vytvořeny v clusteru Kubernetes:
kubectl get pods -n $namespace
Další informace o těchto podech a jejich rolích v systému najdete v části Pody vytvořené rozšířením App Service .
Vytvoření vlastního umístění
Vlastní umístění v Azure se používá k přiřazení App Service Kubernetes.
Nastavte následující proměnné prostředí pro požadovaný název vlastního umístění a pro ID clusteru připojeného Azure Arc počítače.
customLocationName="my-custom-location" # Name of the custom location connectedClusterId=$(az connectedk8s show --resource-group $groupName --name $clusterName --query id --output tsv)Vytvořte vlastní umístění:
az customlocation create \ --resource-group $groupName \ --name $customLocationName \ --host-resource-id $connectedClusterId \ --namespace $namespace \ --cluster-extension-ids $extensionIdPomocí následujícího příkazu ověřte, že se vlastní umístění úspěšně vytvořilo. Výstup by měl zobrazit
provisioningStatevlastnost jakoSucceeded. Pokud ne, spusťte ho za minutu znovu.az customlocation show --resource-group $groupName --name $customLocationNameUložte id vlastního umístění pro další krok.
customLocationId=$(az customlocation show \ --resource-group $groupName \ --name $customLocationName \ --query id \ --output tsv)
Vytvoření prostředí App Service Kubernetes
Než budete moct začít vytvářet aplikace ve vlastním umístění, budete potřebovat prostředí App Service Kubernetes.
Vytvořte prostředí App Service Kubernetes:
az appservice kube create \ --resource-group $groupName \ --name $kubeEnvironmentName \ --custom-location $customLocationIdPomocí následujícího příkazu ověřte, že se prostředí App Service Kubernetes úspěšně vytvořilo. Výstup by měl tuto
provisioningStatevlastnost zobrazit jakoSucceeded. Pokud ne, spusťte ji znovu za minutu.az appservice kube show --resource-group $groupName --name $kubeEnvironmentName
