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'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
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 olarakeastuskullanabilirsiniz, 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.
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
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.
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_NAMEiç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_NAMEadlı bir veritabanı kullanıcısı ekleyin ve bu kullanıcıya veritabanı$AZ_DATABASE_NAMEtüm ayrıcalıklarını verin.Uygulamaya iki yapılandırma ekleyin:
$AZ_SPRING_APPS_APP_NAME,spring.datasource.urlvespring.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çinaz provider register --namespace Microsoft.ServiceLinkerkomutunu ç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ö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