Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Neste tutorial, você implanta um aplicativo Web do Quarkus controlado por dados para o Serviço de Aplicativo do Azure com o serviço de banco de dados relacional do Banco de Dados do Azure para PostgreSQL. O Serviço de Aplicativo do Azure dá suporte a Java Edição Standard (Java SE) em um ambiente de servidor Windows ou Linux.
Neste tutorial, você aprenderá como:
- Crie uma arquitetura segura por padrão para o Serviço de Aplicativo do Azure e o servidor flexível do Banco de Dados do Azure para PostgreSQL.
- Proteja os segredos de conexão usando uma identidade gerenciada e referências do Key Vault.
- Implante um aplicativo Quarkus de exemplo no Serviço de Aplicativo de um repositório do GitHub.
- Acesse as configurações do App Service no código do aplicativo.
- Faça atualizações e reimplante o código do aplicativo.
- Gere o esquema de banco de dados executando migrações de banco de dados.
- Transmitir logs de diagnóstico do Azure.
- Gerencie o aplicativo no portal do Azure.
- Provisione a mesma arquitetura e implante usando o Azure Developer CLI.
- Otimize seu fluxo de trabalho de desenvolvimento com o GitHub Codespaces e o GitHub Copilot.
Pré-requisitos
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Uma conta do GitHub. você também pode obter um gratuitamente.
- Conhecimento de Java com o desenvolvimento de Quarkus.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma avaliação gratuita de 30 dias.
- Uma conta do Azure com uma assinatura ativa. Se você ainda não tem uma conta do Azure, crie-a gratuitamente.
- Uma conta do GitHub. você também pode obter um gratuitamente.
- Azure Developer CLI instalada localmente. Você pode seguir as etapas com o Azure Cloud Shell porque ele já tem a Azure Developer CLI instalada.
- Conhecimento de Java com o desenvolvimento de Quarkus.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma avaliação gratuita de 30 dias.
Ir para o final
Se você quiser ver apenas o aplicativo de exemplo neste tutorial em execução no Azure, basta executar os seguintes comandos no Azure Cloud Shell e seguir a solicitação:
mkdir msdocs-quarkus-postgresql-sample-app
cd msdocs-quarkus-postgresql-sample-app
azd init --template msdocs-quarkus-postgresql-sample-app
azd up
1. Execute o exemplo
Primeiro, você configura um aplicativo de exemplo baseado em dados como um ponto de partida. Para sua conveniência, o repositório de exemplo, ORM hibernado com Panache e RESTEasy, inclui uma configuração de contêiner de desenvolvimento. O contêiner de desenvolvimento tem tudo o que você precisa para desenvolver um aplicativo, incluindo o banco de dados, o cache e todas as variáveis de ambiente necessárias para o aplicativo de exemplo. O contêiner de desenvolvimento pode ser executado em um codespace do GitHub, o que significa que você pode executar o exemplo em qualquer computador com um navegador da Web.
Etapa 1: em uma nova janela do navegador:
- Entre em sua conta do GitHub.
- Navegue até https://github.com/Azure-Samples/msdocs-quarkus-postgresql-sample-app/fork.
- Desmarque Copiar somente a ramificação principal. Você quer todas as ramificações.
- Selecione Criar fork.
Etapa 2: na bifurcação do GitHub:
- Selecione principal> starter-no-infra para a ramificação inicial. Essa ramificação contém apenas o projeto de amostra e nenhuma configuração ou arquivos relacionados ao Azure.
- Selecione Código>Criar um codespace no starter-no-infra. O codespace leva alguns minutos para ser configurado.
Etapa 3: No terminal do codespace:
- Execute
mvn quarkus:dev. - Ignorar a notificação
Your application running on port 5005 is available. - Quando vir a notificação
Your application running on port 8080 is available., selecione Abrir no Navegador. Você deve ver o aplicativo de exemplo em uma nova guia do navegador. Para parar o servidor de desenvolvimento do Quarkus, digiteCtrl+C.
Para obter mais informações sobre como o aplicativo de exemplo do Quarkus é criado, consulte a documentação do Quarkus Simplificada Hibernar ORM com Panache e Configurar fontes de dados no Quarkus.
Dica
Você pode perguntar ao GitHub Copilot sobre esse repositório. Por exemplo:
- @workspace O que esse projeto faz?
- @workspace O que a pasta .devcontainer faz?
Está com problemas? Confira a seção de Solução de problemas.
2. Criar o Serviço de Aplicativo e PostgreSQL
Nesta etapa, você criará os recursos do Azure. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL. Para o processo de criação, você especificará:
- O Nome do aplicativo Web. É usado como parte do nome DNS para o seu aplicativo na forma de
https://<app-name>-<hash>.<region>.azurewebsites.net. - A Região que executará o aplicativo fisicamente no mundo. Também é usado como parte do nome DNS para o seu aplicativo.
- A Pilha de runtime para o aplicativo. É aqui que você seleciona a versão do Java a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. É o tipo de preço que inclui o conjunto de recursos e a capacidade de colocação em escala do seu aplicativo.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos necessários do Azure para o aplicativo.
Entre no portal do Azure e siga estas etapas para criar seus recursos do Serviço de Aplicativo do Azure.
Etapa 1: No portal do Azure:
- Na barra de pesquisa superior, digite serviço de aplicativo.
- Selecione o item rotulado Serviço de Aplicativo sob o título Serviços.
- Selecione Criar>Aplicativo Web. Você também pode navegar diretamente para o assistente de criação.
Etapa 2: Configurar o novo aplicativo Preencha o formulário da seguinte maneira.
- Nome: msdocs-quarkus-postgres. Um grupo de recursos chamado msdocs-quarkus-postgres_group é gerado para você.
- Pilha de runtime: Java 21.
- Pilha do servidor Web Java: Java SE (Servidor Web Inserido).
- Sistema operacional: Linux.
- Região: qualquer região do Azure próxima a você.
- Plano do Linux: Crie um novo e use o nome msdocs-quarkus-postgres.
- Plano de preços: Básico B1. Quando estiver pronto, você poderá aumentar para uma faixa de preço diferente.
Etapa 3: Adicionar banco de dados
- Selecione a guia Banco de Dados .
- Selecione Criar um Banco de Dados.
- Em Mecanismo, selecione PostgreSQL – Servidor Flexível. O nome do servidor e o nome do banco de dados também são definidos por padrão como valores apropriados.
Etapa 4: configurar a implantação do GitHub
- Selecione a guia Implantação.
- Selecione Implantação contínua.
- Se esta for a primeira vez que você configura a implantação do GitHub no Serviço de Aplicativo, selecione Autorizar e autentique-se com sua conta do GitHub.
- Na Organização, selecione o alias do GitHub.
- Em Repositório, selecione msdocs-quarkus-postgresql-sample-app.
- Em Branch, selecione starter-no-infra.
- Selecione Examinar + criar.
- Depois de concluir a validação, selecione Criar. Por padrão, o assistente de criação cria uma identidade atribuída pelo usuário para que o fluxo de trabalho se autentique usando o Microsoft Entra (autenticação OIDC). Para obter opções alternativas de autenticação, consulte Implantar no Serviço de Aplicativo usando o GitHub Actions.
Etapa 3: A implantação leva alguns minutos para ser concluída. Depois que a implantação for concluída, selecione o botão Ir para o recurso. Você é levado diretamente para o aplicativo do Serviço de Aplicativo, mas os seguintes recursos são criados:
- Grupo de recursos: o contêiner para todos os recursos criados.
- Plano do Serviço de Aplicativo: define os recursos de computação para o Serviço de Aplicativo. É criado um plano do Linux na camada Básico.
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual: integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
- Servidor Flexível do Banco de Dados do Azure para PostgreSQL: Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
- Zonas DNS privadas: habilita a resolução DNS do cofre de chaves e do servidor de banco de dados na rede virtual.
3. Proteger segredos de conexão
O assistente de criação gerou as variáveis de conectividade para você já como configurações de aplicativo. No entanto, a melhor prática de segurança é manter os segredos fora do Serviço de Aplicativo completamente. Você moverá seus segredos para um cofre de chaves e alterará a configuração do aplicativo para Referências do Key Vault com a ajuda dos Conectores de Serviço.
Etapa 1: Recuperar a cadeia de conexão existente
- No menu à esquerda da página Serviço de Aplicativo, selecione Configurações > Variáveis de Ambiente.
- Selecione cadeias de conexão.
- Selecione AZURE_POSTGRESQL_CONNECTIONSTRING.
- Na configuração Adicionar/Editar aplicativo, no campo Valor, localize as partes ID de usuário= e Senha= no final da cadeia de caracteres.
- Copie as cadeias de caracteres de nome de usuário e senha após a ID de usuário= e Senha= para uso posterior. Essa configuração de aplicativo permite que você se conecte ao banco de dados Postgres protegido atrás de um ponto de extremidade privado. No entanto, o segredo é salvo diretamente no aplicativo App Service, o que não é a melhor opção. Você vai mudar isso.
Etapa 2: Criar uma sub-rede para proteger o Key Vault A rede virtual já tem duas sub-redes existentes, mas uma já está delegada ao Serviço de Aplicativo e a outra já está delegada ao Banco de Dados do Azure para PostgreSQL. Você cria outra para acesso seguro ao Key Vault com um ponto de extremidade privado (para obter mais informações, veja Segurança de rede para Azure Key Vault).
- No menu à esquerda da página Serviço de Aplicativo, selecione a guia Visão geral.
- Selecione o grupo de recursos do aplicativo.
- Selecione a rede virtual no grupo de recursos.
- No menu à esquerda da rede virtual, selecione Configurações > Sub-redes.
- Selecione + Sub-rede.
- Em Nome, digite sub-rede-keyvault. Aceite os padrões.
- Selecione Adicionar.
Etapa 3: Criar um cofre de chaves para o gerenciamento seguro de segredos
- Na barra de pesquisa superior, digite "cofre de chaves", depois selecione Marketplace>Cofre de Chaves.
- No Grupo de Recursos, selecione msdocs-overus-postgres_group.
- Em Nome do cofre de chaves, digite um nome que consista apenas em letras e números.
- Em Região, defina-o para o mesmo local que o grupo de recursos.
Etapa 4: Proteger o cofre de chaves com um ponto de extremidade privado
- Selecione a guia Rede.
- Desmarque Habilitar acesso público.
- Selecione Criar um ponto de extremidade privado.
- No Grupo de Recursos, selecione msdocs-overus-postgres_group.
- Na caixa de diálogo, em Local, selecione o mesmo local que seu aplicativo do Serviço de Aplicativos.
- Em Nome, digite msdocs-precedus-postgresVaultEndpoint.
- Em Rede Virtual, selecione vnet-xxxxxxx.
- Na Sub-rede, subnet-keyvault.
- Selecione OK.
- Selecione Examinar + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Você deverá ver "Sua implantação está concluída".
Etapa 5: Criar um conector PostgreSQL
- Na barra de pesquisa superior, digite msdocs-quarkus-postgres e selecione o recurso do Serviço de Aplicativo chamado msdocs-quarkus-postgres.
- Na página Serviço de Aplicativo, no menu à esquerda, selecione Configurações > Conector de serviço > Criar.
- Em Tipo de serviço, selecione DB para servidor flexível do PostgreSQL.
- No servidor flexível do PostgreSQL, msdocs-quarkus-postgres-server já deve estar selecionado.
- No banco de dados do PostgreSQL, selecione msdocs-quarkus-postgres-database.
- No Tipo de cliente, selecione Java.
Etapa 6: Salvar segredos no cofre de chaves
- Selecione a guia Autenticação.
- Selecione Cadeia de conexão.
- Em Nome de usuário e Senha, cole a senha copiada anteriormente.
- Selecione Armazenar Segredo no Key Vault.
- Em Conexão do Key Vault, selecione Criar novo. Uma caixa de diálogo Criar conexão é aberta na parte superior da caixa de diálogo de edição.
Etapa 7: Estabelecer a conexão do Key Vault
- Na caixa de diálogo Criar conexão para a conexão do Key Vault, no Key Vault, selecione o cofre de chaves que você criou anteriormente.
- Em Tipo de cliente, selecione Java para consistência. O código do aplicativo não usa o cofre de chaves diretamente.
- Selecione Examinar + criar.
- Após a conclusão da validação, selecione Criar.
Etapa 8: Finalizar as configurações do conector do PostgreSQL
- Você está novamente na caixa de diálogo de edição do conector do PostgreSQL. Na guia Autenticação, aguarde até que o conector do cofre de chaves seja criado. Quando terminar, a lista suspensa Conexão do Key Vault a selecionará automaticamente.
- Selecione Examinar + criar.
- Após a conclusão da validação, selecione Criar. Aguarde até que a notificação Criação bem-sucedida seja exibida.
Etapa 9: Verificar a integração do Key Vault
- No menu à esquerda, selecione Configurações > Variáveis de Ambiente novamente.
- Ao lado de AZURE_POSTGRESQL_CONNECTIONSTRING, selecione Mostrar valor. O valor deve ser
@Microsoft.KeyVault(...), o que significa que é uma referência do cofre de chaves, porque o segredo agora é gerenciado no cofre de chaves.
Etapa 10: Excluir as credenciais de banco de dados do Serviço de Aplicativo
- Selecione a guia Cadeias de conexão.
- À direita de AZURE_POSTGRESQL_CONNECTIONSTRING, selecione Excluir. Lembre-se de que o assistente de criação criou essa cadeia de conexão para você no início.
Para resumir, o processo para proteger seus segredos de conexão envolveu:
- Recuperando os segredos de conexão das variáveis de ambiente do aplicativo do Serviço de Aplicativo.
- Criar um cofre de chaves com um ponto de extremidade privado.
- Criando uma conexão do Key Vault com a identidade gerenciada atribuída pelo sistema.
- Crie um conector de serviço para armazenar os segredos de conexão no cofre de chaves.
- Exclua os segredos de conexão antigos do aplicativo do Serviço de Aplicativo.
Está com problemas? Confira a seção de Solução de problemas.
4. Implantar código de amostra
No assistente de criação, você já configurou a implantação contínua do seu repositório do GitHub de exemplo usando o GitHub Actions. É apenas uma das muitas maneiras de implantar no Serviço de Aplicativo, mas também uma ótima maneira de ter integração contínua em seu processo de implantação. Por padrão, cada git push em seu repositório GitHub inicia a ação de compilação e implantação.
Observe o seguinte:
- Por padrão, o Quarkus escuta a porta 8080. Em produção, ele precisa ser configurado para escutar a porta especificada pela variável de ambiente
PORTno Serviço de Aplicativo. - Seu pacote Java implantado deve ser um Uber-Jar.
- Para simplificar o tutorial, você desabilitará testes durante o processo de implantação. Os executores do GitHub Actions não têm acesso ao banco de dados PostgreSQL no Azure, portanto, todos os testes de integração que exigem acesso ao banco de dados falharão, como é o caso do aplicativo de exemplo do Quarkus.
Etapa 1: De volta ao codespace do GitHub do seu fork de exemplo, execute git pull origin starter-no-infra.
Isso efetua pull do arquivo de fluxo de trabalho do GitHub recentemente confirmado em seu codespace.
Etapa 2 (Opção 1: com o GitHub Copilot):
- Inicie uma nova sessão de chat selecionando a exibição Chat e escolha +.
- Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer uma explicação sobre como as configurações da fonte de dados do Quarkus são definidas em src/main/resources/application.properties.
- Diga, "@workspace criei um conector de serviço do PostgreSQL no Serviço de Aplicativo do Azure usando o tipo de cliente Java e o nome da configuração do aplicativo é AZURE_POSTGRESQL_CONNECTIONSTRING. Quero usar essa cadeia de conexão quando o aplicativo estiver em execução em produção." O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você a fazer a alteração no arquivo src/main/resources/application.properties.
- Abra src/main/resources/application.properties no gerenciador e adicione a sugestão de código.
- Diga, "@workspace Como configurar este projeto para criar um Uber Jar?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você a fazer a alteração no arquivo src/main/resources/application.properties.
- Abra src/main/resources/application.properties no gerenciador e adicione a sugestão de código.
- Diga: "@workspace Como usar a porta do Serviço de Aplicativo?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você fazer a alteração no arquivo src/main/resources/application.properties.
- Abra src/main/resources/application.properties no gerenciador e adicione a sugestão de código. O GitHub Copilot não oferece a mesma resposta todas as vezes e nem sempre está correto. Talvez seja necessário fazer mais perguntas para ajustar sua resposta. Para obter dicas, confira O que posso fazer com o GitHub Copilot no meu codespace?
Etapa 2 (Opção 2: sem o GitHub Copilot):
- Abra src/main/resources/application.properties no gerenciador. O Quarkus usa esse arquivo para carregar propriedades Java.
- Remova as linhas de comentário 10 a 12. Essas configurações usam a configuração de aplicativo que você criou com o conector do PostgreSQL, cria um Uber Jar e define a porta como a usada pelo Serviço de Aplicativo.
Etapa 3 (Opção 1: com o GitHub Copilot):
- Pergunte: "@workspace Para a implantação do GitHub Actions, quero ignorar testes para evitar erros relacionados ao banco de dados." O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você fazer a alteração no arquivo .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml.
- Abra .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml no gerenciador e adicione a sugestão de código. Para obter dicas, confira O que posso fazer com o GitHub Copilot no meu codespace?
Etapa 3 (Opção 2: sem o GitHub Copilot):
- Abra .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml no gerenciador. Este é o fluxo de trabalho do GitHub Actions que o assistente de criação criou para você.
- Localize a etapa
Build with Mavene modifique o comandorunparamvn clean install -DskipTests.-DskipTestsinforma ao Maven para ignorar testes para que a implantação não falhe em erros de banco de dados. O contêiner do GitHub Actions não pode se conectar a um servidor PostgreSQL.
Etapa 4:
- Selecione a extensão Controle do código-fonte.
- Na caixa de texto, digite uma mensagem de commit, como
Configure DB and deployment. Ou selecione
e permita que o GitHub Copilot gere uma mensagem de confirmação para você. - Selecione Confirmare confirme com Sim.
- Selecione Sincronizar alterações 1e confirme com OK.
Etapa 5:
- No menu à esquerda, selecione Implantação>Centro de Implantação>Logs.
- No item de log da execução da implantação, selecione a entrada Build/Deploy Logs com o registro de data e hora mais recente.
Etapa 6: você será levado para o repositório do GitHub e verá que a ação do GitHub está em execução. O arquivo do fluxo de trabalho define dois estágios separados, compilar e implantar. Aguarde até que a execução do GitHub mostre um status de Sucesso. Ela leva cerca de 5 minutos.
Está com problemas? Confira a seção de Solução de problemas.
5. Navegar até o aplicativo
Etapa 1: Na página do Serviço de Aplicativo:
- No menu esquerdo, selecione Visão geral.
- Selecione a URL do aplicativo.
Etapa 2: Adicionar algumas frutas à lista. Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com a conectividade segura do Banco de Dados do Azure para PostgreSQL.
6. Logs de diagnóstico de fluxo
O Serviço de Aplicativo do Azure captura todas as mensagens geradas no console para ajudar você a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui instruções de log JBoss padrão para demonstrar essa funcionalidade, conforme mostrado abaixo.
private static final Logger LOGGER = Logger.getLogger(FruitEntityResource.class.getName());
@GET
public List<FruitEntity> get() {
LOGGER.info("In FruitEntityResource.get()");
return FruitEntity.listAll(Sort.by("name"));
}
Etapa 1: Na página do Serviço de Aplicativo:
- No menu à esquerda, selecione Monitoramento>Logs do Serviço de Aplicativo.
- No Log do aplicativo, selecione Sistema de arquivos.
- No menu superior, selecione Salvar.
Etapa 2: No menu esquerdo, selecione Fluxo de log. Você verá os logs do seu aplicativo, incluindo os logs de plataforma e os logs de dentro do contêiner.
Saiba mais sobre o registro em log em aplicativos Java na série em Habilitar o OpenTelemetry do Azure Monitor para aplicativos.NET, Node.js, Python e Java.
7. Limpar os recursos
Quando tiver terminado, você poderá excluir todos os recursos de sua assinatura do Azure ao excluir o grupo de recursos.
Etapa 1: Na barra de pesquisa, na parte superior do portal do Azure:
- Insira o nome do grupo de recursos.
- Selecione a guia Grupo de recursos.
Etapa 2: Na página Grupo de recursos, selecione Excluir o grupo de recursos.
Etapa 3:
- Insira o nome do grupo de recursos para confirmar a exclusão.
- Selecione Excluir.
- Confirme com Excluir novamente.
2. Criar recursos do Azure e implantar um aplicativo de amostra
Nesta etapa, você criará os recursos do Azure e implantará um aplicativo de amostra no Serviço de Aplicativo no Linux. As etapas usadas neste tutorial criam um conjunto de recursos seguros por padrão que incluem o Serviço de Aplicativo e o Banco de Dados do Azure para PostgreSQL.
O contêiner de desenvolvimento já tem a CLI do Desenvolvedor do Azure (AZD).
Na raiz do repositório do codespace do GitHub, execute
azd init.azd init --template javase-app-service-postgresql-infraQuando solicitado, dê as seguintes respostas:
Pergunta Resposta O diretório atual não está vazio. Deseja inicializar um projeto aqui em “<seu diretório>”? S O que você gostaria de fazer com esses arquivos? Manter meus arquivos existentes inalterados Insira um novo nome do ambiente Digite um nome exclusivo. O modelo do AZD usa esse nome como parte do nome DNS do seu aplicativo Web no Azure ( <app-name>-<hash>.azurewebsites.net). São permitidos caracteres alfanuméricos e hífens.Entre em sua conta do Azure usando o comando
azd auth logine seguindo o prompt:azd auth loginCrie os recursos necessários do Azure com o comando
azd provision. Siga o prompt para selecionar a assinatura e o local desejados para os recursos do Azure.azd provisionO comando
azd provisionleva cerca de 15 minutos para ser concluído (o cache Redis leva mais tempo). Posteriormente, você modificará seu código para trabalhar com o Serviço de Aplicativo e implantará as alterações comazd deploy. Durante a execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure.Esse modelo do AZD contém arquivos (azure.yaml e o diretório infra) que geram uma arquitetura segura por padrão com os seguintes recursos do Azure:
- Grupo de recursos: o contêiner para todos os recursos criados.
- Plano do Serviço de Aplicativo: define os recursos de computação para o Serviço de Aplicativo. É criado um plano do Linux na camada Básico.
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano de Serviço de Aplicativo.
- Rede virtual: integrada ao aplicativo do Serviço de Aplicativo e isola o tráfego de rede de back-end.
- Pontos de extremidade privados: acesse os pontos de extremidade para o cofre de chaves e o Cache Redis na rede virtual.
- Interfaces de rede: representam endereços IP privados, um para cada um dos pontos de extremidade privados.
- Servidor Flexível do Banco de Dados do Azure para PostgreSQL: Acessível somente de dentro da rede virtual. Um banco de dados e um usuário são criados para você no servidor.
- Zona DNS privada: Permite a resolução de DNS do servidor PostgreSQL na rede virtual.
- Workspace do Log Analytics: atua como o contêiner de destino para seu aplicativo enviar seus logs, em que os logs também poderão ser consultados.
- Azure Managed Redis: Acessível apenas por trás de seu endpoint privado.
- Cofre de chaves: acessível somente a partir e por trás do seu ponto de extremidade privado. Usado para gerenciar segredos para o aplicativo do Serviço de Aplicativo.
Quando o provisionamento for concluído, localize a configuração
AZURE_POSTGRESQL_CONNECTIONSTRINGna saída do AZD. Para manter os segredos seguros, somente os nomes de configuração são exibidos. Eles têm esta aparência na saída do AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPEO modelo do AZD que você usa já gerou as variáveis de conectividade como configurações do aplicativo e as envia para o terminal para sua conveniência. As configurações do aplicativo são uma maneira de manter os segredos de conexão fora do seu repositório de códigos. Você também pode encontrar o link direto para a página de configurações do aplicativo para o aplicativo do Serviço de Aplicativo criado.
Está com problemas? Confira a seção de Solução de problemas.
3. Modificar o código de exemplo do aplicativo e reimplantar
Você deve fazer algumas alterações no código do aplicativo para que ele funcione com o Serviço de Aplicativo:
- Por padrão, o Quarkus escuta a porta 8080. Em produção, ele precisa ser configurado para escutar a porta especificada pela variável de ambiente
PORTno Serviço de Aplicativo. - Seu pacote Java implantado deve ser um Uber-Jar.
- Para simplificar o tutorial, você desabilitará testes durante o processo de implantação. Os executores do GitHub Actions não têm acesso ao banco de dados PostgreSQL no Azure, portanto, todos os testes de integração que exigem acesso ao banco de dados falharão, como é o caso do aplicativo de exemplo do Quarkus.
No codespace do GitHub, inicie uma nova sessão de chat selecionando o modo de exibição chat e selecionando +.
Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer uma explicação sobre como as configurações da fonte de dados do Quarkus são definidas em src/main/resources/application.properties.
Diga, "@workspace criei um conector de serviço do PostgreSQL no Serviço de Aplicativo do Azure usando o tipo de cliente Java e o nome da configuração do aplicativo é AZURE_POSTGRESQL_CONNECTIONSTRING. Quero usar essa cadeia de conexão quando o aplicativo estiver em execução em produção." O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você a fazer a alteração no arquivo src/main/resources/application.properties.
Adicione a sugestão de código em src/main/resources/application.properties.
Diga, "@workspace Como configurar este projeto para criar um Uber Jar?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você a fazer a alteração no arquivo src/main/resources/application.properties.
Adicione a sugestão de código em src/main/resources/application.properties.
Diga: "@workspace Como usar a porta do Serviço de Aplicativo?" O Copilot pode fornecer uma sugestão de código semelhante à da Opção 2: sem as etapas do GitHub Copilot abaixo e até mesmo instruir você fazer a alteração no arquivo src/main/resources/application.properties.
Adicione a sugestão de código em src/main/resources/application.properties.
O GitHub Copilot não oferece a mesma resposta todas as vezes e nem sempre está correto. Talvez seja necessário fazer mais perguntas para ajustar sua resposta. Para obter dicas, confira O que posso fazer com o GitHub Copilot no meu codespace?
No terminal, execute o comando
azd deploy.azd deploy
Está com problemas? Confira a seção de Solução de problemas.
5. Navegar até o aplicativo
Na saída do AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL fica assim na saída do AZD:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: https://<app-name>.azurewebsites.net/
Adicione algumas frutas à lista.
Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com a conectividade segura do Banco de Dados do Azure para PostgreSQL.
Está com problemas? Confira a seção de Solução de problemas.
6. Logs de diagnóstico de fluxo
O Serviço de Aplicativo do Azure pode capturar logs de console para ajudá-lo a diagnosticar problemas com o aplicativo. Por conveniência, o modelo do AZD já habilita o registro de logs no sistema de arquivos local e está enviando os logs para um espaço de trabalho do Log Analytics.
O aplicativo de exemplo inclui instruções de log JBoss padrão para demonstrar essa funcionalidade, conforme mostrado abaixo.
private static final Logger LOGGER = Logger.getLogger(FruitEntityResource.class.getName());
@GET
public List<FruitEntity> get() {
LOGGER.info("In FruitEntityResource.get()");
return FruitEntity.listAll(Sort.by("name"));
}
Na saída do AZD, localize o link para transmitir logs do Serviço de Aplicativo e navegue até ele no navegador. O link tem esta aparência na saída do AZD:
Stream App Service logs at: https://portal.azure.com/#@/resource/subscriptions/<subscription-guid>/resourceGroups/<group-name>/providers/Microsoft.Web/sites/<app-name>/logStream
Saiba mais sobre o registro em log em aplicativos Java na série em Habilitar o OpenTelemetry do Azure Monitor para aplicativos.NET, Node.js, Python e Java.
Está com problemas? Confira a seção de Solução de problemas.
7. Limpar os recursos
Para excluir todos os recursos do Azure no ambiente de implantação atual, execute azd down e siga os prompts.
azd down
Solução de problemas
Falha na execução do GitHub Actions no estágio de compilação
Selecione o estágio de compilação com falha para ver qual etapa falhou. Se for o estágio Compilar com Maven, expanda a etapa para verificar se a opção -DskipTests é usada. Caso contrário, volte para 4. Implantar o código de exemplo e modifique o arquivo de fluxo de trabalho do GitHub de acordo com as instruções.
O aplicativo não foi iniciado e mostra o seguinte erro no fluxo de log: "As classes de modelo são definidas para o padrão de unidade de persistência <padrão>, mas o <padrão> de fonte de dados configurado não foi encontrado: a EntityManagerFactory padrão não será criada."
Esse erro do Quarkus provavelmente ocorre porque o aplicativo não pode se conectar ao banco de dados do Azure. Verifique se a configuração AZURE_POSTGRESQL_CONNECTIONSTRING do aplicativo não foi alterada e se application.properties está usando a configuração do aplicativo corretamente.
Falha ao iniciar o aplicativo e o fluxo de log mostra "Aguardando resposta à solicitação de aquecimento do contêiner"
Seu aplicativo provavelmente não está configurado para ouvir a porta especificada pela variável de ambiente PORT do Serviço de Aplicativo, portanto, ele não pode responder a nenhuma solicitação. Se o Serviço de Aplicativo não receber uma resposta do seu aplicativo, ele pressupõe que o aplicativo não foi iniciado. Volte para 4. Implantar o código de exemplo e verifique se application.properties está configurado corretamente.
O aplicativo funciona, mas vejo o log de erros "ERRO [org.acm.hib.orm.pan.ent.FruitEntityResource] (vert.x-eventloop-thread-0) Falha ao manipular a solicitação: jakarta.ws.rs.NotFoundException: HTTP 404 Not Found".
Este é um erro Vert.x (consulte Arquitetura Reativa do Quarkus), indicando que o cliente solicitou um caminho desconhecido. Isso pode acontecer na primeira vez que o aplicativo é iniciado, quando o cliente solicita a API REST antes que a migração de banco de dados Hibernate ocorra.
No Serviço de Aplicativo, esse erro também ocorre em cada inicialização do aplicativo porque o Serviço de Aplicativo verifica se o aplicativo começa enviando uma solicitação GET para /robots933456.txt.
Perguntas frequentes
- Quanto custa essa configuração?
- Como se conectar ao servidor PostgreSQL que está protegido por trás da rede virtual com outras ferramentas?
- Como o desenvolvimento de aplicativos local funciona com o GitHub Actions?
- E se eu quiser executar testes com o PostgreSQL durante o fluxo de trabalho do GitHub?
- Não tenho permissões para criar uma identidade atribuída pelo usuário
- O que posso fazer com o GitHub Copilot no meu codespace?
Quanto custa essa configuração?
O preço dos recursos criados são os seguintes:
- O plano do Serviço de Aplicativo é criado na camada Básica e pode ser ampliado ou reduzido. Confira Preço do Serviço de Aplicativo.
- O servidor flexível do PostgreSQL é criado na camada mais baixa com capacidade de intermitência Standard_B1ms, com o mínimo do tamanho do armazenamento, que pode ser dimensionado para cima ou para baixo. Confira o Preço do Banco de Dados do Azure para PostgreSQL.
- A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte os Preços da Rede Virtual do Azure.
- A zona DNS privada incorre em uma pequena cobrança. Consulte os Preços do DNS do Azure.
Como se conectar ao servidor PostgreSQL que está protegido por trás da rede virtual com outras ferramentas?
- Para acesso básico de uma ferramenta de linha comando, você pode executar
psqlno terminal SSH do aplicativo. - Para se conectar a partir de uma ferramenta de área de trabalho, seu computador precisa estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure conectada a uma das sub-redes ou um computador em uma rede local que tenha uma conexão VPN site a site com a rede virtual do Azure.
- Você também pode integrar o Azure Cloud Shell à rede virtual.
Como o desenvolvimento de aplicativos local funciona com o GitHub Actions?
Usando como exemplo o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo, cada git push inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório do GitHub, você faz as atualizações desejadas e efetua push para o GitHub. Por exemplo:
git add .
git commit -m "<some-message>"
git push origin main
E se eu quiser executar testes com o PostgreSQL durante o fluxo de trabalho do GitHub?
O aplicativo de exemplo do Quarkus padrão inclui testes com conectividade de banco de dados. Para evitar erros de conexão, você adicionou a propriedade -skipTests. Se desejar, você pode executar os testes em um contêiner de serviço do PostgreSQL. Por exemplo, no arquivo de fluxo de trabalho gerado automaticamente em sua bifurcação do GitHub (.github/workflows/main_cephalin-quarkus.yml), faça as seguintes alterações:
Adicione código YAML para o contêiner PostgreSQL ao trabalho
build, conforme mostrado no snippet a seguir.... jobs: build: runs-on: ubuntu-latest # BEGIN CODE ADDITION container: ubuntu services: # Hostname for the PostgreSQL container postgresdb: image: postgres env: POSTGRES_PASSWORD: postgres POSTGRES_USER: postgres POSTGRES_DB: postgres # Set health checks to wait until postgres has started options: >- --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5 # END CODE ADDITION steps: - uses: actions/checkout@v4 ...container: ubuntuinforma ao GitHub para executar o trabalhobuildem um contêiner. Dessa forma, a cadeia de conexão em seu ambiente de desenvolvimentojdbc:postgresql://postgresdb:5432/postgrespode funcionar como está quando o fluxo de trabalho é executado. Para obter mais informações sobre a conectividade do PostgreSQL no GitHub Actions, consulte Como criar contêineres de serviço PostgreSQL.Na etapa
Build with Maven, remova-DskipTests. Por exemplo:- name: Build with Maven run: mvn clean install -Dquarkus.package.type=uber-jar
Não tenho permissões para criar uma identidade atribuída pelo usuário
Veja como configurar a implantação do GitHub Actions a partir do Centro de Implantação.
O que posso fazer com o GitHub Copilot em meu codespace?
Você pode ter notado que a visualização do chat do GitHub Copilot já estava lá quando você criou o codespace. No entanto, você precisa de uma conta do GitHub Copilot (avaliação gratuita de 30 dias disponível).
Algumas dicas para você ao falar com o GitHub Copilot:
- Em uma única sessão de chat, as perguntas e respostas se baseiam umas nas outras e você pode ajustar suas perguntas para ajustar a resposta que receber.
- Por padrão, o GitHub Copilot não tem acesso a nenhum arquivo em seu repositório. Para fazer perguntas sobre um arquivo, abra o arquivo no editor primeiro.
- Para permitir que o GitHub Copilot tenha acesso a todos os arquivos no repositório ao preparar suas respostas, comece sua pergunta com
@workspace. Para obter mais informações, consulte Use the @workspace agent. - Na sessão de chat, o GitHub Copilot pode sugerir alterações e (com
@workspace) até mesmo onde fazer as alterações, mas não tem permissão para fazer as alterações para você. Cabe a você adicionar as alterações sugeridas e testá-las.
Próximas etapas
Saiba mais sobre como executar aplicativos Java no Serviço de Aplicativo no guia do desenvolvedor.
Saiba como proteger seu aplicativo com um domínio e um certificado personalizados.