Exercício – Configurar Aplicativos de Contêiner do Azure

Concluído

Nesta unidade, você irá criar um grupo de recursos do Azure que contém os recursos do aplicativo. Em seguida, configurará o banco de dados PostgreSQL usando a CLI do Azure. Por fim, você irá configurar o aplicativo Quarkus para acessar o banco de dados PostgreSQL remoto. Use um terminal de sua preferência para executar os comandos.

Preparar o ambiente de trabalho

Você precisa configurar algumas variáveis de ambiente. Aqui estão algumas anotações sobre as variáveis que você criará:

Variável Descrição
AZ_PROJECT O nome do projeto. Para manter esse valor exclusivo, recomendamos que você use AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP O nome do grupo de recursos que contém os recursos.
AZ_LOCATION A região do Azure. É recomendável usar uma região que seja perto de onde você mora. Para ver a lista de regiões disponíveis, insira az account list-locations em um prompt de comando.
AZ_CONTAINERAPP O nome da instância dos Aplicativos de Contêiner do Azure que contém os contêineres.
AZ_CONTAINERAPP_ENV O nome do ambiente de Aplicativos de Contêiner do Azure.
AZ_POSTGRES_SERVER_NAME O nome do servidor PostgreSQL. Não são permitidos caracteres não alfanuméricos: -, _, !, $, #, %. O nome deve ser exclusivo em todo o Azure. Certifique-se de usar um identificador exclusivo.
AZ_POSTGRES_DB_NAME O nome do banco de dados PostgreSQL. O nome padrão do banco de dados PostgreSQL é postgres.
AZ_POSTGRES_USERNAME O nome do usuário administrador padrão do seu servidor de banco de dados PostgreSQL.
AZ_POSTGRES_PASSWORD A senha padrão do seu servidor de banco de dados PostgreSQL. Use uma senha segura.

Observação

Você pode nomear seus recursos do Azure da maneira que quiser, mas recomendamos que você examine os Exemplos de abreviação para recursos do Azure. Este artigo fornece abreviações de exemplo para muitos recursos do Azure (por exemplo, rg para grupos de recursos e ca para aplicativos de contêiner).

Use os comandos a seguir para configurar as variáveis. Certifique-se de modificar os valores conforme descrito na tabela anterior.

export AZ_PROJECT_<your initials>="azure-deploy-quarkus"
export AZ_RESOURCE_GROUP="rg${AZ_PROJECT_<your initials>}"
export AZ_LOCATION="eastus"
export AZ_CONTAINERAPP="ca${AZ_PROJECT_<your initials>}"
export AZ_CONTAINERAPP_ENV="cae${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_DB_NAME="postgres${AZ_PROJECT_<your initials>}"
export AZ_POSTGRES_USERNAME="<user-name>"
export AZ_POSTGRES_PASSWORD="<secure-password>"
export AZ_POSTGRES_SERVER_NAME="psql${AZ_PROJECT_<your initials>}"

Essas variáveis de ambiente são usadas em todo o restante deste módulo.

Em seguida, crie um grupo de recursos:

az group create \
    --name $AZ_RESOURCE_GROUP \
    --location $AZ_LOCATION

Criar uma instância do Banco de Dados do Azure para PostgreSQL

Você criará um servidor PostgreSQL gerenciado. Execute o comando a seguir para criar uma pequena instância do Banco de Dados do Azure para PostgreSQL:

az postgres flexible-server create \
    --resource-group "$AZ_RESOURCE_GROUP" \
    --location "$AZ_LOCATION" \
    --name "$AZ_POSTGRES_SERVER_NAME" \
    --database-name "$AZ_POSTGRES_DB_NAME" \
    --admin-user "$AZ_POSTGRES_USERNAME" \
    --admin-password "$AZ_POSTGRES_PASSWORD" \
    --public-access "All" \
    --tier "Burstable" \
    --sku-name "Standard_B1ms" \
    --storage-size 32 \
    --version "16"

Esse comando cria um servidor PostgreSQL pequeno que usa as variáveis que você configurou anteriormente.

Configurar o Quarkus para acessar o banco de dados PostgreSQL

Agora você irá conectar o aplicativo Quarkus ao banco de dados PostgreSQL. Para fazer isso, primeiro você precisa obter a cadeia de conexão para o banco de dados:

export POSTGRES_CONNECTION_STRING=$(
    az postgres flexible-server show-connection-string \
    --server-name "$AZ_POSTGRES_SERVER_NAME" \
    --database-name "$AZ_POSTGRES_DB_NAME" \
    --admin-user "$AZ_POSTGRES_USERNAME" \
    --admin-password "$AZ_POSTGRES_PASSWORD" \
    --query "connectionStrings.jdbc" \
    --output tsv
)

export POSTGRES_CONNECTION_STRING_SSL="$POSTGRES_CONNECTION_STRING&ssl=true&sslmode=require"

echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"

Observe a cadeia de conexão retornada.

Configurar o aplicativo Quarkus para se conectar ao banco de dados PostgreSQL

Atualize o arquivo application.properties na pasta src/main/resources do projeto para configurar a cadeia de conexão para o banco de dados PostgreSQL. Para fazer isso, defina a propriedade quarkus.datasource.jdbc.url como o valor $POSTGRES_CONNECTION_STRING_SSL gerado anteriormente. A parte &ssl=true&sslmode=require da cadeia de conexão força o driver a usar o SSL, um requisito para o Banco de Dados do Azure para PostgreSQL.

quarkus.hibernate-orm.database.generation=update
quarkus.datasource.jdbc.url=<the POSTGRES_CONNECTION_STRING_SSL value>

Executar o aplicativo Quarkus localmente para testar a conexão de banco de dados remoto

Use este comando para executar o aplicativo localmente:

./mvnw clean quarkus:dev    # On Mac or Linux
mvnw.cmd clean quarkus:dev  # On Windows

Quando o Quarkus estiver em execução, crie algumas tarefas de pendência usando os seguintes comandos cURL em uma janela de terminal separada:

curl --header "Content-Type: application/json" \
    --request POST \
    --data '{"description":"Take Quarkus MS Learn","details":"Take the MS Learn on deploying Quarkus to Azure Container Apps","done": "true"}' \
    http://127.0.0.1:8080/api/todos

curl --header "Content-Type: application/json" \
    --request POST \
    --data '{"description":"Take Azure Container Apps MS Learn","details":"Take the ACA Learn module","done": "false"}' \
    http://127.0.0.1:8080/api/todos

Em seguida, verifique se as listas de pendências estão no banco de dados acessando o ponto de extremidade GET definido no aplicativo de tarefas pendentes:

curl http://127.0.0.1:8080/api/todos

A seguinte saída deve ser exibida:

[
   {
      "description" : "Take Quarkus MS Learn",
      "details" : "Take the MS Learn on deploying Quarkus to Azure Container Apps",
      "done" : true,
      "id" : 1
   },
   {
      "description" : "Take Azure Container Apps MS Learn",
      "details" : "Take the ACA Learn module",
      "done" : false,
      "id" : 2
   }
]

Se você vir essa saída, executou com êxito o aplicativo Quarkus e se conectou ao banco de dados PostgreSQL remoto.