Samouczek: wdrażanie aplikacji Spring w usłudze Azure Spring Apps przy użyciu połączenia bez hasła z bazą danych platformy Azure
W tym artykule pokazano, jak używać połączeń bez hasła z bazami danych platformy Azure w aplikacjach Spring Boot wdrożonych w usłudze Azure Spring Apps.
W tym samouczku wykonasz następujące zadania przy użyciu witryny Azure Portal lub interfejsu wiersza polecenia platformy Azure. Obie metody zostały wyjaśnione w poniższych procedurach.
- Aprowizuj wystąpienie usługi Azure Spring Apps.
- Tworzenie i wdrażanie aplikacji w usłudze Azure Spring Apps.
- Uruchamianie aplikacji połączonych z bazami danych platformy Azure przy użyciu tożsamości zarządzanej.
Uwaga
Ten samouczek nie działa w przypadku protokołu R2DBC.
Wymagania wstępne
- Subskrypcja platformy Azure. Jeśli jeszcze go nie masz, przed rozpoczęciem utwórz bezpłatne konto .
- Wymagany interfejs wiersza polecenia platformy Azure w wersji 2.45.0 lub nowszej.
- Rozszerzenie Azure Spring Apps. Rozszerzenie można zainstalować za pomocą polecenia :
az extension add --name spring
. - Zestaw Java Development Kit (JDK), wersja 8, 11 lub 17.
- Klient usługi Git.
- cURL lub podobne narzędzie HTTP do testowania funkcjonalności.
- Klient wiersza polecenia MySQL, jeśli zdecydujesz się uruchomić usługę Azure Database for MySQL. Połączenie z serwerem można nawiązać z usługą Azure Cloud Shell przy użyciu popularnego narzędzia klienckiego — narzędzia wiersza polecenia mysql.exe . Alternatywnie możesz użyć
mysql
wiersza polecenia w środowisku lokalnym. - Sterownik ODBC 18 dla programu SQL Server , jeśli zdecydujesz się uruchomić usługę Azure SQL Database.
Przygotowywanie środowiska roboczego
Najpierw skonfiguruj niektóre zmienne środowiskowe za pomocą następujących poleceń:
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>
Zastąp symbole zastępcze następującymi wartościami, które są używane w tym artykule:
<YOUR_DATABASE_SERVER_NAME>
: nazwa serwera usługi Azure Database, który powinien być unikatowy na platformie Azure.<YOUR_AZURE_REGION>
: region platformy Azure, którego chcesz użyć. Możesz domyślnie zastosować regioneastus
, ale zalecamy skonfigurowanie regionu bliżej Twojego miejsca zamieszkania. Pełną listę dostępnych regionów można wyświetlić przy użyciu poleceniaaz account list-locations
.<YOUR_AZURE_SPRING_APPS_SERVICE_NAME>
: nazwa wystąpienia usługi Azure Spring Apps. Nazwa musi mieć długość od 4 do 32 znaków i może zawierać tylko małe litery, cyfry i łączniki. Pierwszy znak nazwy usługi musi być literą, a ostatni znak musi być literą lub cyfrą.<AZ_DB_ADMIN_USERNAME>
: nazwa użytkownika administratora serwera bazy danych platformy Azure.<AZ_DB_ADMIN_PASSWORD>
: hasło administratora serwera bazy danych platformy Azure.<YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>
: nazwa serwera tożsamości zarządzanej przypisanej przez użytkownika, która powinna być unikatowa na platformie Azure.
Aprowizuj wystąpienie usługi Azure Spring Apps
Wykonaj poniższe kroki, aby aprowizować wystąpienie usługi Azure Spring Apps.
Zaktualizuj interfejs wiersza polecenia platformy Azure za pomocą rozszerzenia Azure Spring Apps, używając następującego polecenia:
az extension update --name spring
Zaloguj się do interfejsu wiersza polecenia platformy Azure i wybierz aktywną subskrypcję przy użyciu następujących poleceń:
az login az account list --output table az account set --subscription <name-or-ID-of-subscription>
Użyj następujących poleceń, aby utworzyć grupę zasobów zawierającą usługę Azure Spring Apps i wystąpienie usługi Azure Spring Apps:
az group create \ --name $AZ_RESOURCE_GROUP \ --location $AZ_LOCATION az spring create \ --resource-group $AZ_RESOURCE_GROUP \ --name $AZ_SPRING_APPS_SERVICE_NAME
Tworzenie wystąpienia bazy danych platformy Azure
Wykonaj poniższe kroki, aby aprowizować wystąpienie usługi Azure Database.
Utwórz serwer usługi Azure Database for MySQL przy użyciu następującego polecenia:
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
Uwaga
Jeśli nie podasz parametrów lub admin-password
nie podasz admin-user
parametrów, system domyślnie wygeneruje domyślnego użytkownika administratora lub losowego hasła administratora.
Utwórz nową bazę danych przy użyciu następującego polecenia:
az mysql flexible-server db create \ --resource-group $AZ_RESOURCE_GROUP \ --database-name $AZ_DATABASE_NAME \ --server-name $AZ_DATABASE_SERVER_NAME
Tworzenie aplikacji z przypisanym publicznym punktem końcowym
Użyj następującego polecenia, aby utworzyć aplikację.
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
Połączenie azure Spring Apps do bazy danych platformy Azure
Najpierw zainstaluj rozszerzenie service Połączenie or passwordless dla interfejsu wiersza polecenia platformy Azure:
az extension add --name serviceconnector-passwordless --upgrade
Następnie użyj następującego polecenia, aby utworzyć tożsamość zarządzaną przypisaną przez użytkownika na potrzeby uwierzytelniania firmy Microsoft Entra. Aby uzyskać więcej informacji, zobacz Konfigurowanie uwierzytelniania entra firmy Microsoft dla usługi Azure Database for MySQL — serwer elastyczny.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Ważne
Po utworzeniu tożsamości przypisanej przez użytkownika poproś administratora globalnego Administracja istratora lub rolę uprzywilejowaną Administracja istrator, aby przyznać następujące uprawnienia dla tej tożsamości: User.Read.All
, GroupMember.Read.All
i Application.Read.ALL
. Aby uzyskać więcej informacji, zobacz sekcję Uprawnienia uwierzytelniania usługi Active Directory.
Następnie użyj następującego polecenia, aby utworzyć połączenie bez hasła z bazą danych.
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
To polecenie usługi Połączenie or wykonuje następujące zadania w tle:
Włącz tożsamość zarządzaną przypisaną przez system dla aplikacji hostowanej przez usługę
$AZ_SPRING_APPS_APP_NAME
Azure Spring Apps.Ustaw administratora firmy Microsoft Entra na bieżącego zalogowanego użytkownika.
Dodaj użytkownika bazy danych o nazwie dla
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
tożsamości zarządzanej utworzonej w kroku 1 i nadaj temu użytkownikowi wszystkie uprawnienia bazy danych$AZ_DATABASE_NAME
.Dodaj dwie konfiguracje do aplikacji
$AZ_SPRING_APPS_APP_NAME
:spring.datasource.url
ispring.datasource.username
.Uwaga
Jeśli zostanie wyświetlony komunikat
The subscription is not registered to use Microsoft.ServiceLinker
o błędzie , uruchom polecenieaz provider register --namespace Microsoft.ServiceLinker
, aby zarejestrować dostawcę zasobów service Połączenie or, a następnie ponownie uruchom polecenie połączenia.
Kompilowanie i wdrażanie aplikacji
W poniższych krokach opisano sposób pobierania, konfigurowania, kompilowania i wdrażania przykładowej aplikacji.
Użyj następującego polecenia, aby sklonować przykładowe repozytorium kodu:
git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
Dodaj następującą zależność do pliku pom.xml :
<dependency> <groupId>com.azure.spring</groupId> <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId> </dependency>
Ta zależność dodaje obsługę szablonu startowego Spring Cloud Azure.
Uwaga
Aby uzyskać więcej informacji na temat zarządzania wersjami bibliotek platformy Azure spring Cloud przy użyciu rachunku materiałów (BOM), zobacz sekcję Wprowadzenie w przewodniku deweloperów platformy Azure Spring Cloud.
Użyj następującego polecenia, aby zaktualizować plik application.properties :
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
Użyj następujących poleceń, aby skompilować projekt przy użyciu narzędzia Maven:
cd passwordless-sample ./mvnw clean package -DskipTests
Użyj następującego polecenia, aby wdrożyć plik target/demo-0.0.1-SNAPSHOT.jar dla aplikacji:
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
Wykonaj zapytanie o stan aplikacji po wdrożeniu przy użyciu następującego polecenia:
az spring app list \ --service $AZ_SPRING_APPS_SERVICE_NAME \ --resource-group $AZ_RESOURCE_GROUP \ --output table
Powinny zostać wyświetlone dane wyjściowe podobne do poniższego przykładu.
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 -
Testowanie aplikacji
Do przetestowania aplikacji możesz użyć narzędzia cURL. Najpierw utwórz nowy element "todo" w bazie danych przy użyciu następującego polecenia:
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
To polecenie zwraca utworzony element, jak pokazano w poniższym przykładzie:
{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}
Następnie pobierz dane przy użyciu następującego żądania cURL:
curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io
To polecenie zwraca listę elementów "todo", w tym utworzony element, jak pokazano w poniższym przykładzie:
[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]
Czyszczenie zasobów
Aby wyczyścić wszystkie zasoby używane w tym samouczku, usuń grupę zasobów przy użyciu następującego polecenia:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes