Упражнение. Настройка приложений контейнеров Azure

Завершено

В этом уроке вы создадите группу ресурсов Azure, содержащую ресурсы для приложения. Затем вы настроили базу данных PostgreSQL с помощью Azure CLI. Наконец, вы настроите приложение Quarkus для доступа к удаленной базе данных PostgreSQL. Используйте терминал для выполнения команд.

Подготовка рабочей среды

Необходимо настроить некоторые переменные среды. Ниже приведены некоторые заметки о создаваемых переменных:

Переменная Описание
AZ_PROJECT Имя проекта. Чтобы сохранить это значение уникальным, рекомендуется использовать AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Имя группы ресурсов, содержащей ресурсы.
AZ_LOCATION Регион Azure. Рекомендуется использовать регион, близкий к месту жизни. Чтобы просмотреть список доступных регионов, введите az account list-locations в командной строке.
AZ_CONTAINERAPP Имя экземпляра Azure Container Apps, в котором размещаются контейнеры.
AZ_CONTAINERAPP_ENV Название среды Azure Container Apps.
AZ_POSTGRES_SERVER_NAME Имя сервера PostgreSQL. Неалфавитно-цифровые символы не разрешены: -, _, !, $, #, %. Имя должно быть уникальным в Azure. Обязательно используйте уникальный идентификатор.
AZ_POSTGRES_DB_NAME Имя базы данных PostgreSQL. Имя базы данных PostgreSQL по умолчанию — postgres.
AZ_POSTGRES_USERNAME Имя пользователя администратора по умолчанию для сервера базы данных PostgreSQL.
AZ_POSTGRES_PASSWORD Пароль по умолчанию для сервера базы данных PostgreSQL. Используйте безопасный пароль.

Заметка

Вы можете назовите ресурсы Azure любым способом, но рекомендуется просмотреть примеры сокращения для ресурсов Azure. В этой статье приведены примеры сокращений для многих ресурсов Azure (например, rg для групп ресурсов и ca для приложений контейнеров).

Используйте следующие команды, чтобы настроить переменные. Обязательно измените значения, как описано в предыдущей таблице.

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>}"

Эти переменные среды используются в остальной части этого модуля.

Затем создайте группу ресурсов:

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

Создание экземпляра Базы данных Azure для PostgreSQL

Теперь вы создадите управляемый сервер PostgreSQL. Выполните следующую команду, чтобы создать небольшой экземпляр Базы данных Azure для PostgreSQL:

Если вы еще не создали сервер PostgreSQL, необходимо зарегистрировать поставщика. Чтобы зарегистрировать поставщика PostgreSQL, выполните следующую команду:

az provider register --namespace Microsoft.DBforPostgreSQL

Затем создайте сервер 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"

Эта команда создает небольшой сервер PostgreSQL, использующий переменные, настроенные ранее.

Настройка Quarkus для доступа к базе данных PostgreSQL

Теперь вы подключите приложение Quarkus к базе данных PostgreSQL. Для этого сначала необходимо получить строку подключения для базы данных:

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"

echo "POSTGRES_CONNECTION_STRING_SSL=$POSTGRES_CONNECTION_STRING_SSL"

Обратите внимание на строку подключения, которая возвращена.

Заметка

Корпорация Майкрософт рекомендует использовать самый безопасный поток проверки подлинности. Поток проверки подлинности, описанный в этой процедуре, например для баз данных, кэшей, сообщений или служб ИИ, требует высокой степени доверия к приложению и несет риски, не присутствующих в других потоках. Используйте этот поток, только если более безопасные варианты, такие как управляемые удостоверения для подключений без пароля или без ключа, недоступны. Для локальных операций компьютера предпочитайте удостоверения пользователей для бессерверных или бессерверных подключений.

Настройка приложения Quarkus для подключения к базе данных PostgreSQL

Обновите файл application.properties в папке src/main/resources проекта, чтобы настроить строку подключения к базе данных PostgreSQL. Для этого задайте для свойства quarkus.datasource.jdbc.url значение ранее выходного $POSTGRES_CONNECTION_STRING_SSL. Часть строки подключения &ssl=true&sslmode=require принуждает драйвер использовать SSL, что является требованием для Azure Database для PostgreSQL.

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

Запустите приложение Quarkus локально, чтобы проверить подключение к удаленной базе данных

Используйте эту команду для локального запуска приложения:

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

При работе Quarkus создайте несколько задач, используя следующие команды "cURL" в отдельном окне терминала:

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

Затем убедитесь, что задачи находятся в базе данных, получая доступ к конечной точке GET, определенной в приложении to-do.

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

Вы увидите следующие выходные данные:

[
  {
    "id": 1,
    "description": "Take Quarkus MS Learn",
    "details": "Take the MS Learn on deploying Quarkus to Azure Container Apps",
    "done": true,
    "createdAt": "2025-02-26T08:03:28.390854Z"
  },
  {
    "id": 2,
    "description": "Take Azure Container Apps MS Learn",
    "details": "Take the ACA Learn module",
    "done": false,
    "createdAt": "2025-02-26T08:03:34.142249Z"
  }
]

Если вы видите эти выходные данные, вы успешно запустите приложение Quarkus и подключитесь к удаленной базе данных PostgreSQL.