Tutorial: Conheça os conceitos de visão geral para implantar um aplicativo Web Python nos Aplicativos de Contêiner do Azure
Esta série de tutoriais mostra como colocar em contêiner um aplicativo Web Python e implantá-lo nos Aplicativos de Contêiner do Azure. Um aplicativo Web de exemplo é conteinerizado e a imagem do Docker é armazenada em do Registro de Contêiner do Azure. Os Aplicativos de Contêiner do Azure são configurados para extrair a imagem do Docker do Registro de Contêiner e criar um contêiner. O aplicativo de exemplo se conecta ao Banco de Dados do Azure para PostgreSQL para demonstrar a comunicação entre Aplicativos de Contêiner e outros recursos do Azure.
Há várias opções para criar e implantar aplicativos Web Python nativos de nuvem e em contêineres no Azure. Esta série de tutoriais aborda os Aplicativos de Contêiner do Azure. Os Aplicativos de Contêiner são bons para executar contêineres de uso geral, especialmente para aplicativos que abrangem muitos microsserviços implantados em contêineres.
Nesta série de tutoriais, você cria um contêiner. Para implantar um aplicativo Web Python como um contêiner no Serviço de Aplicativo do Azure, consulte aplicativo Web Python em contêineres no Azure com o MongoDB.
Os procedimentos nesta série de tutoriais orientam você a concluir estas tarefas:
- Crie uma imagem do Docker de um aplicativo Web Python e armazene a imagem no Registro de Contêineres do Azure.
- Configure os Aplicativos de Contêiner do Azure para hospedar a imagem do Docker.
- Configure o GitHub Actions para atualizar o contêiner com uma nova imagem do Docker ativada por mudanças no repositório GitHub. Esta etapa é opcional.
- Configure a CI/CD (integração contínua e entrega contínua) de um aplicativo Web Python para o Azure.
Nesta primeira parte da série, você aprenderá os conceitos fundamentais para implantar um aplicativo Web Python nos Aplicativos de Contêiner do Azure.
Visão geral do serviço
O diagrama a seguir mostra como você usará seu ambiente local, repositórios do GitHub e serviços do Azure nesta série de tutoriais.
O diagrama inclui estes componentes:
Aplicativos de Contêiner do Azure:
Os Aplicativos de Contêiner do Azure permitem executar microsserviços e aplicativos em contêineres em uma plataforma sem servidor. Uma plataforma sem servidor significa que você desfruta dos benefícios de executar contêineres com configuração mínima. Com os Aplicativos de Contêiner do Azure, seus aplicativos podem ser dimensionados dinamicamente com base em características como tráfego HTTP, processamento controlado por eventos ou carga de CPU ou memória.
Os Aplicativos de Contêiner extraem imagens do Docker do Registro de Contêiner do Azure. As alterações nas imagens de contêiner disparam uma atualização para o contêiner implantado. Você também pode configurar o GitHub Actions para disparar atualizações.
Registro de Contêiner do Azure:
O Registro de Contêiner do Azure permite que você trabalhe com imagens do Docker no Azure. Como o Registro de Contêiner está perto de suas implantações no Azure, você tem controle sobre o acesso. Você pode usar seus grupos e permissões do Microsoft Entra para controlar o acesso a imagens do Docker.
Nesta série de tutoriais, a origem do Registro é o Registro de Contêiner do Azure. Mas você também pode usar o Hub do Docker ou um registro privado com pequenas modificações.
banco de dados do Azure para PostgreSQL:
O código de exemplo armazena dados do aplicativo em um banco de dados PostgreSQL. O aplicativo de contêiner se conecta ao PostgreSQL usando uma identidade gerenciada atribuída ao usuário . As informações de conexão são armazenadas em variáveis de ambiente configuradas explicitamente ou por meio de um Conector de serviço do Azure.
-
O código de exemplo desta série de tutoriais está em um repositório github que você bifurca e clona localmente. Para configurar um fluxo de trabalho de CI/CD com do GitHub Actions, você precisa de uma conta do GitHub.
Você ainda pode acompanhar esta série de tutoriais sem uma conta do GitHub, se você trabalhar localmente ou em do Azure Cloud Shell para criar a imagem de contêiner a partir do repositório de código de exemplo.
Revisões e CI/CD
Para fazer alterações de código e efetuá-las por push em um contêiner, crie uma nova imagem do Docker com suas alterações. Em seguida, você faz o push da imagem para o Registro de Contêiner e cria uma nova revisão do aplicativo de contêiner.
Para automatizar esse processo, uma etapa opcional na série de tutoriais mostra como criar um pipeline de CI/CD usando o GitHub Actions. O pipeline cria e implanta automaticamente seu código nos Aplicativos de Contêiner sempre que um novo commit é enviado por push para o repositório GitHub.
Autenticação e segurança
Nesta série de tutoriais, você cria uma imagem de contêiner do Docker diretamente no Azure e a implanta nos Aplicativos de Contêiner do Azure. Container Apps são executados no contexto de um ambiente , que é suportado por uma rede virtual do Azure . As redes virtuais são um bloco de construção fundamental para sua rede privada no Azure. Os Aplicativos de Contêiner permitem que você exponha seu aplicativo de contêiner à Web pública habilitando a entrada.
Para configurar CI/CD, você autoriza o Azure Container Apps como um app OAuth para sua conta do GitHub. Como um aplicativo OAuth, os Aplicativos de Contêiner gravam um arquivo de fluxo de trabalho do GitHub Actions em seu repositório com informações sobre recursos e trabalhos do Azure para atualizá-los. O fluxo de trabalho atualiza os recursos do Azure usando as credenciais de um principal de serviço do Microsoft Entra (ou de um existente) com acesso baseado em função para Container Apps e um nome de usuário e senha para o Azure Container Registry. As credenciais são armazenadas com segurança no repositório GitHub.
Por fim, o aplicativo Web de exemplo nesta série de tutoriais armazena dados em um banco de dados PostgreSQL. O código de exemplo se conecta ao PostgreSQL por meio de uma cadeia de conexão. Quando o aplicativo está em execução no Azure, ele se conecta ao banco de dados PostgreSQL usando uma identidade gerenciada atribuída pelo usuário. O código usa DefaultAzureCredential
para atualizar dinamicamente a senha na cadeia de conexão com um token de acesso do Microsoft Entra durante o runtime. Esse mecanismo impede a necessidade de codificar a senha na cadeia de conexão ou em uma variável de ambiente e fornece uma camada extra de segurança.
A série de tutoriais explica como criar a identidade gerenciada e conceder a ela uma função e permissões apropriadas do PostgreSQL para que ele possa acessar e atualizar o banco de dados. Durante a configuração dos Aplicativos de Contêiner, a série de tutoriais orienta você pela configuração da identidade gerenciada no aplicativo e pela configuração de variáveis de ambiente que contêm informações de conexão para o banco de dados. Você também pode usar um conector de serviço do Azure para realizar a mesma coisa.
Pré-requisitos
Para concluir esta série de tutoriais, você precisa:
Uma conta do Azure em que você pode criar:
- Uma instância do Registro de Contêiner do Azure.
- Um ambiente de Aplicativos de Contêiner do Azure.
- Uma instância de Banco de Dados do Azure para PostgreSQL.
Visual Studio Code ou a CLI do Azure, dependendo da ferramenta que você usa:
- Para o Visual Studio Code, você precisa da extensão Aplicativos de Contêiner.
- Você pode usar a CLI do Azure através do Azure Cloud Shell.
Pacotes do Python:
- pyscopg2-binary para se conectar ao PostgreSQL.
- Flask ou Django como uma estrutura web.
Aplicativo de exemplo
O aplicativo de exemplo Python é um aplicativo de avaliação de restaurantes que salva dados de restaurantes e avaliações no PostgreSQL. No final da série de tutoriais, você terá um aplicativo de revisão de restaurante implantado e em execução nos Aplicativos de Contêiner do Azure que se parece com a captura de tela a seguir.