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
- Uma conta do Azure com uma subscrição ativa.
- Se não tiver uma, pode 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.
- Analise os requisitos e limitações da visualização pública. De particular importância são os requisitos do cluster.
Configurar
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 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.
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
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
Crie um grupo de recursos para conter seus recursos do Azure Arc.
az group create --name $GROUP_NAME --location $LOCATION
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
Valide a conexão com o comando a seguir. Ele deve mostrar a
provisioningState
propriedade comoSucceeded
. 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.
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
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
Importante
Se estiver implantando no AKS-HCI , certifique-se de ter configurado o HAProxy ou um balanceador de carga personalizado antes de tentar instalar a extensão.
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>"
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 Description 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
ounone
, escolher nenhum desativa os logs da plataforma.logProcessor.appLogs.logAnalyticsConfig.customerId
Necessário somente quando logProcessor.appLogs.destination
estiver definido comolog-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 comolog-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. 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)
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.
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)
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.
Valide se o local personalizado foi criado com êxito com o comando a seguir. A saída deve mostrar a
provisioningState
propriedade 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 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.
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
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 comoSucceeded
. Caso contrário, execute-o novamente após um minuto.az containerapp connected-env show --resource-group $GROUP_NAME --name $CONNECTED_ENVIRONMENT_NAME