Aracılığıyla paylaş


Öğretici: Azure veritabanına parolasız bağlantıyla Azure Spring Apps'e Spring uygulaması dağıtma

Bu makalede, Azure Spring Apps'e dağıtılan Spring Boot uygulamalarında Azure veritabanlarına parolasız bağlantıların nasıl kullanılacağı gösterilmektedir.

Bu öğreticide, Azure portalını veya Azure CLI'yı kullanarak aşağıdaki görevleri tamamlaacaksınız. Her iki yöntem de aşağıdaki yordamlarda açıklanmıştır.

  • Azure Spring Apps'in bir örneğini sağlayın.
  • Uygulamaları derleme ve Azure Spring Apps'e dağıtma.
  • Yönetilen kimliği kullanarak Azure veritabanlarına bağlı uygulamaları çalıştırın.

Not

Bu öğretici R2DBC için çalışmaz.

Önkoşullar

  • Bir Azure aboneliği. Henüz hesabınız yoksa başlamadan önce ücretsiz hesap oluşturun.
  • Azure CLI 2.45.0 veya üzeri gereklidir.
  • Azure Spring Apps uzantısı. Uzantıyı şu komutu kullanarak yükleyebilirsiniz: az extension add --name spring.
  • Java Development Kit (JDK), sürüm 8, 11 veya 17.
  • Git istemcisi.
  • İşlevselliği test etmek için cURL veya benzer bir HTTP yardımcı programı.
  • MySQL için Azure Veritabanı'nı çalıştırmayı seçerseniz MySQL komut satırı istemcisi. Popüler bir istemci aracı olan mysql.exe komut satırı aracını kullanarak Azure Cloud Shell ile sunucunuza bağlanabilirsiniz. Alternatif olarak, yerel ortamınızda mysql komut satırını kullanabilirsiniz.
  • SQL Server için ODBC Sürücüsü 18 Azure SQL Veritabanı'nı çalıştırmayı seçerseniz.

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

İlk olarak, aşağıdaki komutları kullanarak bazı ortam değişkenlerini ayarlayın:

export AZ_RESOURCE_GROUP=passwordless-tutorial-rg
export AZ_DATABASE_SERVER_NAME=<YOUR_DATABASE_SERVER_NAME>
export AZ_DATABASE_NAME=demodb
export AZ_LOCATION=<YOUR_AZURE_REGION>
export AZ_SPRING_APPS_SERVICE_NAME=<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
export AZ_SPRING_APPS_APP_NAME=hellospring
export AZ_DB_ADMIN_USERNAME=<YOUR_DB_ADMIN_USERNAME>
export AZ_DB_ADMIN_PASSWORD=<YOUR_DB_ADMIN_PASSWORD>
export AZ_USER_IDENTITY_NAME=<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>

Yer tutucuları, bu makale boyunca kullanılan aşağıdaki değerlerle değiştirin:

  • <YOUR_DATABASE_SERVER_NAME>: Azure Veritabanı sunucunuzun adıdır ve azure genelinde benzersiz olmalıdır.
  • <YOUR_AZURE_REGION>: Kullanmak istediğiniz Azure bölgesi. varsayılan olarak eastus kullanabilirsiniz, ancak yaşadığınız yere daha yakın bir bölge yapılandırmanızı öneririz. az account list-locationskullanarak kullanılabilir bölgelerin tam listesini görebilirsiniz.
  • <YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: Azure Spring Apps örneğinizin adı. Ad 4 ile 32 karakter uzunluğunda olmalıdır ve yalnızca küçük harf, sayı ve kısa çizgi içerebilir. Hizmet adının ilk karakteri bir harf, son karakter ise harf veya sayı olmalıdır.
  • <AZ_DB_ADMIN_USERNAME>: Azure veritabanı sunucunuzun yönetici kullanıcı adı.
  • <AZ_DB_ADMIN_PASSWORD>: Azure veritabanı sunucunuzun yönetici parolası.
  • <YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: Kullanıcı tarafından atanan yönetilen kimlik sunucunuzun adıdır ve azure genelinde benzersiz olmalıdır.

Azure Spring Apps örneği sağlama

Azure Spring Apps örneğini sağlamak için aşağıdaki adımları kullanın.

  1. Aşağıdaki komutu kullanarak Azure CLI'yi Azure Spring Apps uzantısıyla güncelleştirin:

    az extension update --name spring
    
  2. Aşağıdaki komutları kullanarak Azure CLI'da oturum açın ve etkin aboneliğinizi seçin:

    az login
    az account list --output table
    az account set --subscription <name-or-ID-of-subscription>
    
  3. Azure Spring Apps hizmetinizi ve Azure Spring Apps hizmetinin bir örneğini içeren bir kaynak grubu oluşturmak için aşağıdaki komutları kullanın:

    az group create \
        --name $AZ_RESOURCE_GROUP \
        --location $AZ_LOCATION
    az spring create \
        --resource-group $AZ_RESOURCE_GROUP \
        --name $AZ_SPRING_APPS_SERVICE_NAME
    

Azure veritabanı örneği oluşturma

Azure Veritabanı örneği sağlamak için aşağıdaki adımları kullanın.

  • MySQL için Azure Veritabanı
  • PostgreSQL için Azure Veritabanı
  • Azure SQL Veritabanı
  1. Aşağıdaki komutu kullanarak MySQL için Azure Veritabanı sunucusu oluşturun:

    az mysql flexible-server create \
        --resource-group $AZ_RESOURCE_GROUP \
        --name $AZ_DATABASE_SERVER_NAME \
        --location $AZ_LOCATION \
        --admin-user $AZ_DB_ADMIN_USERNAME \
        --admin-password $AZ_DB_ADMIN_PASSWORD \
        --yes
    

Not

admin-user veya admin-password parametreleri sağlamazsanız sistem varsayılan olarak bir yönetici kullanıcı veya rastgele yönetici parolası oluşturur.

  1. Aşağıdaki komutu kullanarak yeni bir veritabanı oluşturun:

    az mysql flexible-server db create \
        --resource-group $AZ_RESOURCE_GROUP \
        --database-name $AZ_DATABASE_NAME \
        --server-name $AZ_DATABASE_SERVER_NAME
    

Genel uç nokta atanılmış bir uygulama oluşturun

Uygulamayı oluşturmak için aşağıdaki komutu kullanın.

az spring app create \
    --resource-group $AZ_RESOURCE_GROUP \
    --service $AZ_SPRING_APPS_SERVICE_NAME \
    --name $AZ_SPRING_APPS_APP_NAME \
    --runtime-version=Java_17
    --assign-endpoint true

Azure Spring Apps'i Azure veritabanına bağlama

İlk olarak Azure CLI için Service Connector parolasız uzantıyı yükleyin:

az extension add --name serviceconnector-passwordless --upgrade
  • MySQL için Azure Veritabanı
  • PostgreSQL için Azure Veritabanı
  • Azure SQL Veritabanı

Ardından aşağıdaki komutu kullanarak Microsoft Entra kimlik doğrulaması için kullanıcı tarafından atanan bir yönetilen kimlik oluşturun. Daha fazla bilgi için bkz. MySQL için Azure Veritabanı - Esnek Sunucuiçin Microsoft Entra kimlik doğrulamasını ayarlama .

export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
    --name $AZ_USER_IDENTITY_NAME \
    --resource-group $AZ_RESOURCE_GROUP \
    --query id \
    --output tsv)

Önemli

Kullanıcı tarafından atanan kimliği oluşturduktan sonra, Genel Yöneticinizden veya Ayrıcalıklı Rol Yöneticisi bu kimlik için şu izinleri vermesini isteyin: User.Read.All, GroupMember.Read.Allve Application.Read.ALL. Daha fazla bilgi için Active Directory kimlik doğrulamasıİzinler bölümüne bakın.

Ardından, veritabanına parolasız bir bağlantı oluşturmak için aşağıdaki komutu kullanın.

az spring connection create mysql-flexible \
    --resource-group $AZ_RESOURCE_GROUP \
    --service $AZ_SPRING_APPS_SERVICE_NAME \
    --app $AZ_SPRING_APPS_APP_NAME \
    --target-resource-group $AZ_RESOURCE_GROUP \
    --server $AZ_DATABASE_SERVER_NAME \
    --database $AZ_DATABASE_NAME \
    --system-identity mysql-identity-id=$AZ_IDENTITY_RESOURCE_ID

Bu Hizmet Bağlayıcısı komutu arka planda aşağıdaki görevleri yapar:

  • Azure Spring Apps tarafından barındırılan uygulama $AZ_SPRING_APPS_APP_NAME için sistem tarafından atanan yönetilen kimliği etkinleştirin.

  • Microsoft Entra yöneticisini geçerli oturum açmış kullanıcı olarak ayarlayın.

  • 1. adımda oluşturulan yönetilen kimlik için $AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME adlı bir veritabanı kullanıcısı ekleyin ve bu kullanıcıya veritabanı $AZ_DATABASE_NAME tüm ayrıcalıklarını verin.

  • Uygulamaya iki yapılandırma ekleyin: $AZ_SPRING_APPS_APP_NAME, spring.datasource.url ve spring.datasource.username.

    Not

    The subscription is not registered to use Microsoft.ServiceLinkerhata iletisini görürseniz Hizmet Bağlayıcısı kaynak sağlayıcısını kaydetmek için az provider register --namespace Microsoft.ServiceLinker komutunu çalıştırın ve ardından bağlantı komutunu yeniden çalıştırın.

Uygulamayı derleme ve dağıtma

Aşağıdaki adımlarda örnek uygulamayı indirme, yapılandırma, derleme ve dağıtma adımları açıklanmaktadır.

  1. Örnek kod deposunu kopyalamak için aşağıdaki komutu kullanın:

    • MySQL için Azure Veritabanı
    • PostgreSQL için Azure Veritabanı
    • Azure SQL Veritabanı
    git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
    
  2. pom.xml dosyanıza aşağıdaki bağımlılığı ekleyin:

    • MySQL için Azure Veritabanı
    • PostgreSQL için Azure Veritabanı
    • Azure SQL Veritabanı
    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
    </dependency>
    

    Bu bağımlılık Spring Cloud Azure başlatıcısı için destek ekler.

    Not

    Spring Cloud Azure kitaplık sürümlerini bir ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi içinSpring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.

  3. application.properties dosyasını güncelleştirmek için aşağıdaki komutu kullanın:

    • MySQL için Azure Veritabanı
    • PostgreSQL için Azure Veritabanı
    • Azure SQL Veritabanı
    cat << EOF > passwordless-sample/src/main/resources/application.properties
    
    logging.level.org.springframework.jdbc.core=DEBUG
    spring.datasource.azure.passwordless-enabled=true
    spring.sql.init.mode=always
    
    EOF
    
  4. Maven kullanarak projeyi derlemek için aşağıdaki komutları kullanın:

    cd passwordless-sample
    ./mvnw clean package -DskipTests
    
  5. Uygulamanın target/demo-0.0.1-SNAPSHOT.jar dosyasını dağıtmak için aşağıdaki komutu kullanın:

    az spring app deploy \
        --name $AZ_SPRING_APPS_APP_NAME \
        --service $AZ_SPRING_APPS_SERVICE_NAME \
        --resource-group $AZ_RESOURCE_GROUP \
        --artifact-path target/demo-0.0.1-SNAPSHOT.jar
    
  6. Aşağıdaki komutu kullanarak dağıtımdan sonra uygulama durumunu sorgula:

    az spring app list \
        --service $AZ_SPRING_APPS_SERVICE_NAME \
        --resource-group $AZ_RESOURCE_GROUP \
        --output table
    

    Aşağıdaki örneğe benzer bir çıktı görmeniz gerekir.

    Name               Location    ResourceGroup    Production Deployment    Public Url                                           Provisioning Status    CPU    Memory    Running Instance    Registered Instance    Persistent Storage
    -----------------  ----------  ---------------  -----------------------  ---------------------------------------------------  ---------------------  -----  --------  ------------------  ---------------------  --------------------
    <app name>         eastus      <resource group> default                                                                       Succeeded              1      2         1/1                 0/1                    -
    

Uygulamayı test edin

Uygulamayı test etmek için cURL kullanabilirsiniz. İlk olarak, aşağıdaki komutu kullanarak veritabanında yeni bir "yapılacaklar" öğesi oluşturun:

curl --header "Content-Type: application/json" \
    --request POST \
    --data '{"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done": "true"}' \
        https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io

Bu komut, aşağıdaki örnekte gösterildiği gibi oluşturulan öğeyi döndürür:

{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}

Ardından, aşağıdaki cURL isteğini kullanarak verileri alın:

curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io

Bu komut, aşağıdaki örnekte gösterildiği gibi, oluşturduğunuz öğe de dahil olmak üzere "yapılacaklar" öğelerinin listesini döndürür:

[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]

Kaynakları temizleme

Bu öğretici sırasında kullanılan tüm kaynakları temizlemek için aşağıdaki komutu kullanarak kaynak grubunu silin:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

Sonraki adımlar