Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Se você tiver um cluster Kubernetes habilitado para Azure Arc, poderá usá-lo para criar um local personalizado habilitado para o Serviço de Aplicativo e implantar aplicativos Web, aplicativos de função e aplicativos lógicos nele.
O Kubernetes habilitado para Azure Arc permite que você torne seu cluster Kubernetes local ou na nuvem visível para o Serviço de Aplicativo, Funções e Aplicativos Lógicos no Azure. Você pode criar um aplicativo e implantá-lo como outra região do Azure.
Prerequisites
- Se você não tiver uma conta do Azure, inscreva-se hoje mesmo para obter uma conta gratuita.
- Analise os requisitos e limitações da visualização pública. De particular importância são os requisitos do cluster.
Adicionar extensões da CLI do Azure
Inicie o ambiente Bash no Azure Cloud Shell.
Como esses comandos da CLI ainda não fazem parte do conjunto principal da CLI, adicione-os com os seguintes comandos.
az extension add --upgrade --yes --name connectedk8s
az extension add --upgrade --yes --name k8s-extension
az extension add --upgrade --yes --name customlocation
az provider register --namespace Microsoft.ExtendedLocation --wait
az provider register --namespace Microsoft.Web --wait
az provider register --namespace Microsoft.KubernetesConfiguration --wait
az extension remove --name appservice-kube
az extension add --upgrade --yes --name appservice-kube
Criar um cluster conectado
Note
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, você provavelmente não desejará habilitar o Azure Arc em um cluster AKS, pois ele já é gerenciado no Azure. As etapas ajudarão 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.
Para criar um cluster conectado:
Crie um cluster no Serviço Kubernetes do Azure com um endereço IP público. Substitua
<group-name>
pelo nome do grupo de recursos desejado.AKS_CLUSTER_GROUP_NAME="<group-name>" # Name of resource group for the AKS cluster AKS_NAME="${aksClusterGroupName}-aks" # Name of the AKS cluster RESOURCE_LOCATION="eastus" # "eastus" or "westeurope" az group create -g $AKS_CLUSTER_GROUP_NAME -l $RESOURCE_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. Substitua
<group-name>
pelo nome do grupo de recursos desejado.GROUP_NAME="<group-name>" # Name of resource group for the connected cluster az group create -g $GROUP_NAME -l $RESOURCE_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 um espaço de trabalho do Log Analytics
Embora um espaço de trabalho do Log Analytic não seja necessário para executar o Serviço de Aplicativo no Azure Arc, é como os desenvolvedores podem obter logs de aplicativos para seus aplicativos que estão sendo executados no cluster Kubernetes habilitado para Azure Arc.
Para simplificar, crie o espaço de trabalho agora.
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 do Serviço de Aplicativo
Para instalar a extensão do Serviço de Aplicativo:
Defina as seguintes variáveis de ambiente para o nome desejado da extensão do Serviço de Aplicativo, o namespace do cluster no qual os recursos devem ser provisionados e o nome do ambiente Kubernetes do Serviço de Aplicativo. Escolha um nome exclusivo para
<kube-environment-name>
, porque ele faz parte do nome de domínio do aplicativo criado no ambiente Kubernetes do Serviço de Aplicativo.EXTENSION_NAME="appservice-ext" # Name of the App Service extension NAMESPACE="appservice-ns" # Namespace in your cluster to install the extension and provision resources KUBE_ENVIRONMENT_NAME="<kube-environment-name>" # Name of the App Service Kubernetes environment resource
Instale a extensão do Serviço de Aplicativo em seu cluster conectado ao Azure Arc, com o Log Analytics habilitado. Novamente, embora o Log Analytics não seja necessário, você não pode adicioná-lo à extensão mais tarde, portanto, é mais fácil fazê-lo agora.
az k8s-extension create \ --resource-group $GROUP_NAME \ --name $EXTENSION_NAME \ --cluster-type connectedClusters \ --cluster-name $CLUSTER_NAME \ --extension-type 'Microsoft.Web.Appservice' \ --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=${KUBE_ENVIRONMENT_NAME}" \ --configuration-settings "keda.enabled=true" \ --configuration-settings "buildService.storageClassName=default" \ --configuration-settings "buildService.storageAccessMode=ReadWriteOnce" \ --configuration-settings "customConfigMap=${NAMESPACE}/kube-environment-config" \ --configuration-settings "envoy.annotations.service.beta.kubernetes.io/azure-load-balancer-resource-group=${aksClusterGroupName}" \ --configuration-settings "logProcessor.appLogs.destination=log-analytics" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.customerId=${LOG_ANALYTICS_WORKSPACE_ID_ENC}" \ --config-protected-settings "logProcessor.appLogs.logAnalyticsConfig.sharedKey=${LOG_ANALYTICS_KEY_ENC}"
Note
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:Parameter Description Microsoft.CustomLocation.ServiceAccount
A conta de serviço que deve ser criada para o local personalizado que é criado. Recomenda-se que isso seja definido como o valor default
.appsNamespace
O namespace para provisionar as definições e pods do aplicativo. Deve corresponder ao namespace da versão de extensão. clusterName
O nome do ambiente Kubernetes do Serviço de Aplicativo criado nessa extensão. keda.enabled
Se o KEDA deve ser instalado no cluster do Kubernetes. Aceita true
oufalse
.buildService.storageClassName
O nome da classe de armazenamento para o serviço de compilação para armazenar artefatos de compilação. Um valor como default
especifica uma classe chamadadefault
, e não qualquer classe marcada como padrão. O padrão é uma classe de armazenamento válida para AKS e AKS no Azure Local, mas pode não ser para outras distribuições/plataformas.buildService.storageAccessMode
O modo de acesso a ser usado com a classe de armazenamento nomeada. Aceita ReadWriteOnce
ouReadWriteMany
.customConfigMap
O nome do mapa de configuração que será definido pelo ambiente Kubernetes do Serviço de Aplicativo. Atualmente, deve ser <namespace>/kube-environment-config
, substituindo<namespace>
pelo valor deappsNamespace
.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. logProcessor.appLogs.destination
Optional. 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.Salve a
id
propriedade da extensão do Serviço de Aplicativo 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 sua sessão de terminal aguarde até que isso seja concluído executando o seguinte comando:
az resource wait --ids $EXTENSION_ID --custom "properties.installState!='Pending'" --api-version "2020-07-01-preview"
Você pode usar kubectl
para ver os pods criados em seu cluster Kubernetes:
kubectl get pods -n $NAMESPACE
Você pode saber mais sobre esses pods e sua função no sistema em Pods criados pela extensão do Serviço de Aplicativo.
Criar um local personalizado
O local personalizado no Azure é usado para atribuir o ambiente Kubernetes do Serviço de Aplicativo.
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
Note
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-o novamente 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 Kubernetes do Serviço de Aplicativo
Antes de começar a criar aplicativos no local personalizado, você precisa de um ambiente Kubernetes do Serviço de Aplicativo.
Crie o ambiente Kubernetes do Serviço de Aplicativo:
az appservice kube create \ --resource-group $GROUP_NAME \ --name $KUBE_ENVIRONMENT_NAME \ --custom-___location $CUSTOM_LOCATION_ID
Valide se o ambiente Kubernetes do Serviço de Aplicativo 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 appservice kube show --resource-group $GROUP_NAME --name $KUBE_ENVIRONMENT_NAME