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.
- Utwórz instancję 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.
Notatka
Ten samouczek nie działa dla R2DBC.
Warunki wstępne
- Subskrypcja platformy Azure. Jeśli jeszcze go nie masz, przed rozpoczęciem utwórz bezpłatne konto .
- Azure CLI w wersji 2.45.0 lub nowszej jest wymagany.
- Rozszerzenie Azure Spring Apps. Rozszerzenie można zainstalować przy użyciu polecenia :
az extension add --name spring
. - Java Development Kit (JDK)w wersji 8, 11 lub 17.
- Klient 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ć wiersza polecenia
mysql
w środowisku lokalnym. - sterownik ODBC 18 dla programu SQL Server, jeśli zdecydujesz się korzystać z usługi Azure SQL Database.
Przygotowywanie środowiska roboczego
Najpierw skonfiguruj niektóre zmienne środowiskowe przy użyciu 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ć. Domyślnie można użyćeastus
, ale zalecamy skonfigurowanie regionu bliżej miejsca zamieszkania. Pełną listę dostępnych regionów można wyświetlić przy użyciuaz 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.
Skonfiguruj wystąpienie Aplikacji Azure Spring
Wykonaj poniższe kroki, aby wdrożyć instancję 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 utworzyć wystąpienie bazy danych Azure.
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
Notatka
Jeśli nie podasz parametrów admin-user
lub admin-password
, 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
Łączenie usługi Azure Spring Apps z bazą danych platformy Azure
Najpierw zainstaluj rozszerzenie Service Connector bez hasła 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 Skonfiguruj uwierzytelnianie Microsoft Entra dla Azure Database for MySQL – Flexible Server.
export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
--name $AZ_USER_IDENTITY_NAME \
--resource-group $AZ_RESOURCE_GROUP \
--query id \
--output tsv)
Ważny
Po utworzeniu tożsamości przypisanej przez użytkownika poproś administratora globalnego lub administratora ról uprzywilejowanych o udzielenie następujących uprawnień dla tej tożsamości: User.Read.All
, GroupMember.Read.All
i Application.Read.ALL
. Aby uzyskać więcej informacji, zobacz sekcję Permissions w temacie Active Directory authentication.
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 łącznika usługi wykonuje następujące zadania w tle:
Włącz zarządzaną tożsamość przypisaną przez system dla aplikacji
$AZ_SPRING_APPS_APP_NAME
hostowanej przez usługę Azure Spring Apps.Ustaw bieżącego zalogowanego użytkownika jako administratora Microsoft Entra.
Dodaj użytkownika bazy danych o nazwie
$AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME
dla tożsamości zarządzanej utworzonej w kroku 1 i nadaj temu użytkownikowi wszystkie uprawnienia$AZ_DATABASE_NAME
bazy danych.Dodaj dwie konfiguracje do aplikacji
$AZ_SPRING_APPS_APP_NAME
:spring.datasource.url
ispring.datasource.username
.Notatka
Jeśli zostanie wyświetlony komunikat o błędzie
The subscription is not registered to use Microsoft.ServiceLinker
, uruchom polecenieaz provider register --namespace Microsoft.ServiceLinker
, aby zarejestrować dostawcę zasobów łącznika usługi, 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ę dla startera Spring Cloud Azure.
Notatka
Aby uzyskać więcej informacji na temat zarządzania wersjami bibliotek platformy Azure platformy Spring Cloud przy użyciu rachunku materiałów (BOM), zobacz sekcję Wprowadzenie przewodnika dla 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
Aby przetestować aplikację, możesz użyć biblioteki 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 wykorzystywane w tym samouczku, usuń grupę zasobów przy użyciu następującego polecenia:
az group delete \
--name $AZ_RESOURCE_GROUP \
--yes