Nastavení clusteru Kubernetes s podporou služby Azure Arc pro provoz služeb App Service, Functions a Logic Apps (Preview)
Pokud máte cluster Kubernetes s podporou Azure Arc, můžete ho použít k vytvoření vlastního umístění s podporou služby App Service a nasazení webových aplikací, aplikací funkcí a aplikací logiky.
Kubernetes s podporou Služby Azure Arc umožňuje zpřístupnit váš 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 jinou oblast Azure.
Požadavky
Pokud nemáte účet Azure, zaregistrujte si ještě dnes bezplatný účet.
Zkontrolujte požadavky a omezení verze Public Preview. Zvláštní důležitost jsou požadavky na cluster.
Přidání rozšíření Azure CLI
Spusťte prostředí Bash v Azure Cloud Shellu.
Protož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:
Tento kurz používá službu Azure Kubernetes Service (AKS) k poskytnutí konkrétních pokynů pro nastavení prostředí od začátku. V případě produkční úlohy ale pravděpodobně nebudete chtít povolit Azure Arc v clusteru AKS, protože už je spravovaný v Azure. Tento postup vám pomůže začít porozumět službě, ale pro produkční nasazení by se měly zobrazit jako ilustrativní, nikoli preskriptivní. Viz Rychlý start: Připojení existujícího clusteru Kubernetes ke službě Azure Arc , kde najdete obecné pokyny k vytvoření clusteru Kubernetes s podporou Azure Arc.
Vytvořte cluster ve službě Azure Kubernetes Service s veřejnou IP adresou. Nahraďte
<group-name>
požadovaným názvem skupiny prostředků.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_LOCATION az aks create --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --enable-aad --generate-ssh-keys
Získejte soubor kubeconfig a otestujte připojení ke clusteru. Ve výchozím nastavení se soubor kubeconfig uloží do
~/.kube/config
souboru .az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Vytvořte skupinu prostředků, která bude obsahovat vaše prostředky Azure Arc. Nahraďte
<group-name>
požadovaným názvem skupiny prostředků.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
Připojte cluster, který jste vytvořili, ke službě Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Pomocí následujícího příkazu ověřte připojení. Měla by zobrazit
provisioningState
vlastnost jakoSucceeded
. Pokud ne, spusťte příkaz znovu po minutě.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Vytvoření pracovního prostoru služby Log Analytics
Pracovní prostor Log Analytic sice není nutný ke spuštění služby App Service v Azure Arc, ale vývojáři můžou získat protokoly aplikací pro své aplikace spuštěné v clusteru Kubernetes s podporou Azure Arc.
Pro zjednodušení vytvořte pracovní prostor.
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
Spuštěním následujících příkazů získejte kódované ID pracovního prostoru a sdílený klíč pro existující pracovní prostor služby Log Analytics. Budete je potřebovat v dalším kroku.
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
Instalace rozšíření služby App Service
Nastavte následující proměnné prostředí pro požadovaný název rozšíření Služby App Service, obor názvů clusteru, ve kterém se mají prostředky zřídit, a název prostředí Kubernetes služby App Service. Zvolte jedinečný název ,
<kube-environment-name>
protože je součástí názvu domény aplikace vytvořené v prostředí Kubernetes služby App Service.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resource
Nainstalujte rozšíření služby App Service do clusteru připojeného ke službě Azure Arc s povolenou službou Log Analytics. I když se log Analytics nevyžaduje, nemůžete ho později přidat do rozšíření, takže je teď jednodušší to udělat.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --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=${KUBE_ENVIRONMENT_NAME}" \ --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" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
Poznámka:
Pokud chcete rozšíření nainstalovat bez integrace Log Analytics, odeberte z příkazu poslední tři
--configuration-settings
parametry.Následující tabulka popisuje různé
--configuration-settings
parametry př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é je vytvořeno. Doporučuje se nastavit tuto hodnotu default
.appsNamespace
Obor názvů pro zřízení definic a podů aplikace. Musí odpovídat oboru názvů vydané verze rozšíření. clusterName
Název prostředí Kubernetes služby App Service, které je vytvořené pro toto rozšíření. keda.enabled
Jestli by se měl keDA nainstalovat do clusteru Kubernetes. Přijímá true
nebofalse
.buildService.storageClassName
Název třídy úložiště pro službu sestavení pro ukládání artefaktů sestavení. Hodnota jako default
určuje třídu s názvemdefault
, a ne žádnou tří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í se jednat o jiné distrubce/platformy.buildService.storageAccessMode
Režim přístupu, který se má použít s pojmenovanou třídou úložiště. Přijímá ReadWriteOnce
neboReadWriteMany
.customConfigMap
Název mapy konfigurace, která bude nastavena prostředím Kubernetes služby App Service. V současné době musí být <namespace>/kube-environment-config
nahrazen<namespace>
hodnotouappsNamespace
.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
Název skupiny prostředků, ve které se nachází cluster Azure Kubernetes Service. Platné a povinné pouze v případě, že základní cluster je Azure Kubernetes Service. logProcessor.appLogs.destination
Nepovinné. Přijme log-analytics
nebonone
zvolíte možnost žádného zákazu protokolů platformy.logProcessor.appLogs.logAnalyticsConfig.customerId
Povinné pouze v případě, že logProcessor.appLogs.destination
je nastavena hodnotalog-analytics
. ID pracovního prostoru služby Log Analytics kódované podle base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.logProcessor.appLogs.logAnalyticsConfig.sharedKey
Povinné pouze v případě, že logProcessor.appLogs.destination
je nastavena hodnotalog-analytics
. Sdílený klíč pracovního prostoru Log Analytics kódovaný base64. Tento parametr by měl být nakonfigurovaný jako chráněné nastavení.id
Uložte vlastnost rozšíření služby App Service pro pozdější použití.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Než budete pokračovat, počkejte, až se rozšíření plně nainstaluje. Relaci terminálu můžete nechat počkat, až se dokončí, spuštěním následujícího příkazu:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Můžete použít kubectl
k zobrazení podů vytvořených v clusteru Kubernetes:
kubectl get pods -n $NAMESPACE
Další informace o těchto podech a jejich roli v systému najdete v podech vytvořených rozšířením služby App Service.
Vytvoření vlastního umístění
Vlastní umístění v Azure slouží k přiřazení prostředí Kubernetes služby App Service.
Nastavte následující proměnné prostředí pro požadovaný název vlastního umístění a ID clusteru připojeného ke službě Azure Arc.
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)
Vytvořte vlastní umístění:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Poznámka:
Pokud máte problémy s vytvořením vlastního umístění v clusteru, možná budete muset ve svém clusteru povolit funkci vlastního umístění. To se vyžaduje, pokud jste přihlášení k rozhraní příkazového řádku pomocí instančního objektu nebo pokud jste přihlášení pomocí uživatele Microsoft Entra s omezenými oprávněními k prostředku clusteru.
Pomocí následujícího příkazu ověřte, že se vlastní umístění úspěšně vytvořilo. Výstup by měl zobrazit
provisioningState
vlastnost jakoSucceeded
. Pokud ne, spusťte ho znovu po minutě.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Uložte ID vlastního umístění pro další krok.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
Vytvoření prostředí Kubernetes služby App Service
Než začnete vytvářet aplikace ve vlastním umístění, potřebujete prostředí Kubernetes služby App Service.
Vytvořte prostředí Kubernetes služby App Service:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Pomocí následujícího příkazu ověřte, že se prostředí Kubernetes služby App Service úspěšně vytvořilo. Výstup by měl zobrazit
provisioningState
vlastnost jakoSucceeded
. Pokud ne, spusťte ho znovu po minutě.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME