Compartilhar via


Tutorial: Habilitar Aplicativos de Contêiner do Azure no Kubernetes habilitado para Azure Arc

Com os clusters do Kubernetes habilitados para Azure Arc, você pode criar um Local personalizado habilitado para Aplicativos de Contêiner em seu cluster do Kubernetes local ou na nuvem para implantar seus aplicativos de Aplicativos de Contêiner do Azure como faria com qualquer outra região.

Este tutorial mostra como habilitar os Aplicativos de Contêiner do Azure em um cluster do Kubernetes habilitado para Azure Arc. Neste tutorial, você:

  • Crie um cluster conectado.
  • Criar um espaço de trabalho do Log Analytics.
  • Instale a extensão Aplicativos de Contêiner.
  • Crie um local personalizado.
  • Crie o ambiente conectado dos Aplicativos de Contêiner do Azure.

Pré-requisitos

Antes de começar, certifique-se de que você tem os seguintes pré-requisitos necessários:

Instalação

Instale as seguintes extensões da CLI do 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

Registre os namespaces necessários.

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

Defina variáveis de ambiente com base na implantação do cluster do Kubernetes.

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

Criar um cluster conectado

Essas instruções servem para fins de avaliação e aprendizado. Para implantações de produção, consulte o Início Rápido: conectar um cluster kubernetes existente ao Azure Arc para obter instruções gerais sobre como criar um cluster kubernetes habilitado para Azure Arc.

Para começar a usar o serviço, siga estas etapas para criar um cluster do AKS (Serviço de Kubernetes do Azure) e conectá-lo ao Azure Arc:

  1. Crie um cluster no Serviço de Kubernetes do Azure.

    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. Obtenha o arquivo kubeconfig e teste sua conexão com o cluster. Por padrão, o arquivo kubeconfig é salvo em ~/.kube/config.

    az aks get-credentials --resource-group $AKS_CLUSTER_GROUP_NAME --name $AKS_NAME --admin
    
    kubectl get ns
    
  3. Crie um grupo de recursos para conter os recursos do Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Conecte o cluster criado ao Azure Arc.

    CLUSTER_NAME="${GROUP_NAME}-cluster" # Name of the connected cluster resource
    
    az connectedk8s connect --resource-group $GROUP_NAME --name $CLUSTER_NAME
    
  5. Valide a conexão com o comando a seguir. Ela mostrará a propriedade provisioningState como Succeeded. Caso contrário, execute o comando novamente após um minuto.

    az connectedk8s show --resource-group $GROUP_NAME --name $CLUSTER_NAME
    

Criar um espaço de trabalho do Log Analytics

Um workspace do Log Analytics fornece acesso a logs para aplicativos de Aplicativos de Contêiner em execução no cluster do Kubernetes habilitado para Azure Arc. Um workspace do Log Analytics é opcional, mas recomendado.

  1. Criar um espaço de trabalho do 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. Execute os comandos a seguir para obter a ID e a chave compartilhada codificadas de um workspace existente do Log Analytics. Você precisará deles na próxima etapa.

    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
    

Instalar a extensão Aplicativos de Contêiner

Importante

Se estiver implantando no AKS no Azure Local, verifique se você configurou o HAProxy ou um balanceador de carga personalizado antes de tentar instalar a extensão. Você também pode usar az containerapp arc setup-core-dns --distro AksAzureLocal para configurar dns principais para contextos locais.

  1. Defina as variáveis de ambiente a seguir para o nome desejado da extensão dos Aplicativos de Contêiner, o namespace do cluster no qual os recursos devem ser provisionados e o nome do ambiente conectado de Aplicativos de Contêiner do Azure. Use um nome exclusivo para <connected-environment-name>. O nome do ambiente conectado faz parte do nome de domínio do aplicativo que você cria no ambiente conectado dos Aplicativos de Contêiner do Azure.

    EXTENSION_NAME="appenv-ext"
    NAMESPACE="appplat-ns"
    CONNECTED_ENVIRONMENT_NAME="<connected-environment-name>"
    
  2. Instale a extensão do Aplicativos de Contêiner no cluster conectado ao Azure Arc, com o Log Analytics habilitado. O Log Analytics não pode ser adicionado à extensão mais tarde.

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

    Observação

    Para instalar a extensão sem a integração do Log Analytics, remova os três últimos parâmetros --configuration-settings do comando.

    Para clusters que usam um balanceador de carga personalizado em vez do balanceador de carga padrão do AKS, depois que o balanceador de carga é configurado, especifique o seguinte parâmetro:

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

    Substitua <LOAD_BALANCER_INGRESS_IP> pelo endereço IP de entrada real atribuído ao balanceador de carga.

    A seguinte tabela descreve os vários parâmetros --configuration-settings durante a execução do comando:

    Parâmetro Descrição
    Microsoft.CustomLocation.ServiceAccount A conta de serviço criada para o local personalizado. Defina o valor como default.
    appsNamespace O namespace usado para criar as definições e revisões do aplicativo. Precisa corresponder àquele do namespace de versão da extensão.
    clusterName O nome do ambiente kubernetes de extensão de Aplicativos de Contêiner criado em relação a essa extensão.
    logProcessor.appLogs.destination Opcional. Destino para logs de aplicativo. Aceita log-analytics ou none, escolher nenhum desabilita os logs da plataforma.
    logProcessor.appLogs.logAnalyticsConfig.customerId Obrigatório somente quando logProcessor.appLogs.destination estiver definido como log-analytics. A ID do workspace do Log Analytics codificada em base64. Esse parâmetro deve ser definido como uma configuração protegida.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Obrigatório somente quando logProcessor.appLogs.destination estiver definido como log-analytics. A chave compartilhada do workspace do Log Analytics codificada em base64. Esse parâmetro deve ser definido como uma configuração protegida.
    loadBalancerIp O IP de entrada do balanceador de carga.
  3. Salve a propriedade id da extensão dos Aplicativos de Contêiner para mais tarde.

    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. Aguarde até que a extensão seja instalada por completo antes de continuar. Você pode fazer com que a sessão de terminal aguarde a conclusão executando o seguinte comando:

    az resource wait --ids $EXTENSION_ID --custom "properties.provisioningState!='Pending'" --api-version "2020-07-01-preview"
    

Use kubectl para exibir os pods em execução no cluster do Kubernetes:

kubectl get pods -n $NAMESPACE

Para saber mais sobre esses pods e sua função no sistema, confira Visão geral do Azure Arc.

Criar uma localização personalizada

O local personalizado é um local do Azure que você atribui ao ambiente conectado dos Aplicativos de Contêiner do Azure.

  1. Defina as variáveis de ambiente a seguir para o nome desejado da localização personalizada e para a ID do cluster conectado do 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. Crie a localização personalizada:

    az customlocation create \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --host-resource-id $CONNECTED_CLUSTER_ID \
        --namespace $NAMESPACE \
        --cluster-extension-ids $EXTENSION_ID
    

    Observação

    Se você tiver problemas ao criar um local personalizado no cluster, talvez seja necessário habilitar o recurso de localização personalizada no cluster. Habilite esse recurso quando conectado à CLI usando uma Entidade de Serviço ou um usuário do Microsoft Entra com permissões restritas no recurso de cluster.

  3. Valide se a localização personalizada foi criada com êxito com o comando a seguir. A saída deverá mostrar a propriedade provisioningState como Succeeded. Caso contrário, execute novamente o comando após um minuto.

    az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
    
  4. Salve a ID de localização personalizada para a próxima etapa.

    CUSTOM_LOCATION_ID=$(az customlocation show \
        --resource-group $GROUP_NAME \
        --name $CUSTOM_LOCATION_NAME \
        --query id \
        --output tsv)
    

Criar o ambiente conectado dos Aplicativos de Contêiner do Azure

Antes de começar a criar aplicativos no local personalizado, você precisa de um ambiente conectado dos Aplicativos de Contêiner do Azure.

  1. Crie o ambiente conectado dos Aplicativos de Contêiner:

    az containerapp connected-env create \
        --resource-group $GROUP_NAME \
        --name $CONNECTED_ENVIRONMENT_NAME \
        --custom-location $CUSTOM_LOCATION_ID \
        --location $LOCATION
    
  2. Valide se o ambiente conectado dos Aplicativos de Contêiner foi criado com êxito com o comando a seguir. A saída deverá mostrar a propriedade provisioningState como Succeeded. Caso contrário, execute-a novamente após um minuto.

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

Próximas etapas