Konfigurowanie klastra Kubernetes z włączoną obsługą usługi Azure Arc do uruchamiania usług App Service, Functions i Logic Apps (wersja zapoznawcza)
Jeśli masz klaster Kubernetes z włączoną usługą Azure Arc, możesz użyć go do utworzenia niestandardowej lokalizacji z włączoną usługą App Service i wdrożenia w niej aplikacji internetowych, aplikacji funkcji i aplikacji logiki.
Platforma Kubernetes z obsługą usługi Azure Arc umożliwia uwidocznienie klastra Kubernetes w środowisku lokalnym lub w chmurze w usłudze App Service, Functions i Logic Apps na platformie Azure. Aplikację można utworzyć i wdrożyć w niej tak samo jak w innym regionie świadczenia usługi Azure.
Wymagania wstępne
Jeśli nie masz konta platformy Azure, zarejestruj się dzisiaj , aby uzyskać bezpłatne konto.
Zapoznaj się z wymaganiami i ograniczeniami publicznej wersji zapoznawczej. Szczególnie ważne są wymagania dotyczące klastra.
Dodawanie rozszerzeń interfejsu wiersza polecenia platformy Azure
Uruchom środowisko powłoki Bash w usłudze Azure Cloud Shell.
Ponieważ te polecenia interfejsu wiersza polecenia nie są jeszcze częścią podstawowego zestawu interfejsu wiersza polecenia, dodaj je za pomocą następujących poleceń.
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
Tworzenie połączonego klastra
Uwaga
W tym samouczku usługa Azure Kubernetes Service (AKS) udostępnia konkretne instrukcje dotyczące konfigurowania środowiska od podstaw. Jednak w przypadku obciążenia produkcyjnego prawdopodobnie nie chcesz włączać usługi Azure Arc w klastrze usługi AKS, ponieważ jest on już zarządzany na platformie Azure. Kroki ułatwią zrozumienie usługi, ale w przypadku wdrożeń produkcyjnych powinny one być wyświetlane jako ilustracyjne, a nie normatywne. Zobacz Szybki start: łączenie istniejącego klastra Kubernetes z usługą Azure Arc , aby uzyskać ogólne instrukcje dotyczące tworzenia klastra Kubernetes z obsługą usługi Azure Arc.
Utwórz klaster w usłudze Azure Kubernetes Service z publicznym adresem IP. Zastąp
<group-name>
ciąg odpowiednią nazwą grupy zasobów.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
Pobierz plik kubeconfig i przetestuj połączenie z klastrem. Domyślnie plik kubeconfig jest zapisywany w pliku
~/.kube/config
.az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin kubectl get ns
Utwórz grupę zasobów zawierającą zasoby usługi Azure Arc. Zastąp
<group-name>
ciąg odpowiednią nazwą grupy zasobów.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_LOCATION
Połącz utworzony klaster z usługą Azure Arc.
CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
Zweryfikuj połączenie przy użyciu następującego polecenia. Właściwość powinna być wyświetlana
provisioningState
jakoSucceeded
. Jeśli nie, uruchom polecenie ponownie po minucie.az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
Tworzenie obszaru roboczego usługi Log Analytics
Chociaż obszar roboczy analizy dzienników nie jest wymagany do uruchamiania usługi App Service w usłudze Azure Arc, deweloperzy mogą pobierać dzienniki aplikacji dla swoich aplikacji uruchomionych w klastrze Kubernetes z obsługą usługi Azure Arc.
Dla uproszczenia utwórz teraz obszar roboczy.
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
Uruchom następujące polecenia, aby uzyskać zakodowany identyfikator obszaru roboczego i klucz udostępniony dla istniejącego obszaru roboczego usługi Log Analytics. Będą one potrzebne w następnym 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
Instalowanie rozszerzenia usługi App Service
Ustaw następujące zmienne środowiskowe dla żądanej nazwy rozszerzenia usługi App Service, przestrzeni nazw klastra, w której należy aprowizować zasoby, oraz nazwę środowiska Kubernetes usługi App Service. Wybierz unikatową nazwę elementu
<kube-environment-name>
, ponieważ jest częścią nazwy domeny aplikacji utworzonej w środowisku Kubernetes usługi 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
Zainstaluj rozszerzenie usługi App Service w klastrze połączonym z usługą Azure Arc z włączoną usługą Log Analytics. Ponownie, chociaż usługa Log Analytics nie jest wymagana, nie można dodać jej do rozszerzenia później, więc łatwiej jest to zrobić teraz.
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}"
Uwaga
Aby zainstalować rozszerzenie bez integracji usługi Log Analytics, usuń z polecenia ostatnie trzy
--configuration-settings
parametry.W poniższej tabeli opisano różne
--configuration-settings
parametry podczas uruchamiania polecenia:Parametr Opis Microsoft.CustomLocation.ServiceAccount
Konto usługi, które należy utworzyć dla utworzonej lokalizacji niestandardowej. Zaleca się ustawienie tej wartości na wartość default
.appsNamespace
Przestrzeń nazw do aprowizowania definicji aplikacji i zasobników. Musi być zgodna z przestrzenią nazw wydania rozszerzenia. clusterName
Nazwa środowiska Kubernetes usługi App Service utworzonego na potrzeby tego rozszerzenia. keda.enabled
Czy usługa KEDA powinna być zainstalowana w klastrze Kubernetes. true
Akceptuje lubfalse
.buildService.storageClassName
Nazwa klasy magazynu dla usługi kompilacji do przechowywania artefaktów kompilacji. Wartość, taka jak default
, określa klasę o nazwiedefault
, a nie każdą klasę, która jest oznaczona jako domyślna. Wartość domyślna to prawidłowa klasa magazynu dla usług AKS i AKS HCI, ale może nie być w przypadku innych dystrybucji/platform.buildService.storageAccessMode
Tryb dostępu do użycia z nazwaną klasą magazynu. ReadWriteOnce
Akceptuje lubReadWriteMany
.customConfigMap
Nazwa mapy konfiguracji, która zostanie ustawiona przez środowisko Kubernetes usługi App Service. Obecnie musi ona mieć <namespace>/kube-environment-config
wartość , zastępując<namespace>
element wartościąappsNamespace
.envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group
Nazwa grupy zasobów, w której znajduje się klaster usługi Azure Kubernetes Service. Prawidłowy i wymagany tylko wtedy, gdy bazowy klaster jest usługą Azure Kubernetes Service. logProcessor.appLogs.destination
Opcjonalny. log-analytics
Akceptuje lubnone
, wybranie opcji Brak powoduje wyłączenie dzienników platformy.logProcessor.appLogs.logAnalyticsConfig.customerId
Wymagane tylko wtedy, gdy logProcessor.appLogs.destination
jest ustawiona wartośćlog-analytics
. Identyfikator obszaru roboczego usługi Log Analytics zakodowany w formacie base64. Ten parametr należy skonfigurować jako ustawienie chronione.logProcessor.appLogs.logAnalyticsConfig.sharedKey
Wymagane tylko wtedy, gdy logProcessor.appLogs.destination
jest ustawiona wartośćlog-analytics
. Klucz wspólny obszaru roboczego usługi Log Analytics zakodowany w formacie base64. Ten parametr należy skonfigurować jako ustawienie chronione.id
Zapisz właściwość rozszerzenia usługi App Service do późniejszego użycia.EXTENSION_ID=$(az k8s-extension show \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --query id \ --output tsv)
Przed kontynuowaniem poczekaj na pełne zainstalowanie rozszerzenia. Możesz poczekać na ukończenie sesji terminalu, uruchamiając następujące polecenie:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Możesz użyć kubectl
polecenia , aby wyświetlić zasobniki utworzone w klastrze Kubernetes:
kubectl get pods -n $NAMESPACE
Więcej informacji na temat tych zasobników i ich roli można uzyskać w systemie z zasobników utworzonych przez rozszerzenie usługi App Service.
Tworzenie lokalizacji niestandardowej
Lokalizacja niestandardowa na platformie Azure służy do przypisywania środowiska Kubernetes usługi App Service.
Ustaw następujące zmienne środowiskowe dla żądanej nazwy lokalizacji niestandardowej i identyfikatora klastra połączonego z usługą 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)
Utwórz lokalizację niestandardową:
az customlocation create \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --host-resource-id $CONNECTED_CLUSTER_ID \ --namespace $NAMESPACE \ --cluster-extension-ids $EXTENSION_ID
Uwaga
Jeśli wystąpią problemy z tworzeniem lokalizacji niestandardowej w klastrze, może być konieczne włączenie funkcji lokalizacji niestandardowej w klastrze. Jest to wymagane w przypadku zalogowania się do interfejsu wiersza polecenia przy użyciu jednostki usługi lub zalogowania się za pomocą użytkownika Microsoft Entra z ograniczonymi uprawnieniami do zasobu klastra.
Sprawdź, czy lokalizacja niestandardowa została pomyślnie utworzona za pomocą następującego polecenia. Dane wyjściowe powinny wyświetlać
provisioningState
właściwość jakoSucceeded
. Jeśli nie, uruchom go ponownie po minucie.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
Zapisz identyfikator lokalizacji niestandardowej dla następnego kroku.
CUSTOM_LOCATION_ID=$(az customlocation show \ --resource-group $GROUP_NAME \ --name $CUSTOM_LOCATION_NAME \ --query id \ --output tsv)
Tworzenie środowiska Kubernetes usługi App Service
Przed rozpoczęciem tworzenia aplikacji w lokalizacji niestandardowej potrzebne jest środowisko Kubernetes usługi App Service.
Utwórz środowisko Kubernetes usługi App Service:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID
Sprawdź, czy środowisko Kubernetes usługi App Service zostało pomyślnie utworzone za pomocą następującego polecenia. Dane wyjściowe powinny wyświetlać
provisioningState
właściwość jakoSucceeded
. Jeśli nie, uruchom go ponownie po minucie.az appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME