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

Завершено

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

Подготовка среды выполнения

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

«Переменная» Description
AZ_PROJECT Имя проекта. Чтобы сохранить это значение уникальным, рекомендуется использовать AZ_PROJECT_<your initials>.
AZ_RESOURCE_GROUP Имя группы ресурсов, содержащей ресурсы.
AZ_LOCATION Регион Azure. Рекомендуется использовать регион, близкий к месту жизни. Чтобы просмотреть список доступных регионов, введите az account list-locations в командной строке.
AZ_CONTAINERAPP Имя экземпляра приложений контейнеров Azure, в котором хранятся контейнеры.
AZ_CONTAINERAPP_ENV Имя среды приложений контейнеров Azure.
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:

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&sslmode=require"

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 для 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, определенной в приложении для выполнения:

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

Должен появиться следующий результат:

[
   {
      "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
   }
]

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