Compartilhar via


Tutorial: Habilitar Aplicativos de Contêiner do Azure no Kubernetes habilitado para Azure Arc (versão prévia)


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 mostrará como habilitar os Aplicativos de Contêiner do Azure no cluster do Kubernetes habilitado para Arc. Neste tutorial, você irá:

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

Observação

Durante a versão prévia, os Aplicativos de Contêiner do Azure no Arc não têm suporte nas configurações de produção. Este artigo fornece um exemplo de configuração somente para fins de avaliação.

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

Pré-requisitos

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

As etapas a seguir ajudarão você a começar a entender o serviço, mas para implantações de produção, elas devem ser interpretadas como ilustrativas, não prescritivas. Confira Guia de Início Rápido: Conectar um cluster existente do Kubernetes ao Azure Arc para obter instruções gerais sobre como criar um cluster do Kubernetes habilitado para 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 workspace 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-HCI, certifique-se de configurar o HAProxy ou um balanceador de carga personalizado antes de tentar instalar a extensão.

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

    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.

    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. É recomendável que ele seja definido como o valor 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 de Kubernetes da extensão dos Aplicativos de Contêiner que será criado nessa 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.
    envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group O nome do grupo de recursos no qual o cluster do Serviço de Kubernetes do Azure reside. Válido e obrigatório somente quando o cluster subjacente for o Serviço de Kubernetes do Azure.
  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 ver os pods que foram criados 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 em seu cluster, talvez seja necessário habilitar o recurso de localização personalizada em seu cluster. Isso será necessário se você fizer logon na 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 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