Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Você pode usar os Aplicativos de Contêiner do Azure para executar microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Este artigo descreve vários recursos de aplicativos de contêiner que são úteis para soluções multilocatário. Ele também fornece recursos que podem ajudá-lo durante a fase de planejamento.
Modelos de isolamento
Ao trabalhar com um sistema multilocatário que usa Aplicativos de Contêiner, você precisa determinar o nível necessário de isolamento. O Container Apps suporta diferentes modelos de multilocação:
Você pode implementar multilocação confiável usando um ambiente compartilhado. Por exemplo, esse modelo pode ser adequado quando seus locatários são todos de dentro da sua organização.
Você pode implementar multilocação hostil ao implantar ambientes separados para cada cliente. Por exemplo, esse modelo pode ser adequado quando você não confia no código que seus locatários executam.
A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para Aplicativos de Contêiner. Os modelos são descritos mais adiante neste artigo.
| Consideração | Um ambiente para cada inquilino | Aplicativos de contêiner específicos do locatário | Aplicativos de contêiner compartilhado |
|---|---|---|---|
| Isolamento de dados | Alto | Baixo | Baixo |
| Isolamento de desempenho | Alto | Médio, sem isolamento de rede | Baixo |
| Complexidade da implantação | Médio | Baixo a médio | Baixo |
| Complexidade operacional | Médio | Baixo | Baixo |
| Custo dos recursos | Alto | Baixo | Baixo |
| Cenário de exemplo | Executa cargas de trabalho de risco elevado e multi-inquilinos em ambientes isolados para garantir segurança e conformidade. | Otimiza custos, recursos de rede e operações para aplicativos multilocatários confiáveis. | Implementa uma solução multilocatária no nível da lógica de negócios. |
Aplicativos de contêiner compartilhado
Considere implantar aplicativos de contêiner compartilhados em um único ambiente de Aplicativos de Contêiner que todos os seus locatários usam.
Essa abordagem é normalmente eficiente em termos de custos e requer a menor sobrecarga operacional porque há menos recursos para gerenciar.
No entanto, se quiser usar este modelo de isolamento, o código da aplicação deve ser compatível com multilocação. Esse modelo de isolamento não garante isolamento no nível de rede, computação, monitoramento ou dados. O código do aplicativo deve lidar com o isolamento do locatário. Esse modelo não é adequado para cargas de trabalho hostis de multilocação nas quais você não confia no código em execução.
Este modelo está potencialmente sujeito a preocupações com vizinhos barulhentos, o que significa que a carga de trabalho de um inquilino pode afetar o desempenho da carga de trabalho de outro inquilino. Caso precise fornecer largura de banda dedicada para mitigar este problema, o modelo de aplicações de contêiner partilhado pode não ser adequado.
Observação
O padrão Selos de Implantação é útil quando os locatários estão em modelos de preços diferentes. Por exemplo, os locatários podem ser atribuídos a ambientes de Aplicativos de Contêiner compartilhados ou dedicados, dependendo de sua camada de preço. Essa estratégia de implantação permite que você vá além do limite de Aplicativos de Contêiner para uma única assinatura para cada região e dimensione linearmente à medida que o número de locatários cresce.
Aplicativos de contêiner específicos do locatário
Outra abordagem que você pode considerar é isolar seus locatários implantando aplicativos de contêiner específicos do locatário em um ambiente compartilhado.
Este modelo de isolamento garante a separação lógica entre inquilinos, proporcionando várias vantagens:
Eficiência de custos: Ao compartilhar um ambiente de aplicativos de contêiner, rede virtual e outros recursos anexados, como um espaço de trabalho do Log Analytics, você geralmente pode reduzir o custo geral e a complexidade de gerenciamento para cada locatário.
Separação de upgrades e implantações: Os binários de aplicativo de cada locatário podem ser implantados e atualizados independentemente dos binários de outros aplicativos de contêiner no mesmo ambiente. Essa abordagem pode ser útil se você precisar atualizar locatários diferentes para versões específicas do seu código em momentos diferentes.
Isolamento de recursos: Cada aplicativo de contêiner em seu ambiente recebe seus próprios recursos de CPU e memória. Se um locatário específico precisar de mais recursos, você poderá alocar mais CPU e memória para o aplicativo de contêiner específico desse locatário. Lembre-se de que há limites para alocações totais de CPU e memória em aplicativos de contêiner.
No entanto, essa abordagem não fornece isolamento de hardware ou rede entre locatários. Todos os aplicativos de contêiner em um único ambiente compartilham a mesma rede virtual. Você deve ser capaz de confiar que as cargas de trabalho implantadas nos aplicativos não usam indevidamente os recursos compartilhados.
As Aplicações de Contentores têm suporte integrado para o Dapr, que utiliza um design modular para disponibilizar funcionalidades como componentes. Em Aplicativos de Contêiner, os componentes do Dapr são recursos no nível do ambiente. Ao compartilhar um único ambiente entre vários locatários, certifique-se de que os componentes do Dapr tenham o escopo adequado para o aplicativo de contêiner específico do locatário correto para garantir o isolamento e evitar o vazamento de dados.
Observação
Não use revisões para criar versões diferentes da sua aplicação para diferentes locatários. As revisões não fornecem isolamento de recursos. Eles são projetados para cenários de implantação em que várias versões de um aplicativo devem ser executadas durante uma distribuição de atualização. Essa abordagem inclui estratégias como implantações azul-verde e testes A/B.
Um ambiente para cada inquilino
Considere a implantação de um ambiente de Aplicativos de Contêiner para cada um de seus locatários. Um ambiente Container Apps é o limite de isolamento em torno de um grupo de aplicativos de contêiner. Um ambiente fornece computação e isolamento de rede no plano de dados. Cada ambiente é implantado em sua própria rede virtual. Todos os aplicativos dentro do ambiente compartilham essa rede virtual. Cada ambiente tem seu próprio Dapr e configuração de monitoramento.
Essa abordagem fornece o nível mais forte de dados e isolamento de desempenho porque os dados e o tráfego de cada locatário são isolados em um ambiente específico. Esse modelo não exige que seus aplicativos tenham reconhecimento de multilocação. Ao usar essa abordagem, você tem um controle mais granular sobre como aloca recursos para aplicativos de contêiner no ambiente. Você pode determinar alocações com base nos requisitos do seu locatário. Por exemplo, alguns locatários podem exigir mais recursos de CPU e memória do que outros. Você pode fornecer mais recursos para os aplicativos desses locatários enquanto se beneficia do isolamento que os ambientes específicos do locatário oferecem.
No entanto, há limites baixos para o número de ambientes que você pode implantar em uma assinatura para cada região. Em alguns cenários, você pode aumentar essas cotas criando um tíquete de suporte do Azure.
Certifique-se de conhecer o crescimento esperado no número de locatários antes de implementar esse modelo de isolamento. Essa abordagem geralmente incorre em um custo total de propriedade (TCO) mais alto e níveis mais altos de implantação e complexidade operacional devido aos recursos extras que você precisa implantar e gerenciar.
Recursos de aplicativos de contêiner que suportam multilocação
Os seguintes recursos do Container Apps oferecem suporte à multilocação.
Nomes de domínio personalizados
As aplicações de contêiner permitem usar DNS (Sistema de Nomes de Domínio) coringa e adicionar os seus próprios certificados TLS (Transport Layer Security) coringa. Quando tu usas subdomínios específicos do locatário, tanto o DNS wildcard como os certificados TLS permitem que expandas facilmente a tua solução para um grande número de locatários sem a necessidade de reconfigurar manualmente cada novo locatário.
Em Aplicativos de Contêiner, você gerencia certificados no nível do ambiente. Ingress também deve ser ativado para a aplicação de contentor antes que possa associar um domínio personalizado a ela.
Solicitar autenticação e autorização
Os Aplicativos de Contêiner podem validar tokens de autenticação em nome do seu aplicativo. Se uma solicitação não contiver um token, se o token não for válido ou se a solicitação não for autorizada, você poderá configurar os Aplicativos de Contêiner para bloquear a solicitação ou redirecioná-la para seu provedor de identidade para que o usuário possa entrar.
Se seus locatários usarem o Microsoft Entra ID como o provedor de identidade, você poderá configurar os Aplicativos de Contêiner para usar o /common endpoint para validar tokens de usuário. Essa abordagem garante que os tokens dos usuários sejam validados e aceitos, independentemente do locatário do Microsoft Entra do usuário.
Você também pode integrar Aplicativos de Contêiner com a ID Externa do Microsoft Entra para autenticação de usuários por meio de provedores de identidade de parceiros.
Para obter mais informações, consulte os seguintes recursos:
- Autorização de aplicativos de contêiner
- Habilitar autenticação e autorização em aplicativos de contêiner com o Microsoft Entra ID
Observação
Os recursos de autenticação e autorização em Aplicativos de Contêiner são semelhantes aos recursos do Serviço de Aplicativo do Azure. No entanto, existem algumas diferenças. Para obter mais informações, consulte Considerações sobre o uso da autenticação interna.
Identidades gerenciadas
Você pode usar identidades gerenciadas da ID do Microsoft Entra para permitir que seu aplicativo de contêiner acesse outros recursos autenticados pela ID do Microsoft Entra. Quando você usa identidades gerenciadas, seu aplicativo de contêiner não precisa gerenciar credenciais para comunicação de serviço a serviço. Você pode conceder permissões específicas à identidade da sua aplicação de contentor para o controlo de acesso baseado em funções do Azure (Azure RBAC).
Ao usar identidades gerenciadas, tenha em mente a escolha do modelo de isolamento. Por exemplo, suponha que você compartilhe seus aplicativos de contêiner entre todos os seus locatários e implante bancos de dados específicos do locatário. Você precisa garantir que o aplicativo de um locatário não possa acessar o banco de dados de um locatário diferente.
Para obter mais informações, consulte Identidades gerenciadas em aplicativos de contêiner.
Perfis de carga de trabalho em computação dedicada
O Container Apps fornece um plano dedicado que permite reservar recursos dedicados para um locatário. Esse plano é útil para limitar os recursos disponíveis para um locatário, que podem ser compartilhados entre vários aplicativos de contêiner. Ele também ajuda a atender aos requisitos específicos do locatário, como maiores taxas de memória/CPU ou disponibilidade de GPU.
Para obter mais informações, consulte Perfis de carga de trabalho em aplicativos de contêiner.
Roteamento baseado em regras
O roteamento baseado em regras permite direcionar o tráfego de entrada para aplicativos de contêiner específicos ou revisões de aplicativos de contêiner. As solicitações podem ser roteadas com base no caminho da solicitação HTTP e você pode reescrever o caminho na URL. Esse recurso é útil para sistemas multilocatários que precisam mapear solicitações para aplicativos de contêiner específicos do locatário ou revisões que usam o caminho na solicitação. Esta capacidade é geralmente usada com o modelo de isolamento de aplicativos de contêiner específicos para o cliente.
Para obter mais informações, consulte Usar roteamento baseado em regras com aplicativos de contêiner.
Contribuidores
A Microsoft mantém este artigo. Os seguintes colaboradores escreveram este artigo.
Principais autores:
- Daniel Larsen | Engenheiro de Clientes Principal, FastTrack for Azure
- Will Velida | Engenheiro de Clientes 2, FastTrack para Azure
Outros contribuidores:
- John Downs | Engenheiro de Software Principal, Azure Patterns & Practices
Chad Kittel | Engenheiro de Software Principal, Azure Patterns & Practices- Xuhong Liu | Engenheiro de Serviços Sênior, FastTrack for Azure
- Aarthi Murugan | Gerente de Programa Sênior, CS Tech Strategy App Innovation
- Kendall Roden | Gestor de Programas Sénior, Container Apps
- Paolo Salvatori | Engenheiro de Clientes Principal, FastTrack for Azure
- Daniel Scott-Raynsford | Arquiteto de Soluções de Parceiros, Dados e IA
- Arsen Vladimirskiy | Engenheiro de Clientes Principal, FastTrack for Azure
Para ver perfis não públicos do LinkedIn, faça login no LinkedIn.
Próximos passos
- Visão geral do produto Container Apps
- de documentação do
Container Apps
Recursos relacionados
- Recursos para arquitetos e desenvolvedores de soluções multilocatárias
- Arquitetar soluções multilocatárias no Azure
- Lista de verificação para arquitetar e criar soluções multilocatárias no Azure