Kurz: Povolení azure Container Apps v Kubernetes s podporou Azure Arc (Preview)


S clustery Kubernetes s podporou Služby Kubernetes s podporou Služby Azure Arc můžete ve svém místním nebo cloudovém clusteru Kubernetes vytvořit vlastní umístění s povolenou službou Container Apps, abyste nasadí aplikace Azure Container Apps stejně jako jakoukoli jinou oblast.

V tomto kurzu se dozvíte, jak povolit Azure Container Apps v clusteru Kubernetes s podporou Arc. V tomto kurzu:

  • Vytvořte připojený cluster.
  • Vytvoříte pracovní prostor služby Log Analytics
  • Nainstalujte rozšíření Container Apps.
  • Vytvořte vlastní umístění.
  • Vytvořte připojené prostředí Azure Container Apps.

Poznámka:

V produkčních konfiguracích se v produkčních konfiguracích nepodporují azure Container Apps on Arc ve verzi Preview. Tento článek obsahuje ukázkovou konfiguraci pouze pro účely vyhodnocení.

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 možná nebudete chtít povolit Azure Arc v clusteru AKS, protože už je spravovaný v Azure.

Požadavky

Instalační program

Nainstalujte následující rozšíření Azure CLI.

az extension add --name connectedk8s  --upgrade --yes
az extension add --name k8s-extension --upgrade --yes
az extension add --name customlocation --upgrade --yes
az extension remove --name containerapp
az extension add --source https://aka.ms/acaarccli/containerapp-latest-py2.py3-none-any.whl --yes

Zaregistrujte požadované obory názvů.

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

Nastavte proměnné prostředí na základě nasazení clusteru Kubernetes.

GROUP_NAME="my-arc-cluster-group"
AKS_CLUSTER_GROUP_NAME="my-aks-cluster-group"
AKS_NAME="my-aks-cluster"
LOCATION="eastus"

Vytvoření připojeného clusteru

Následující kroky vám pomůžou 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 do Služby Azure Arc, kde najdete obecné pokyny k vytvoření clusteru Kubernetes s podporou Azure Arc.

  1. Vytvořte cluster ve službě 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. Získejte soubor kubeconfig a otestujte připojení ke clusteru. Ve výchozím nastavení se soubor kubeconfig uloží do ~/.kube/configsouboru .

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Vytvořte skupinu prostředků, která bude obsahovat vaše prostředky Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Připojení clusteru, který jste vytvořili ve 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
    
  5. Pomocí následujícího příkazu ověřte připojení. Měla by zobrazit provisioningState vlastnost jako Succeeded. 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 služby Log Analytics poskytuje přístup k protokolům pro aplikace Container Apps spuštěné v clusteru Kubernetes s podporou Azure Arc. Pracovní prostor služby Log Analytics je volitelný, ale doporučuje se.

  1. Vytvoříte pracovní prostor služby 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. 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í Container Apps

  1. Nastavte následující proměnné prostředí na požadovaný název rozšíření Container Apps, obor názvů clusteru, ve kterém se mají prostředky zřídit, a název připojeného prostředí Azure Container Apps. Zvolte jedinečný název pro <connected-environment-name>. Název připojeného prostředí bude součástí názvu domény aplikace, kterou vytvoříte v připojeném prostředí Azure Container Apps.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Nainstalujte rozšíření Container Apps do clusteru připojeného ke službě Azure Arc s povolenou službou Log Analytics. Log Analytics není možné přidat do rozšíření později.

    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}"
    

    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 vytvořený pro vlastní umístění. Doporučuje se nastavit hodnotu default.
    appsNamespace Obor názvů použitý k vytvoření definic a revizí aplikace. Musí odpovídat oboru názvů vydané verze rozšíření.
    clusterName Název prostředí Kubernetes rozšíření Container Apps, které se vytvoří proti tomuto rozšíření.
    logProcessor.appLogs.destination Nepovinné. Cíl pro protokoly aplikace. Přijme log-analytics nebo nonezvolíte možnost žádného zákazu protokolů platformy.
    logProcessor.appLogs.logAnalyticsConfig.customerId Povinné pouze v případě, že logProcessor.appLogs.destination je nastavena hodnota log-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 hodnota log-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í.
    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.
  3. id Uložte vlastnost rozšíření Container Apps 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)
    
  4. 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.provisioningState!='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 přehledu služby Azure Arc.

Vytvoření vlastního umístění

Vlastní umístění je umístění Azure, které přiřadíte k připojenému prostředí Azure Container Apps.

  1. Nastavte následující proměnné prostředí na 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)
    
  2. 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.

  3. 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 jako Succeeded. Pokud ne, spusťte příkaz po minutě znovu.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. 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í připojeného prostředí Azure Container Apps

Než začnete vytvářet aplikace ve vlastním umístění, potřebujete připojené prostředí Azure Container Apps.

  1. Vytvořte připojené prostředí Container Apps:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Pomocí následujícího příkazu ověřte, že se úspěšně vytvořilo připojené prostředí Container Apps. Výstup by měl zobrazit provisioningState vlastnost jako Succeeded. Pokud ne, spusťte ho znovu po minutě.

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

Další kroky