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
- Uma conta do Azure com uma assinatura ativa.
- Se não tiver uma, poderá criar uma gratuitamente.
- Instale a CLI do Azure.
- Acesso a um registro de contêiner público ou privado, como o Registro de Contêiner do Azure.
- Revise os requisitos e limitações da visualização pública. De particular importância são os requisitos de cluster.
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.
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
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
Crie um grupo de recursos para conter os recursos do Azure Arc.
az group create --name $GROUP_NAME --location $LOCATION
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
Valide a conexão com o comando a seguir. Ela mostrará a propriedade
provisioningState
comoSucceeded
. 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.
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
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.
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>"
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
ounone
, escolher nenhum desabilita os logs da plataforma.logProcessor.appLogs.logAnalyticsConfig.customerId
Obrigatório somente quando logProcessor.appLogs.destination
estiver definido comolog-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 comolog-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. 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)
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.
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)
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.
Valide se a localização personalizada foi criada com êxito com o comando a seguir. A saída deverá mostrar a propriedade
provisioningState
comoSucceeded
. Caso contrário, execute novamente o comando após um minuto.az customlocation show --resource-group $GROUP_NAME --name $CUSTOM_LOCATION_NAME
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.
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
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
comoSucceeded
. Caso contrário, execute-a novamente após um minuto.az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME