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

Concluído

Nesta unidade, você cria um grupo de recursos do Azure que contém os recursos para o aplicativo. Em seguida, configure o banco de dados PostgreSQL usando a CLI do Azure. Finalmente, você configura o aplicativo Quarkus para acessar o banco de dados remoto PostgreSQL. Use um terminal de sua escolha para executar os comandos.

Preparar o ambiente de trabalho

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

Variável Description
AZ_PROJECT O nome do projeto. Para manter esse valor exclusivo, recomendamos que você use AZ_PROJECT_<your initials>o .
AZ_RESOURCE_GROUP O nome do grupo de recursos que contém os recursos.
AZ_LOCATION A região do Azure. Recomendamos que você use uma região próxima de onde você mora. Para ver a lista de regiões disponíveis, digite 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 do Azure Container Apps.
AZ_POSTGRES_SERVER_NAME O nome do seu servidor PostgreSQL. Não são permitidos caracteres não alfanuméricos: -, _, !, $, #, %. O nome deve ser exclusivo no 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 de usuário administrador padrão para seu servidor de banco de dados PostgreSQL.
AZ_POSTGRES_PASSWORD A senha padrão para seu servidor de banco de dados PostgreSQL. Utilize uma palavra-passe segura.

Nota

Você pode nomear seus recursos do Azure da maneira que desejar, mas recomendamos que você revise 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 durante o resto deste módulo.

Depois, 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

Agora você criará um servidor PostgreSQL gerenciado. Execute o seguinte comando 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"

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

Configurar o Quarkus para acessar o banco de dados PostgreSQL

Agora você 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 application.properties src/main/resources arquivo na pasta do projeto para configurar a cadeia de conexão com o banco de dados PostgreSQL. Para fazer isso, defina a quarkus.datasource.jdbc.url propriedade para o valor de saída $POSTGRES_CONNECTION_STRING_SSL anterior. A &ssl=true&sslmode=require parte da cadeia de conexão força o driver a usar 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>

Execute 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 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 tarefas estão no banco de dados acessando o ponto de extremidade GET definido no aplicativo de tarefas:

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

Deverá ver o seguinte resultado:

[
   {
      "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, você executou com êxito o aplicativo Quarkus e se conectou ao banco de dados remoto PostgreSQL.