Serviço de Aplicativo, Functions e Aplicativos Lógicos no Azure Arc (versão prévia)

Você pode executar o Serviço de Aplicativo, o Functions e os Aplicativos Lógicos em um cluster do Kubernetes habilitado para Azure Arc. O cluster Kubernetes pode ser local ou hospedado em uma nuvem de terceiros. Essa abordagem permite que os desenvolvedores de aplicativos aproveitem os recursos do Serviço de Aplicativo. Ao mesmo tempo, ele permite que os administradores de TI mantenham a conformidade corporativa hospedando os aplicativos do Serviço de Aplicativo na infraestrutura interna. Ele também permite que outros operadores de TI protejam os investimentos anteriores em outros provedores de nuvem, por meio da execução do Serviço de Aplicativo nos clusters Kubernetes existentes.

Observação

Para saber como configurar o cluster Kubernetes para o Serviço de Aplicativo, o Functions e os Aplicativos Lógicos, consulte Criar um ambiente Kubernetes do Serviço de Aplicativo (versão prévia).

Na maioria dos casos, os desenvolvedores de aplicativos não precisam saber nada além de como implantar na região correta do Azure que representa o ambiente do Kubernetes implantado. Para os operadores que fornecem o ambiente e mantêm a infraestrutura subjacente do Kubernetes, você precisa conhecer os seguintes recursos do Azure:

Limitações da visualização pública

As limitações da versão prévia pública a seguir se aplicam aos ambientes Kubernetes do Serviço de Aplicativo. Essa lista de limitações é atualizada conforme as alterações e os recursos são disponibilizados.

Limitação Detalhes
Regiões do Azure com suporte Leste dos EUA, Oeste da Europa
Requisito de rede de cluster Precisa dar suporte ao tipo de serviço LoadBalancer
Requisito de armazenamento de cluster Deve ter a classe de armazenamento anexada ao cluster disponível para uso pela extensão para dar suporte à implantação e compilação de aplicativos baseados em código, quando aplicável
Recurso: rede Não disponível (depende da rede do cluster)
Recurso: identidades gerenciadas Não disponível
Recurso: referências de cofre de chaves Não disponível (depende das identidades gerenciadas)
Recurso: extrair imagens do ACR com identidade gerenciada Não disponível (depende das identidades gerenciadas)
Recurso: edição no portal para o Functions e os Aplicativos Lógicos Não disponível
Recurso: lista de funções ou chaves do portal Não disponível se o cluster não estiver acessível publicamente
Recurso: publicação de FTP Não disponível
Logs O Log Analytics deve ser configurado com a extensão do cluster, não por site

Pods criado pela extensão do Serviço de Aplicativo

Quando a extensão do Serviço de Aplicativo estiver instalada no cluster do Kubernetes habilitado para Azure Arc, vários pods serão criados no namespace de versão que tiver sido especificado. Esses pods permitem que o cluster Kubernetes seja uma extensão do provedor de recursos Microsoft.Web no Azure, e ofereça suporte ao gerenciamento e à operação dos aplicativos. Como opção, você pode fazer com que a extensão instale o KEDA para o dimensionamento controlado por eventos.

A tabela a seguir descreve a função de cada pod que é criado por padrão:

Pod Descrição
<extensionName>-k8se-app-controller Pod principal do operador que cria os recursos no cluster e mantém o estado dos componentes.
<extensionName>-k8se-envoy Camada de proxy de front-end para todas as solicitações de plano de dados. Ele roteia o tráfego de entrada para os aplicativos corretos.
<extensionName>-k8se-activator Um destino de roteamento alternativo para ajudar com aplicativos que foram dimensionados para zero enquanto o sistema obtém a primeira instância disponível.
<extensionName>-k8se-build-service Suporta as operações de implantação e atende ao recurso Ferramentas avançadas.
<extensionName>-k8se-http-scaler Monitora o volume de solicitação de entrada para fornecer informações de dimensionamento para o KEDA.
<extensionName>-k8se-img-cacher Coloca o espaço reservado e as imagens do aplicativo em um cache local no nó.
<extensionName>-k8se-log-processor Coleta logs de aplicativos e outros componentes e os envia para o Log Analytics.
placeholder-azure-functions-* Usado para acelerar os inícios frios para o Azure Functions.

Ambiente Kubernetes do Serviço de Aplicativo

O recurso do ambiente Kubernetes do Serviço de Aplicativo é necessário antes que os aplicativos possam ser criados. Ele permite a configuração comum a aplicativos no local personalizado, como o sufixo DNS padrão.

Somente um recurso de ambiente do Kubernetes pode ser criado em um local personalizado. Na maioria dos casos, um desenvolvedor que cria e implanta aplicativos não precisa estar conhecer diretamente o recurso. Ele pode ser inferido diretamente da ID de local personalizada que foi fornecida. No entanto, ao definir os modelos do Azure Resource Manager, qualquer recurso de plano precisa referenciar diretamente a ID de recurso do ambiente. Os valores de local personalizados do plano e do ambiente especificado devem corresponder.

Perguntas frequentes sobre o Serviço de Aplicativo, Functions e Aplicativos Lógicos no Azure Arc (versão prévia)

Quanto custa?

O Serviço de Aplicativo no Azure Arc é gratuito durante a versão prévia pública.

Há suporte para os aplicativos Windows e Linux?

Somente os aplicativos baseados em Linux têm suporte, tanto para o código quanto para os contêineres personalizados. Não há suporte para os aplicativos Windows.

Quais pilhas de aplicativos integrados têm suporte?

Todas as pilhas internas do Linux têm suporte.

Há suporte para todos os tipos de implantação de aplicativo?

Não há suporte para a implantação de FTP. Atualmente, também não há suporte para az webapp up. Há suporte para outros métodos de implantação, incluindo Git, ZIP, CI/CD, Visual Studio e Visual Studio Code.

Quais recursos do Serviço de Aplicativo têm suporte?

Durante o período de visualização, determinados recursos do Serviço de Aplicativo estão sendo validados. Quando houver suporte, as opções de navegação à esquerda no portal do Azure estarão ativadas. Os recursos que ainda não têm suporte permanecem esmaecidos.

Há suporte para todos os recursos de rede?

Não. Não há suporte para recursos de rede como conexões híbridas e integrações de Rede Virtual. O suporte à restrição de acesso foi adicionado em abril de 2022. A rede deve ser tratada diretamente nas regras de rede no próprio cluster Kubernetes.

Há suporte para identidades gerenciadas?

Não. Não é possível atribuir identidades gerenciadas a aplicativos durante a execução no Azure Arc. Se seu aplicativo precisar de uma identidade para trabalhar com outro recurso do Azure, considere usar uma entidade de serviço de aplicativo.

Há limites de colocação em escala?

Todos os aplicativos implantados com o Serviço de Aplicativo do Azure no Kubernetes com Azure Arc podem ser colocados em escala dentro dos limites do cluster Kubernetes subjacente. Se o Cluster Kubernetes subjacente ficar sem recursos de computação disponíveis (CPU e memória principalmente), os aplicativos só poderão ser colocados em escala para o número de instâncias do aplicativo que o Kubernetes pode agendar com o recurso disponível.

Quais logs são coletados?

Os logs para os componentes do sistema e os aplicativos são gravados na saída padrão. Ambos os tipos de log podem ser coletados para análise usando ferramentas padrão do Kubernetes. Você também poderá configurar a extensão de cluster do Serviço de Aplicativo com um workspace do Log Analytics, o que fará com que ela envie todos os logs para esse workspace.

Por padrão, os logs dos componentes do sistema são enviados para a equipe do Azure. Os logs de aplicativo não são enviados. Você pode impedir que esses logs são transferidos definindo logProcessor.enabled=false como uma definição de configuração de extensão. Essa configuração também desabilitará o encaminhamento do aplicativo para o workspace do Log Analytics. Desabilitar o processador de log pode afetar o tempo necessário para os casos de suporte, e você será solicitado a coletar logs da saída padrão por alguns outros meios.

O que devo fazer se houver um erro de registro do provedor?

Ao criar um recurso de ambiente do Kubernetes, algumas assinaturas podem exibir o erro "Não foi encontrado nenhum provedor de recursos registrado". Os detalhes do erro podem incluir um conjunto de locais e versões da API que são considerados válidos. Se essa mensagem de erro for retornada, a assinatura precisará ser registrada novamente com o provedor Microsoft.Web, uma operação que não tem impacto nos aplicativos ou nas APIs existentes. Para registrar novamente, use a CLI do Azure para executar az provider register --namespace Microsoft.Web --wait. Em seguida, tente novamente executar o comando de ambiente do Kubernetes.

Posso implantar a extensão serviços de aplicativos em um cluster baseado em ARM64?

No momento, não há suporte para clusters baseados em ARM64.

Notas sobre a versão da extensão

Extensão de serviços de aplicativo v 0.9.0 (maio de 2021)

  • Versão prévia pública inicial da extensão de serviços de Aplicativos.
  • Suporte para implantações baseadas em código e em contêiner de Aplicativos Web, Aplicativos de Função e Aplicativos Lógicos.
  • Suporte ao runtime de aplicativos Web – .NET 3.1 e 5.0; Node JS 12 e 14; Python 3.6, 3.7 e 3.8; PHP 7.3 e 7.4; Ruby 2.5, 2.5.5, 2.6 e 2.6.2; Java SE 8u232, 8u242, 8u252, 11.05, 11.06 e 11.07; Tomcat 8.5, 8.5.41, 8.5.53, 8.5.57, 9.0, 9.0.20, 9.0.33 e 9.0.37.

Extensão de serviços de aplicativo v 0.10.0 (novembro de 2021)

  • Remoção do requisito para endereço IP estático previamente atribuído necessário para atribuição ao ponto de extremidade Envoy
  • Atualizar Keda para v2.4.0
  • Atualizar Envoy para v1.19.0
  • Atualizar o runtime do Azure Functions para v3.3.1
  • Definir a contagem de réplicas padrão do Controlador de Aplicativos e do Controlador Envoy como 2 para adicionar estabilidade

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.10.0

Extensão dos serviços de aplicativo v 0.11.0 (dezembro de 2021)

  • Adicionado suporte do Application Insights para aplicativos Web Java e .NET
  • Adicionado suporte para aplicativos Web .NET 6.0
  • Removido o .NET Core 2.0
  • Problemas resolvidos que causavam falha das operações de permuta de slot
  • Problemas resolvidos encontrados pelos clientes durante a criação de aplicativos Web do Ruby

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.0

Extensão dos serviços de aplicativo v 0.11.1 (dezembro de 2021)

  • Versão secundária para resolver o problema com a atualização do CRD

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.11.1

Extensão de serviços de aplicativo v 0.12.0 (janeiro de 2022)

  • Suporte para proxy de saída
  • Suporte para builds paralelos no serviço de build
  • Atualizar o Envoy para 1.20.1
  • Problema resolvido com suporte do Application Insights para aplicativos .NET

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.0

Extensão de serviços de aplicativo v 0.12.1 (março de 2022)

  • Problema resolvido com o suporte a proxy de saída para habilitar o registro em log no workspace da Análise de logs

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.1

Extensão de serviços de aplicativo v 0.12.2 (março de 2022)

  • Atualizar para resolver falhas de atualização ao atualizar da v 0.12.0 quando o comprimento do nome da extensão tiver mais de 35 caracteres

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.12.2

Extensão de serviços de aplicativo v 0.13.0 (abril de 2022)

  • Foi adicionado o suporte à integração sem código do Application Insights para aplicativos Node.js
  • Foi adicionado o suporte a restrições de acesso por meio da CLI
  • Mais detalhes são fornecidos quando ocorre uma falha na instalação da extensão para ajudar na solução de problemas

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.0

Extensão de serviços de aplicativo v 0.13.1 (abril de 2022)

  • Atualização para resolver falhas de atualização durante a atualização automática de clusters para a v 0.13.0

Se a extensão estava na versão estável e auto-upgrade-minor-version foi definido como true, a extensão será atualizada automaticamente. Para atualizar a extensão manualmente para a versão mais recente, você pode executar o seguinte comando:

    az k8s-extension update --cluster-type connectedClusters -c <clustername> -g <resource group> -n <extension name> --release-train stable --version 0.13.1

Próximas etapas

Criar o ambiente Kubernetes do Serviço de Aplicativo (versão prévia)