Samouczek: włączanie usługi Azure Container Apps na platformie Kubernetes z obsługą usługi Azure Arc (wersja zapoznawcza)
Dzięki klastrom Kubernetes z włączoną usługą Azure Arc możesz utworzyć niestandardową lokalizację z włączoną obsługą usługi Container Apps w klastrze lokalnym lub w chmurze Kubernetes w celu wdrożenia aplikacji usługi Azure Container Apps, tak jak w każdym innym regionie.
W tym samouczku pokazano, jak włączyć usługę Azure Container Apps w klastrze Kubernetes z obsługą usługi Arc. W tym samouczku wykonasz następujące elementy:
- Utwórz połączony klaster.
- Utworzenie obszaru roboczego usługi Log Analytics.
- Zainstaluj rozszerzenie Container Apps.
- Utwórz lokalizację niestandardową.
- Utwórz połączone środowisko usługi Azure Container Apps.
Uwaga
W wersji zapoznawczej usługa Azure Container Apps on Arc nie jest obsługiwana w konfiguracjach produkcyjnych. Ten artykuł zawiera przykładową konfigurację tylko do celów ewaluacyjnych.
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 możesz nie chcieć włączyć usługi Azure Arc w klastrze usługi AKS, ponieważ jest on już zarządzany na platformie Azure.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją.
- Jeśli nie masz konta, możesz je utworzyć teraz za darmo.
- Zainstaluj interfejs wiersza polecenia platformy Azure.
- Dostęp do publicznego lub prywatnego rejestru kontenerów, takiego jak usługa Azure Container Registry.
- Zapoznaj się z wymaganiami i ograniczeniami publicznej wersji zapoznawczej. Szczególnie ważne są wymagania dotyczące klastra.
Ustawienia
Zainstaluj następujące rozszerzenia interfejsu wiersza polecenia platformy Azure.
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
Zarejestruj wymagane przestrzenie nazw.
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.OperationalInsights --wait
Ustaw zmienne środowiskowe na podstawie wdrożenia klastra Kubernetes.
GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"
Tworzenie połączonego klastra
Poniższe kroki ułatwiają zrozumienie usługi, ale w przypadku wdrożeń produkcyjnych powinny 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.
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-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.
az group create --name $GROUP_NAME --location $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
Obszar roboczy usługi Log Analytics zapewnia dostęp do dzienników dla aplikacji usługi Container Apps działających w klastrze Kubernetes z obsługą usługi Azure Arc. Obszar roboczy usługi Log Analytics jest opcjonalny, ale zalecany.
Utworzenie obszaru roboczego usługi Log Analytics.
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 Container Apps
Ważne
W przypadku wdrażania w usłudze AKS-HCI upewnij się, że przed podjęciem próby zainstalowania rozszerzenia skonfigurowano usługę HAProxy lub niestandardowy moduł równoważenia obciążenia.
Ustaw następujące zmienne środowiskowe na żądaną nazwę rozszerzenia Container Apps, przestrzeń nazw klastra, w której należy aprowizować zasoby, oraz nazwę środowiska połączonego usługi Azure Container Apps. Wybierz unikatową nazwę elementu
<connected-environment-name>
. Nazwa połączonego środowiska będzie częścią nazwy domeny dla aplikacji utworzonej w połączonym środowisku usługi Azure Container Apps.EXTENSION_NAME="appenv-ext" NAMESPACE="appplat-ns" CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
Zainstaluj rozszerzenie Container Apps do klastra połączonego z usługą Azure Arc z włączoną usługą Log Analytics. Nie można później dodać usługi Log Analytics do rozszerzenia.
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 "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${AKS_CLUSTER_GROUP_NAME}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --configuration-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --configuration-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 utworzone dla lokalizacji niestandardowej. Zaleca się, aby ustawiono wartość default
.appsNamespace
Przestrzeń nazw używana do tworzenia definicji i poprawek aplikacji. Musi być zgodna z przestrzenią nazw wydania rozszerzenia. clusterName
Nazwa środowiska Kubernetes rozszerzenia Container Apps, które zostanie utworzone względem tego rozszerzenia. logProcessor.appLogs.destination
Opcjonalny. Miejsce docelowe dzienników aplikacji. 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.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. id
Zapisz właściwość rozszerzenia Container Apps 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. Sesja terminalu może poczekać na jego zakończenie, uruchamiając następujące polecenie:
az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
Możesz użyć kubectl
polecenia , aby wyświetlić zasobniki, które zostały utworzone w klastrze Kubernetes:
kubectl get pods -n $NAMESPACE
Aby dowiedzieć się więcej na temat tych zasobników i ich roli w systemie, zobacz Omówienie usługi Azure Arc.
Tworzenie lokalizacji niestandardowej
Lokalizacja niestandardowa to lokalizacja platformy Azure przypisana do połączonego środowiska usługi Azure Container Apps.
Ustaw następujące zmienne środowiskowe na żądaną nazwę lokalizacji niestandardowej i identyfikator 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 ponownie polecenie 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 połączonego środowiska usługi Azure Container Apps
Przed rozpoczęciem tworzenia aplikacji w lokalizacji niestandardowej potrzebne jest połączone środowisko usługi Azure Container Apps.
Utwórz połączone środowisko usługi Container Apps:
az containerapp connected-env create \ --resource-group $GROUP_NAME \ --name $CONNECTED_ENVIRONMENT_NAME \ --custom-location $CUSTOM_LOCATION_ID \ --location $LOCATION
Sprawdź, czy połączone środowisko usługi Container Apps 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 containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME