Alıştırma - Azure Container Apps'i ayarlama

Tamamlandı

Bu ünitede, uygulamanın kaynaklarını içeren bir Azure kaynak grubu oluşturacaksınız. Ardından Azure CLI kullanarak PostgreSQL veritabanını ayarlarsınız. Son olarak, Quarkus uygulamasını uzak PostgreSQL veritabanına erişecek şekilde yapılandıracaksınız. Komutları çalıştırmak için tercihinize göre bir terminal kullanın.

Çalışma ortamını hazırlama

Bazı ortam değişkenleri ayarlamanız gerekir. Oluşturacağınız değişkenler hakkında bazı notlar aşağıdadır:

Değişken Açıklama
AZ_PROJECT Projenin adı. Bu değeri benzersiz tutmak için AZ_PROJECT_<your initials>kullanmanızı öneririz.
AZ_RESOURCE_GROUP Kaynakları barındıran kaynak grubunun adı.
AZ_LOCATION Azure bölgesi. Yaşadığınız yere yakın bir bölge kullanmanızı öneririz. Kullanılabilir bölgelerin listesini görmek için komut istemine az account list-locations girin.
AZ_CONTAINERAPP Kapsayıcıları barındıran Azure Container Apps örneğinin adı.
AZ_CONTAINERAPP_ENV Azure Container Apps ortamının adı.
AZ_POSTGRES_SERVER_NAME PostgreSQL sunucunuzun adı. Sayısal olmayan karakterlere izin verilmez: -, _, !, $, #, %. Ad, Azure genelinde benzersiz olmalıdır. Benzersiz bir tanımlayıcı kullandığınızdan emin olun.
AZ_POSTGRES_DB_NAME PostgreSQL veritabanı adı. PostgreSQL veritabanının varsayılan adı postgres.
AZ_POSTGRES_USERNAME PostgreSQL veritabanı sunucunuz için varsayılan yönetici kullanıcı adı.
AZ_POSTGRES_PASSWORD PostgreSQL veritabanı sunucunuzun varsayılan parolası. Güvenli bir parola kullanın.

Not

Azure kaynaklarınızı istediğiniz şekilde adlandırabilirsiniz, ancak Azure kaynakları için kısaltma örneklerini gözden geçirmenizi öneririz. Bu makalede birçok Azure kaynağı için örnek kısaltmalar sağlanır (örneğin, kaynak grupları için rg ve kapsayıcı uygulamaları için ca).

Değişkenleri ayarlamak için aşağıdaki komutları kullanın. Önceki tabloda açıklandığı gibi değerleri değiştirdiğinizden emin olun.

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

Bu ortam değişkenleri bu modülün geri kalanında kullanılır.

Ardından bir kaynak grubu oluşturun:

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

PostgreSQL için Azure Veritabanı örneği oluşturma

Şimdi yönetilen bir PostgreSQL sunucusu oluşturacaksınız. PostgreSQL için Azure Veritabanı'nın küçük bir örneğini oluşturmak için aşağıdaki komutu çalıştırın:

Daha önce hiç PostgreSQL Sunucusu oluşturmadıysanız sağlayıcıyı kaydetmeniz gerekir. PostgreSQL sağlayıcısını kaydetmek için aşağıdaki komutu çalıştırın:

az provider register --namespace Microsoft.DBforPostgreSQL

Ardından PostgreSQL Sunucusunu oluşturun.

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"

Bu komut, daha önce ayarladığınız değişkenleri kullanan küçük bir PostgreSQL sunucusu oluşturur.

Quarkus'ı PostgreSQL veritabanına erişecek şekilde yapılandırma

Şimdi Quarkus uygulamasını PostgreSQL veritabanına bağlayacaksınız. Bunu yapmak için önce veritabanının bağlantı dizesini almanız gerekir:

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"

Döndürülen bağlantı dizesini not edin.

Not

Microsoft, kullanılabilir en güvenli kimlik doğrulama akışının kullanılmasını önerir. Veritabanları, önbellekler, mesajlaşma veya yapay zeka hizmetleri gibi bu yordamda açıklanan kimlik doğrulama akışı, uygulamaya yüksek düzeyde güven gerektirir ve diğer akışlarda mevcut olmayan riskleri taşır. Bu akışı yalnızca parolasız veya anahtarsız bağlantılar için yönetilen kimlikler gibi daha güvenli seçenekler uygun olmadığında kullanın. Yerel makine işlemleri için parolasız veya anahtarsız bağlantılar için kullanıcı kimliklerini tercih edin.

Quarkus uygulamasını PostgreSQL veritabanına bağlanacak şekilde yapılandırma

PostgreSQL veritabanına bağlantı dizesini yapılandırmak için projenin application.properties klasöründeki src/main/resources dosyasını güncelleştirin. Bunu yapmak için quarkus.datasource.jdbc.url özelliğini önceki çıkış $POSTGRES_CONNECTION_STRING_SSL değerine ayarlayın. Bağlantı dizesinin &ssl=true&sslmode=require bölümü, sürücüyü PostgreSQL için Azure Veritabanı gereksinimi olan SSL kullanmaya zorlar.

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

Uzak veritabanı bağlantısını test etmek için Quarkus uygulamasını yerel olarak çalıştırma

Uygulamayı yerel olarak çalıştırmak için şu komutu kullanın:

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

Quarkus çalışırken, ayrı bir terminal penceresinde aşağıdaki cURL komutlarını kullanarak birkaç yapılacak iş oluşturun:

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

Ardından, to-do uygulamasında tanımlanan GET uç noktasına erişerek yapılacakların veritabanında olup olmadığını denetleyin:

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

Aşağıdaki çıkışı görmeniz gerekir:

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

Bu çıkışı görürseniz Quarkus uygulamasını başarıyla çalıştırmış ve uzak PostgreSQL veritabanına bağlanmış olursunuz.