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.
Neste tutorial, você implanta um aplicativo Web Quarkus controlado por dados no 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 ao Java Standard Edition (Java SE) em um ambiente de servidor Windows ou Linux.
Neste tutorial, aprenderás como:
- Crie uma arquitetura segura por padrão para o Serviço de Aplicativo do Azure e o Banco de Dados do Azure para servidor flexível PostgreSQL.
- Proteja segredos de conexão usando uma identidade gerenciada e uma referência do Cofre de Chaves.
- Implante um aplicativo Quarkus de exemplo no Serviço de Aplicativo a partir de um repositório GitHub.
- Aceda às definições da aplicação no Serviço de Aplicativo no código da aplicação.
- Faça atualizações e volte a implementar o código da aplicação.
- Gere esquema de banco de dados executando migrações de banco de dados.
- Transmita logs de diagnóstico do Azure.
- Gerencie o aplicativo no portal do Azure.
- Provisione a mesma arquitetura e implante usando a CLI do Azure Developer.
- Otimize seu fluxo de trabalho de desenvolvimento com o GitHub Codespaces e o GitHub Copilot.
Pré-requisitos
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um gratuitamente.
- Conhecimento de Java em desenvolvimento com Quarkus.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma experiência gratuita de 30 dias.
- Uma conta do Azure com uma subscrição ativa. Se não tiver uma conta do Azure, pode criar uma gratuitamente.
- Uma conta GitHub. Você também pode obter um gratuitamente.
- CLI do Desenvolvedor do Azure instalada. Você pode seguir as etapas com o Azure Cloud Shell porque ele já tem a CLI do Desenvolvedor do Azure instalada.
- Conhecimento de Java em desenvolvimento com Quarkus.
- (Opcional) Para experimentar o GitHub Copilot, uma conta do GitHub Copilot. Está disponível uma experiência gratuita de 30 dias.
Saltar para o fim
Se você quiser apenas ver o aplicativo de exemplo neste tutorial em execução no Azure, basta executar os seguintes comandos no Azure Cloud Shell e seguir o prompt:
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 controlado por dados de exemplo como ponto de partida. Para sua conveniência, o repositório de amostras, Hibernate ORM 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 espaço de código GitHub, o que significa que você pode executar o exemplo em qualquer computador com um navegador da Web.
Passo 1: Em uma nova janela do navegador:
- Iniciar sessão na sua conta do GitHub.
- Navegar para https://github.com/Azure-Samples/msdocs-quarkus-postgresql-sample-app/fork.
- Desmarque Copiar somente a ramificação principal. Você quer todos os ramos.
- Selecione Criar bifurcação.
Passo 2: Na bifurcação do GitHub:
- Selecione o starter-no-infra principal>para o ramo inicial. Esta ramificação contém apenas o projeto de exemplo e nenhum arquivo ou configuração relacionados ao Azure.
- Selecione Code>Criar espaço de código em starter-no-infra. O codespace leva alguns minutos para ser configurado.
Passo 3: No terminal codespace:
- Execute o
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 Simplified Hibernate ORM with Panache e Configure data sources in Quarkus.
Gorjeta
Você pode perguntar ao GitHub Copilot sobre este repositório. Por exemplo:
- @workspace O que faz este projeto?
- @workspace O que faz a pasta .devcontainer?
Tem problemas? Verifique a seção Solução de problemas.
2. Criar Serviço de Aplicativo e PostgreSQL
Nesta etapa, você cria 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ê especifica:
- O Nome do aplicativo Web. Ele é usado como parte do nome DNS do seu aplicativo na forma de
https://<app-name>-<hash>.<region>.azurewebsites.net
. - A região para executar o aplicativo fisicamente no mundo. Ele também é usado como parte do nome DNS do seu aplicativo.
- A pilha de tempo de execução para o aplicativo. É onde você seleciona a versão do Java a ser usada para seu aplicativo.
- O plano de hospedagem para o aplicativo. É a camada de preço que inclui o conjunto de recursos e a capacidade de dimensionamento para seu aplicativo.
- O Grupo de Recursos para o aplicativo. Um grupo de recursos permite agrupar (em um contêiner lógico) todos os recursos do Azure necessários 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>Aplicação 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 forma.
- Nome: msdocs-quarkus-postgres. Um grupo de recursos chamado msdocs-quarkus-postgres_group é gerado para você.
- Pilha de execução: Java 21.
- Pilha de servidores web Java: Java SE (Embedded Web Server).
- Sistema operacional: Linux.
- Região: qualquer região do Azure perto de você.
- Plano Linux: Crie novo e use o nome msdocs-quarkus-postgres.
- Plano de preços: Basic B1. Quando estiver pronto, você poderá escalar para um nível de preço diferente.
Etapa 3: Adicionar banco de dados
- Selecione a guia Banco de dados .
- Selecione Criar um banco de dados.
- Em Motor, selecione PostgreSQL - Servidor flexível. O nome do servidor e o nome do banco de dados são definidos por padrão como valores apropriados.
Etapa 4: Configurar a implantação do GitHub
- Selecione o separador 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 autenticar com sua conta do GitHub.
- Em Organização, selecione seu alias do GitHub.
- No Repositório, selecione msdocs-quarkus-postgresql-sample-app.
- Em Ramo, selecione starter-no-infra.
- Selecione Rever + criar.
- Após a conclusão da 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 seja autenticado usando o Microsoft Entra (autenticação OIDC). Para opções alternativas de autenticação, veja Deploy to App Service using GitHub Actions.
Etapa 3: A implantação leva alguns minutos para ser concluída. Quando 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. Um plano Linux na camada Basic é criado.
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
- Banco de Dados do Azure para servidor flexível 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: Permite a resolução DNS do cofre de chaves e do servidor de banco de dados na rede virtual.
3. Segredos de conexão seguros
O assistente de criação gerou as variáveis de conectividade para você já como configurações do aplicativo. No entanto, a melhor prática de segurança é manter os segredos completamente fora do App Service. Você moverá seus segredos para um cofre de chaves e alterará a configuração do aplicativo para referências do Cofre de Chaves com a ajuda dos Conectores de Serviço.
Etapa 1: Recuperar a cadeia de conexão existente
- No menu esquerdo 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 do aplicativo Adicionar/Editar, no campo Valor , localize as partes User Id= e Password= no final da cadeia de caracteres.
- Copie as cadeias de caracteres de utilizador e senha depois de User Id= e Password= para uso posterior. Esta definição da aplicação permite ligar-se ao banco de dados Postgres, protegido atrás de um endpoint privado. No entanto, o segredo é guardado diretamente na aplicação do App Service, o que não é o melhor. Vais mudar isto.
Etapa 2: Criar uma sub-rede para proteger o Cofre da Chave 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 outro para acesso seguro ao Cofre da Chave com um ponto de extremidade privado (para obter mais informações, consulte Segurança de rede para o Cofre de Chaves do Azure).
- No menu esquerdo 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 esquerdo da rede virtual, selecione Configurações > Sub-redes.
- Selecione + Subnet.
- Em Nome, digite subnet-keyvault. Aceite os padrões.
- Selecione Adicionar.
Etapa 3: Criar um cofre de chaves para gerenciamento seguro de segredos
- Na barra de pesquisa superior, digite "key vault", depois selecione Marketplace>Key Vault.
- Em Grupo de Recursos, selecione msdocs-quarkus-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 endpoint privado
- Selecione a aba Rede.
- Desmarque Permitir acesso público.
- Selecione Criar um ponto final privado.
- Em Grupo de Recursos, selecione msdocs-quarkus-postgres_group.
- Na caixa de diálogo, em Localização, selecione a mesma localização da sua aplicação do App Service.
- Em Nome, digite msdocs-quarkus-postgresVaultEndpoint.
- Em Rede virtual, selecione vnet-xxxxxxx.
- Em Subrede, subnet-keyvault.
- Selecione OK.
- Selecione Rever + criar e, em seguida, selecione Criar. Aguarde a conclusão da implantação do cofre de chaves. Deverá ver "A sua implementaçã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 > de Criação do Conector de Serviço>.
- Em Tipo de serviço, selecione DB para servidor flexível PostgreSQL.
- No servidor flexível PostgreSQL, msdocs-quarkus-postgres-server já deve estar selecionado.
- No base de dados PostgreSQL, selecione msdocs-quarkus-postgres-database.
- Em Tipo de cliente, selecione Java.
Passo 6: Guarde segredos no cofre das chaves
- Selecione o separador Autenticação.
- Selecione Cadeia de conexão.
- Em Nome de utilizador e Palavra-passe, cole a palavra-passe que copiou anteriormente.
- Selecione Armazenar segredo no Cofre da chave.
- Em Key Vault Connection, selecione Criar novo(a). 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 com o Key Vault
- Na caixa de diálogo Criar conexão para a conexão do Cofre da Chave, no Cofre da Chave, selecione o cofre da chave criado anteriormente.
- Em Tipo de cliente, selecione Java para consistência. Na verdade, o código do aplicativo não usa o cofre de chaves diretamente.
- Selecione Avaliar + Criar.
- Quando a validação for concluída, selecione Criar.
Etapa 8: Finalizar as configurações do conector PostgreSQL
- Você está de volta na caixa de diálogo de edição do conector PostgreSQL. Na guia Autenticação, aguarde até que o conector do Key Vault seja criado. Quando terminar, a lista suspensa Conexão do Cofre da Chave selecioná-la-á automaticamente.
- Selecione Avaliar + Criar.
- Quando a validação for concluída, 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 indica ser uma referência ao cofre de chaves porque o segredo agora é gerido no cofre de chaves.
Etapa 10: Excluir 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 da aplicação do App Service.
- Criação de um cofre de chaves com um ponto de extremidade privado.
- Criação de uma conexão com o Cofre de Chaves usando a identidade gerenciada atribuída pelo sistema.
- Crie um conector de serviço para armazenar os segredos de conexão no cofre de chaves.
- Eliminar os segredos de conexão antigos do aplicativo App Service.
Tem problemas? Verifique a seção Solução de problemas.
4. Implantar código de exemplo
No assistente de criação, você já configurou a implantação contínua a partir do repositório GitHub de exemplo usando as Ações do GitHub. É 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
no seu repositório do GitHub inicia a ação de compilação e implantação.
Tenha em atenção o seguinte:
- O Quarkus escuta a porta 8080 por padrão. Em produção, ele precisa ser configurado para ouvir a porta especificada pela variável de ambiente
PORT
no App Service. - Seu pacote Java implantado deve ser um Uber-Jar.
- Para simplificar o tutorial, você desabilitará os testes durante o processo de implantação. Os executores de Ações do GitHub 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 Quarkus.
1º Passo: De volta ao espaço de código do GitHub da bifurcação de exemplo, execute git pull origin starter-no-infra
.
Isso extrai o arquivo de fluxo de trabalho do GitHub recém-confirmado para o seu espaço de código.
Passo 2 (Opção 1: com o Copilot do GitHub):
- Inicie uma nova sessão de chat selecionando a vista Chat e, em seguida, selecionando +.
- Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer alguma explicação sobre como as configurações da fonte de dados do Quarkus são configuradas em src/main/resources/application.properties.
- Diga: "@workspace criei um conector de serviço 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 sendo executado em produção." O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no arquivo src/main/resources/application.properties .
- Abra src/main/resources/application.properties no explorador e adicione a sugestão de código.
- Diga: "@workspace Como faço para configurar este projeto para criar um Uber Jar?" O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para você fazer a alteração no arquivo src/main/resources/application.properties .
- Abra src/main/resources/application.properties no explorador e adicione a sugestão de código.
- Diga: "@workspace Como utilizo a porta do Serviço de Aplicações?" O Copilot pode apresentar uma sugestão de código semelhante à que aparece na Opção 2: sem o GitHub Copilot abaixo e até indicar que deve fazer a alteração no ficheiro src/main/resources/application.properties.
- Abra src/main/resources/application.properties no explorador e adicione a sugestão de código. O GitHub Copilot não lhe dá a mesma resposta todas as vezes, e nem sempre é correto. Talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.
Passo 2 (Opção 2: sem o Copilot do GitHub):
- Abra src/main/resources/application.properties no explorador. O Quarkus usa esse arquivo para carregar propriedades Java.
- Descomente as linhas 10-12. Essas configurações usam a configuração do aplicativo que você criou com o conector PostgreSQL, criam um Uber Jar e definem a porta para a usada pelo Serviço de Aplicativo.
Passo 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 lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para 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 explorador e adicione a sugestão de código. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.
Passo 3 (Opção 2: sem Copiloto GitHub):
- Abra .github/workflows/starter-no-infra_msdocs-quarkus-postgres.yml no explorador. Este é o fluxo de trabalho de Ações do GitHub que o assistente de criação criou para você.
- Localize a
Build with Maven
etapa e modifique orun
comando paramvn clean install -DskipTests
.-DskipTests
diz ao Maven para ignorar os testes para que a implantação não falhe devido a erros de base de dados. O contêiner Ações do GitHub não pode se conectar a um servidor PostgreSQL.
Passo 4:
- Selecione a extensão Controle do código-fonte.
- Na caixa de texto, digite uma mensagem de confirmação como
Configure DB and deployment
. Ou selecionee deixe o GitHub Copilot gerar uma mensagem de confirmação para você.
- Selecione Confirmar e, em seguida, confirme com Sim.
- Selecione Sincronizar alterações 1 e, em seguida, confirme com OK.
Passo 5:
- No menu à esquerda, selecione Implantação>Centro de Implantação>Logs.
- No item de log para a execução da implantação, selecione a entrada Compilar/Implantar Logs com o carimbo de data/hora mais recente.
6º Passo: Você é levado ao repositório do GitHub e vê que a ação do GitHub está em execução. O arquivo de fluxo de trabalho define dois estágios separados, build e deploy. Aguarde até que a execução do GitHub mostre um status de Sucesso. Demora cerca de 5 minutos.
Tem problemas? Verifique a seção Solução de problemas.
5. Navegue até o aplicativo
Etapa 1: Na página Serviço de Aplicativo:
- No menu à esquerda, selecione Visão geral.
- Selecione o URL do seu aplicativo.
Passo 2: Adicione algumas frutas à lista. Parabéns, você está executando um aplicativo Web no Serviço de Aplicativo do Azure, com conectividade segura ao Banco de Dados do Azure para PostgreSQL.
6. Transmitir logs de diagnóstico
O Serviço de Aplicativo do Azure captura todas as mensagens enviadas para o console para ajudá-lo a diagnosticar problemas com seu aplicativo. O aplicativo de exemplo inclui instruções de log padrão do JBoss para demonstrar esse recurso, 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 Serviço de Aplicativo:
- No menu à esquerda, selecione Monitorização>Registos do Serviço de Aplicações.
- Em Registo de aplicações, selecione Sistema de ficheiros.
- No menu superior, selecione Salvar.
Passo 2: No menu à esquerda, selecione Log stream. Você vê os logs do seu aplicativo, incluindo logs da plataforma e logs de dentro do contêiner.
Saiba mais sobre como fazer logon em aplicativos Java na série em Habilitar o Azure Monitor OpenTelemetry para aplicativos .NET, Node.js, Python e Java.
7. Limpar os recursos
Quando terminar, pode eliminar todos os recursos da sua subscrição do Azure eliminando 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 o grupo de recursos.
Etapa 2: na página do grupo de recursos, selecione Excluir grupo de recursos.
Passo 3:
- Introduza o nome do grupo de recursos para confirmar a sua eliminação.
- Selecione Eliminar.
- Confirme com Excluir novamente.
2. Crie recursos do Azure e implante um aplicativo de exemplo
Nesta etapa, você cria os recursos do Azure e implanta um aplicativo de exemplo 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).
A partir da raiz do repositório do Codespace do GitHub, execute
azd init
.azd init --template javase-app-service-postgresql-infra
Quando solicitado, dê as seguintes respostas:
Pergunta Resposta O diretório atual não está vazio. Gostaria de iniciar um projeto aqui em '<your-directory>'? Y O que você gostaria de fazer com esses arquivos? Manter os meus ficheiros existentes inalterados Insira um novo nome de ambiente Escreva um nome exclusivo. O modelo 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ífenes.Entre no Azure executando o
azd auth login
comando e seguindo o prompt:azd auth login
Crie os recursos necessários do Azure com o
azd provision
comando. Siga o prompt para selecionar a assinatura desejada e o local para os recursos do Azure.azd provision
O comando
azd provision
demora cerca de 15 minutos a concluir (o cache do Redis demora mais tempo). Depois, modificará o seu código para funcionar com o App Service e implementar as alterações comazd deploy
. Enquanto está em execução, o comando fornece mensagens sobre o processo de provisionamento e implantação, incluindo um link para a implantação no Azure.Este modelo 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. Um plano Linux na camada Basic é criado.
- Serviço de Aplicativo: representa seu aplicativo e é executado no plano do Serviço de Aplicativo.
- Rede virtual: integrada ao aplicativo Serviço de Aplicativo e isola o tráfego de rede back-end.
- Pontos de acesso privados: pontos de acesso para o cofre de chaves e o cache Redis na rede virtual.
- Interfaces de rede: Representa endereços IP privados, um para cada um dos pontos de extremidade privados.
- Banco de Dados do Azure para servidor flexível 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 DNS do servidor PostgreSQL na rede virtual.
- Espaço de trabalho do Log Analytics: atua como o contêiner de destino para seu aplicativo enviar seus logs, onde você também pode consultar os logs.
- Azure Cache para Redis: acessível apenas a partir de seu ponto de extremidade privado.
- Key vault: Acessível apenas a partir de seu endpoint privado. Usado para gerir segredos para a aplicação App Service.
Quando o provisionamento terminar, localize a configuração
AZURE_POSTGRESQL_CONNECTIONSTRING
na saída AZD. Para manter os segredos seguros, apenas os nomes das configurações são exibidos. Eles se parecem com isso na saída AZD:App Service app has the following connection settings: - AZURE_POSTGRESQL_CONNECTIONSTRING - AZURE_REDIS_CONNECTIONSTRING - AZURE_KEYVAULT_RESOURCEENDPOINT - AZURE_KEYVAULT_SCOPE
O modelo AZD que você usa gerou as variáveis de conectividade para você já 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ódigo. Pode também encontrar o link direto para a página de configurações da aplicação criada do Serviço de Aplicação.
Tem problemas? Verifique a seção Solução de problemas.
3. Modifique o código de exemplo e reimplante
Você deve fazer algumas alterações no código do aplicativo para que ele funcione com o Serviço de Aplicativo:
- O Quarkus escuta a porta 8080 por padrão. Em produção, ele precisa ser configurado para ouvir a porta especificada pela variável de ambiente
PORT
no App Service. - Seu pacote Java implantado deve ser um Uber-Jar.
- Para simplificar o tutorial, você desabilitará os testes durante o processo de implantação. Os executores de Ações do GitHub 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 Quarkus.
No espaço de código do GitHub, inicie uma nova sessão de chat selecionando a visualização Chat e, em seguida, selecionando +.
Pergunte: "@workspace Como o aplicativo se conecta ao banco de dados?" O Copilot pode fornecer alguma explicação sobre como as configurações da fonte de dados quarkus são configuradas em src/main/resources/application.properties.
Diga: "@workspace criei um conector de serviço 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 sendo executado em produção." O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para 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.
Diga: "@workspace Como faço para configurar este projeto para criar um Uber Jar?" O Copilot pode lhe dar uma sugestão de código semelhante à da Opção 2: sem as etapas do Copilot do GitHub abaixo e até mesmo dizer para 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.
Diga: "@workspace Como utilizo a porta do Serviço de Aplicações?" O Copilot pode apresentar uma sugestão de código semelhante à que aparece na Opção 2: sem o GitHub Copilot abaixo e até indicar que deve fazer a alteração no ficheiro src/main/resources/application.properties.
Adicione a sugestão de código em src/main/resources/application.properties.
O GitHub Copilot não lhe dá a mesma resposta todas as vezes, e nem sempre é correto. Talvez seja necessário fazer mais perguntas para ajustar a resposta. Para obter dicas, consulte O que posso fazer com o GitHub Copilot no meu codespace?.
No terminal, execute
azd deploy
.azd deploy
Tem problemas? Verifique a seção Solução de problemas.
5. Navegue até o aplicativo
Na saída AZD, localize a URL do seu aplicativo e navegue até ela no navegador. O URL tem esta aparência na saída 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 conectividade segura ao Banco de Dados do Azure para PostgreSQL.
Tem problemas? Verifique a seção Solução de problemas.
6. Transmitir logs de diagnóstico
O Serviço de Aplicativo do Azure pode capturar logs do console para ajudá-lo a diagnosticar problemas com seu aplicativo. Por conveniência, o modelo AZD já permite o registo no sistema de ficheiros local e está a enviar os registos para um espaço de trabalho do Log Analytics.
O aplicativo de exemplo inclui instruções de log padrão do JBoss para demonstrar esse recurso, 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 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 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 como fazer logon em aplicativos Java na série em Habilitar o Azure Monitor OpenTelemetry para aplicativos .NET, Node.js, Python e Java.
Tem problemas? Verifique a seção 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
Resolução de Problemas
A execução das Ações do GitHub falhou no estágio de compilação
Selecione a fase de compilação com falha para identificar a etapa que falhou. Se for o estágio Construir com Maven , expanda a etapa para verificar se a -DskipTests
opção é usada. Se não, volte para 4. Implante o código de exemplo e modifique o arquivo de fluxo de trabalho do GitHub de acordo com as instruções.
A aplicação falhou ao iniciar e mostra o seguinte erro no fluxo de log: "As classes de modelo são definidas para a unidade de persistência 'default', mas a fonte de dados configurada 'default' não foi encontrada: a EntityManagerFactory padrão não será criada."
Esse erro do Quarkus é provavelmente 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.
O aplicativo falhou ao iniciar e o fluxo de log mostra "Aguardando resposta à solicitação de aquecimento para contêiner"
Seu aplicativo provavelmente não está configurado para ouvir a porta especificada pela variável de ambiente do Serviço de PORT
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 assumirá que o aplicativo falhou ao iniciar. Volte para 4. Implante o código de exemplo e verifique se application.properties está configurado corretamente.
A aplicação funciona, mas visualizo o log de erros "ERROR [org.acm.hib.orm.pan.ent.FruitEntityResource] (vert.x-eventloop-thread-0) Failed to handle request: jakarta.ws.rs.NotFoundException: HTTP 404 Not Found".
Este é um erro Vert.x (consulte Quarkus Reative Architecture), 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 do banco de dados do Hibernate aconteça.
No Serviço de Aplicativo, esse erro também acontece em todas as inicializações de aplicativos porque o Serviço de Aplicativo verifica se o aplicativo é iniciado enviando uma GET
solicitação para /robots933456.txt
.
Perguntas mais frequentes
- Quanto custa esta configuração?
- Como faço para me conectar ao servidor PostgreSQL que está protegido atrás da rede virtual com outras ferramentas?
- Como funciona o desenvolvimento de aplicativos locais 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 utilizador
- O que posso fazer com o GitHub Copilot no meu ambiente de desenvolvimento?
Quanto custa esta configuração?
O preço dos recursos criados é o seguinte:
- O plano do Serviço de Aplicativo é criado na camada Básica e pode ser dimensionado para cima ou para baixo. Consulte Preços do Serviço de Aplicativo.
- O servidor flexível PostgreSQL é criado na camada burstable mais baixa Standard_B1ms, com o tamanho mínimo de armazenamento, que pode ser dimensionado para cima ou para baixo. Consulte Banco de Dados do Azure para obter preços do PostgreSQL.
- A rede virtual não incorre em cobrança, a menos que você configure uma funcionalidade extra, como emparelhamento. Consulte Preços da Rede Virtual do Azure.
- A zona DNS privada incorre em uma pequena cobrança. Consulte Preços do DNS do Azure.
Como faço para me conectar ao servidor PostgreSQL que está protegido atrás da rede virtual com outras ferramentas?
- Para acesso básico a partir de uma ferramenta de linha de comando, você pode executar
psql
a partir do terminal SSH do aplicativo. - Para se conectar a partir de uma ferramenta de área de trabalho, sua máquina deve estar dentro da rede virtual. Por exemplo, pode ser uma VM do Azure que está conectada a uma das sub-redes, ou uma máquina numa rede local que tem uma ligação de VPN site-a-site com a rede virtual do Azure.
- Você também pode integrar o Azure Cloud Shell à rede virtual.
Como funciona o desenvolvimento de aplicativos locais com o GitHub Actions?
Usando o arquivo de fluxo de trabalho gerado automaticamente do Serviço de Aplicativo como exemplo, cada git push
um inicia uma nova compilação e execução de implantação. A partir de um clone local do repositório GitHub, você faz as atualizações desejadas e envia por 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 padrão do Quarkus inclui testes com conectividade de banco de dados. Para evitar erros de conexão, você adicionou a -skipTests
propriedade. Se desejar, você pode executar os testes em um contêiner de serviço PostgreSQL. Por exemplo, no arquivo de fluxo de trabalho gerado automaticamente na bifurcação do GitHub (.github/workflows/main_cephalin-quarkus.yml), faça as seguintes alterações:
Adicione o código YAML para o contêiner PostgreSQL ao
build
trabalho, conforme mostrado no trecho 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: ubuntu
diz ao GitHub para executar obuild
trabalho em um contêiner. Dessa forma, a cadeia de conexão em seu ambientejdbc:postgresql://postgresdb:5432/postgres
de desenvolvimento pode funcionar como está quando o fluxo de trabalho é executado. Para obter mais informações sobre a conectividade PostgreSQL em Ações do GitHub, consulte Criando contêineres de serviço PostgreSQL.Build with Maven
Na etapa, 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 utilizador
Veja Configuração de implantação do GitHub Actions no Centro de Implantação.
O que posso fazer com o GitHub Copilot no meu espaço de código?
Você deve ter notado que a visualização de bate-papo do GitHub Copilot já estava lá para você quando você criou o espaço de código. No entanto, você precisa de uma conta GitHub Copilot (teste gratuito de 30 dias disponível).
Algumas dicas para si quando fala com o GitHub Copilot:
- Em uma única sessão de bate-papo, as perguntas e respostas se baseiam umas nas outras e você pode ajustar suas perguntas para ajustar a resposta obtida.
- Por padrão, o GitHub Copilot não tem acesso a nenhum ficheiro no seu repositório. Para fazer perguntas sobre um ficheiro, abra primeiro o ficheiro no editor.
- 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 indicar onde fazer as alterações, mas não tem permissão para fazer as alterações por si. Cabe a você adicionar as alterações sugeridas e testá-las.
Próximos passos
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.