Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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 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 bir hesabınız yoksa ücretsiz bir hesap oluşturun.
- Azure CLI sürüm 2.45.0 veya üzeri.
- Azure Spring Apps uzantısı. uzantıyı şu komutu kullanarak yükleyin:
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ı çalıştırmayı seçerseniz MySQL komut satırı istemcisi. Popüler bir istemci aracı olan mysql.exekomut satırı aracını kullanarak Azure Cloud Shell ile sunucunuza bağlanabilirsiniz. Alternatif olarak, yerel ortamınızda
mysqlkomut 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 kullanabilirsinizeastus, ancak yaşadığınız yere daha yakın bir bölge yapılandırabilirsiniz.az account list-locationskullanarak kullanılabilir bölgelerin tam listesini görüntüleyin. -
<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.
Aşağıdaki komutu kullanarak Azure CLI'yi Azure Spring Apps uzantısıyla güncelleştirin:
az extension update --name springAş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.
-
MySQL için Azure Veritabanı
-
PostgreSQL için Azure Veritabanı
-
Azure SQL Veritabanı
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
veya admin-password parametreleri sağlamazsanızadmin-user, sistem varsayılan 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 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 çalıştırır:
Azure Spring Apps tarafından barındırılan uygulama
$AZ_SPRING_APPS_APP_NAMEiçin sistem tarafından atanan yönetilen kimliği etkinleştirir.Microsoft Entra yöneticisini geçerli oturum açmış kullanıcıya ayarlar.
1. adımda oluşturulan yönetilen kimlik için adlı
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAMEbir veritabanı kullanıcısı ekler ve veritabanının$AZ_DATABASE_NAMEtüm ayrıcalıklarını bu kullanıcıya verir.Uygulamaya
$AZ_SPRING_APPS_APP_NAMEiki yapılandırma ekler:spring.datasource.urlvespring.datasource.username.Not
Hata iletisini
The subscription is not registered to use Microsoft.ServiceLinkergörürseniz, Service Connector 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.
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.
Ö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-
MySQL için Azure Veritabanı
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çin
Spring Cloud Azure geliştirici kılavuzunun Başlarken bölümüne bakın.-
MySQL için Azure Veritabanı
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-
MySQL için Azure Veritabanı
Maven kullanarak projeyi derlemek için aşağıdaki komutları kullanın:
cd passwordless-sample ./mvnw clean package -DskipTestsUygulamanı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.jarAş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 tableAşağıdaki örneğe benzer bir çıktı görürsünüz.
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 kullanın. İ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