Udostępnij przez


Samouczek: włączanie usługi Azure Container Apps na platformie Kubernetes z obsługą usługi Azure Arc

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 Azure Arc. W tym samouczku nauczysz się następujących rzeczy:

  • 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.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że zostały spełnione następujące wymagania wstępne:

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

Te instrukcje są przeznaczone do celów ewaluacyjnych i szkoleniowych. W przypadku wdrożeń produkcyjnych zapoznaj się z przewodnikiem 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.

Aby rozpocząć pracę z usługą, wykonaj następujące kroki, aby utworzyć klaster usługi Azure Kubernetes Service (AKS) i połączyć go z usługą Azure Arc:

  1. 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
    
  2. 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
    
  3. Utwórz grupę zasobów zawierającą zasoby usługi Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. 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
    
  5. Zweryfikuj połączenie przy użyciu następującego polecenia. Właściwość powinna być wyświetlana provisioningState jako Succeeded. 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.

  1. 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
    
  2. 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 na platformie AKS w środowisku Azure Local upewnij się, że przed próbą zainstalowania rozszerzenia zostało skonfigurowane HAProxy lub niestandardowy moduł równoważenia obciążenia. Można również użyć az containerapp arc setup-core-dns --distro AksAzureLocal polecenia , aby skonfigurować podstawową usługę DNS dla kontekstów lokalnych.

  1. 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 jest 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>"
    
  2. 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 "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 przypadku klastrów korzystających z niestandardowego modułu równoważenia obciążenia zamiast standardowego modułu równoważenia obciążenia usługi AKS po skonfigurowaniu modułu równoważenia obciążenia określ następujący parametr:

    --configuration-settings "loadBalancerIp=<LOAD_BALANCER_INGRESS_IP>"
    

    Zastąp <LOAD_BALANCER_INGRESS_IP> rzeczywistym adresem IP ruchu przychodzącego przypisanym do modułu równoważenia obciążenia.

    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. Ustaw wartość na 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 utworzonego na potrzeby tego rozszerzenia.
    logProcessor.appLogs.destination Opcjonalny. Miejsce docelowe dzienników aplikacji. log-analytics Akceptuje lub none, 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.
    loadBalancerIp Adres IP wejściowy load balancera.
  3. 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)
    
  4. 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"
    

Użyj kubectl polecenia, aby wyświetlić podsy uruchomione 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.

  1. 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)
    
  2. 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. Włącz tę funkcję po zalogowaniu się do CLI przy użyciu jednostki usługi lub użytkownika Microsoft Entra z ograniczonymi uprawnieniami na zasobie klastra.

  3. 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ść jako Succeeded. Jeśli nie, uruchom ponownie polecenie po minucie.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. 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.

  1. 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
    
  2. 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ść jako Succeeded. Jeśli nie, uruchom go ponownie po minucie.

    az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME
    

Następne kroki