Udostępnij za pośrednictwem


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życiu az 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.

  1. Zaktualizuj interfejs wiersza polecenia platformy Azure za pomocą rozszerzenia Azure Spring Apps, używając następującego polecenia:

    az extension update --name spring
    
  2. 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>
    
  3. 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.

  1. 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.

  1. 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.Alli 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 i spring.datasource.username.

    Notatka

    Jeśli zostanie wyświetlony komunikat o błędzie The subscription is not registered to use Microsoft.ServiceLinker, uruchom polecenie az 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.

  1. 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
    
  2. 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.

  3. 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
    
  4. Użyj następujących poleceń, aby skompilować projekt przy użyciu narzędzia Maven:

    cd passwordless-sample
    ./mvnw clean package -DskipTests
    
  5. 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
    
  6. 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

Następne kroki