Share via


Tutorial: Habilitar aplicativos de contêiner do Azure no Kubernetes habilitado para Azure Arc (visualização)


Com clusters Kubernetes habilitados para Azure Arc, você pode criar um local personalizado habilitado para Aplicativos de Contêiner em seu cluster 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 mostrará como habilitar os Aplicativos de Contêiner do Azure em seu cluster Kubernetes habilitado para Arc. Neste tutorial você irá:

  • Crie um cluster conectado.
  • Criar uma área de trabalho do Log Analytics.
  • Instale a extensão Container Apps.
  • Crie um local personalizado.
  • Crie o ambiente conectado dos Aplicativos de Contêiner do Azure.

Nota

Durante a visualização, os Aplicativos de Contêiner do Azure no Arc não são suportados nas configurações de produção. Este artigo fornece um exemplo de configuração apenas para fins de avaliação.

Este tutorial usa o Serviço Kubernetes do Azure (AKS) para fornecer instruções concretas para configurar um ambiente do zero. No entanto, para uma carga de trabalho de produção, talvez você não queira habilitar o Azure Arc em um cluster AKS, pois ele já é gerenciado no Azure.

Pré-requisitos

Configuraçã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 remove --name containerapp
az extension add --source https://aka.ms/acaarccli/containerapp-latest-py2.py3-none-any.whl --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

As etapas a seguir ajudam você a começar a entender o serviço, mas para implantações de produção, elas devem ser vistas como ilustrativas, não prescritivas. Consulte Guia de 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 .

  1. Crie um cluster no Serviço 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 no ~/.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 seus recursos do Azure Arc.

    az group create --name $GROUP_NAME --location $LOCATION
    
  4. Conecte o cluster que você criou 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. Ele deve mostrar a provisioningState propriedade como Succeeded. Caso contrário, execute o comando novamente após um minuto.

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

Criar uma área de trabalho do Log Analytics

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

  1. Criar uma área 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 o ID do espaço de trabalho codificado e a chave compartilhada para um espaço de trabalho existente do Log Analytics. Você precisa 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 Container Apps

  1. Defina as seguintes variáveis de ambiente para o nome desejado da extensão Aplicativos de Contêiner, o namespace de cluster no qual os recursos devem ser provisionados e o nome do ambiente conectado dos Aplicativos de Contêiner do Azure. Escolha um nome exclusivo para <connected-environment-name>. O nome do ambiente conectado fará parte do nome de domínio do aplicativo que você criará 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 Aplicativos de Contêiner em seu cluster conectado ao Azure Arc com o Log Analytics habilitado. O Log Analytics não pode ser adicionado à extensão posteriormente.

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

    Nota

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

    A tabela a seguir descreve os vários --configuration-settings parâmetros ao executar o comando:

    Parâmetro Descrição
    Microsoft.CustomLocation.ServiceAccount A conta de serviço criada para o local personalizado. Recomenda-se que seja definido com o valor default.
    appsNamespace O namespace usado para criar as definições e revisões do aplicativo. Ele deve corresponder ao do namespace de versão de extensão.
    clusterName O nome do ambiente Kubernetes da extensão Container Apps que será criado nessa extensão.
    logProcessor.appLogs.destination Opcional. Destino dos logs do aplicativo. Aceita log-analytics ou none, escolher nenhum desativa os logs da plataforma.
    logProcessor.appLogs.logAnalyticsConfig.customerId Necessário somente quando logProcessor.appLogs.destination estiver definido como log-analytics. O ID do espaço de trabalho de análise de log codificado em base64. Este parâmetro deve ser configurado como uma configuração protegida.
    logProcessor.appLogs.logAnalyticsConfig.sharedKey Necessário somente quando logProcessor.appLogs.destination estiver definido como log-analytics. A chave compartilhada do espaço de trabalho de análise de log codificado em base64. Este parâmetro deve ser configurado como uma configuração protegida.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group O nome do grupo de recursos no qual o cluster do Serviço Kubernetes do Azure reside. Válido e necessário somente quando o cluster subjacente é o Serviço Kubernetes do Azure.
  3. Salve a id propriedade da extensão Container Apps 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 totalmente instalada antes de continuar. Você pode fazer com que a sessão do terminal aguarde até que ela seja concluída executando o seguinte comando:

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

Você pode usar kubectl para ver os pods que foram criados em seu cluster Kubernetes:

kubectl get pods -n $NAMESPACE

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

Criar um local personalizado

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

  1. Defina as seguintes variáveis de ambiente para o nome desejado do local personalizado e para a ID do cluster conectado ao 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 o local personalizado:

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

    Nota

    Se você tiver problemas ao criar um local personalizado no cluster, talvez seja necessário habilitar o recurso de local personalizado no cluster. Isso é necessário se estiver conectado à CLI usando uma entidade de serviço ou se você estiver conectado com um usuário do Microsoft Entra com permissões restritas no recurso de cluster.

  3. Valide se o local personalizado foi criado com êxito com o comando a seguir. A saída deve mostrar a provisioningState propriedade 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 local 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 de Aplicativos de Contêiner do Azure.

  1. Crie o ambiente conectado de 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 de Aplicativos de Contêiner foi criado com êxito com o comando a seguir. A saída deve mostrar a provisioningState propriedade como Succeeded. Caso contrário, execute-o novamente após um minuto.

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

Próximos passos