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.

Dekont

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

Önkoşullar

  • Azure aboneliği. Henüz bir hesabınız yoksa başlamadan önce ücretsiz bir 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 Geliştirme Seti (JDK), sürüm 8, 11 veya 17.
  • Git istemcisi.
  • cURL veya işlevselliği test etmek için benzer bir HTTP yardımcı programı.
  • MySQL için Azure Veritabanı ç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, komut satırını yerel ortamınızda kullanabilirsiniz mysql .
  • Azure SQL Veritabanı çalıştırmayı seçerseniz SQL Server için ODBC Sürücüsü 18.

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

İlk olarak, aşağıdaki komutları kullanarak bazı ortam değişkenleri ayarlayalım:

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 bölgeyi, yaşadığınız yere yakın bir yerde yapılandırmanızı öneririz. kullanarak az account list-locationskullanı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>: Azure'da benzersiz olması gereken, kullanıcı tarafından atanan yönetilen kimlik sunucusunun adı.

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.

  1. Aşağıdaki komutu kullanarak bir 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
    

Dekont

veya admin-password parametreleri sağlamazsanızadmin-user, sistem varsayılan olarak bir yönetici kullanıcı veya rastgele bir 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 atanmış bir uygulama oluşturma

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ğlan

İlk olarak Azure CLI için Hizmet Bağlan veya parolasız uzantısını yükleyin:

az extension add --name serviceconnector-passwordless --upgrade

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 Sunucu iç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önetici istrator veya Privileged Role Yönetici istrator'ınızdan bu kimlik için aşağıdaki izinleri vermesini isteyin: User.Read.All, GroupMember.Read.Allve Application.Read.ALL. Daha fazla bilgi için Active Directory kimlik doğrulamasının İ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 Service Bağlan or 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 adlı $AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME bir veritabanı kullanıcısı ekleyin ve veritabanının $AZ_DATABASE_NAME tüm ayrıcalıklarını bu kullanıcıya verin.

  • Uygulamaya $AZ_SPRING_APPS_APP_NAMEiki yapılandırma ekleyin: spring.datasource.url ve spring.datasource.username.

    Dekont

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

Uygulama 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:

    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:

    <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.

    Dekont

    Spring Cloud Azure kitaplık sürümlerini ürün reçetesi (BOM) kullanarak yönetme hakkında daha fazla bilgi için Spring 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:

    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. Uygulama için 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 etme

Uygulamayı test etmek için cURL’yi 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