Öğ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 olarakeastus
kullanabilirsiniz ancak bölgeyi, yaşadığınız yere yakın bir yerde yapılandırmanızı öneririz. kullanarakaz account list-locations
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>
: 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.
Aşağıdaki komutu kullanarak Azure CLI'yi Azure Spring Apps uzantısıyla güncelleştirin:
az extension update --name spring
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>
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.
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.
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.All
ve 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_NAME
iki yapılandırma ekleyin:spring.datasource.url
vespring.datasource.username
.Dekont
Hata iletisini
The subscription is not registered to use Microsoft.ServiceLinker
görürseniz, Service Bağlan veya kaynak sağlayıcısını kaydetmek için komutunuaz 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.
Ö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
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.
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
Maven kullanarak projeyi derlemek için aşağıdaki komutları kullanın:
cd passwordless-sample ./mvnw clean package -DskipTests
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
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
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin