Oktatóanyag: Spring-alkalmazás üzembe helyezése az Azure Spring Appsben jelszó nélküli kapcsolattal egy Azure-adatbázishoz

Ez a cikk bemutatja, hogyan használhat jelszó nélküli kapcsolatokat az Azure-adatbázisokhoz az Azure Spring Appsben üzembe helyezett Spring Boot-alkalmazásokban.

Ebben az oktatóanyagban az alábbi feladatokat hajtja végre az Azure Portal vagy az Azure CLI használatával. Mindkét módszert az alábbi eljárások ismertetik.

  • Az Azure Spring Apps egy példányának kiépítése.
  • Alkalmazások létrehozása és üzembe helyezése az Azure Spring Appsben.
  • Azure-adatbázisokhoz csatlakoztatott alkalmazások futtatása felügyelt identitással.

Megjegyzés:

Ez az oktatóanyag nem működik az R2DBC-ben.

Előfeltételek

  • Azure-előfizetés. Ha még nem rendelkezik ilyen fiókkal, a kezdés előtt hozzon létre egy ingyenes fiókot .
  • Az Azure CLI 2.45.0-s vagy újabb verziója szükséges.
  • Az Azure Spring Apps bővítmény. A bővítményt a következő paranccsal telepítheti: az extension add --name spring.
  • Java Development Kit (JDK), 8-os, 11-es vagy 17-es verzió.
  • Egy Git-ügyfél.
  • cURL vagy hasonló HTTP-segédprogram a funkciók teszteléséhez.
  • MySQL parancssori ügyfél, ha az Azure Database for MySQL futtatását választja. A kiszolgálóhoz az Azure Cloud Shell használatával csatlakozhat egy népszerű ügyféleszköz, a mysql.exe parancssori eszköz használatával. Másik lehetőségként használhatja a parancssort mysql a helyi környezetben.
  • ODBC Driver 18 for SQL Server , ha az Azure SQL Database futtatása mellett dönt.

A munkakörnyezet előkészítése

Először állítsa be a környezeti változókat az alábbi parancsokkal:

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>

A helyőrzőket írja felül a következő értékekkel, amelyeket a cikk teljes további részében használni fogunk:

  • <YOUR_DATABASE_SERVER_NAME>: Az Azure Database-kiszolgáló neve, amelynek egyedinek kell lennie az Azure-ban.
  • <YOUR_AZURE_REGION>: A használni kívánt Azure-régió. Használhatja az alapértelmezett eastus értéket, de ajánlott az Ön lakóhelyéhez közelebbi régiót konfigurálni. A rendelkezésre álló régiók teljes listáját a használatával az account list-locationstekintheti meg.
  • <YOUR_AZURE_SPRING_APPS_SERVICE_NAME>: Az Azure Spring Apps-példány neve. A névnek 4 és 32 karakter közötti hosszúságúnak kell lennie, és csak kisbetűket, számokat és kötőjeleket tartalmazhat. A szolgáltatásnév első karakterének betűnek kell lennie, az utolsó karakternek pedig betűnek vagy számnak kell lennie.
  • <AZ_DB_ADMIN_USERNAME>: Az Azure-adatbáziskiszolgáló rendszergazdai felhasználóneve.
  • <AZ_DB_ADMIN_PASSWORD>: Az Azure-adatbáziskiszolgáló rendszergazdai jelszava.
  • <YOUR_USER_ASSIGNED_MANAGEMED_IDENTITY_NAME>: A felhasználó által hozzárendelt felügyelt identitáskiszolgáló neve, amelynek egyedinek kell lennie az Azure-ban.

Az Azure Spring Apps egy példányának kiépítése

Az Azure Spring Apps egy példányának kiépítéséhez kövesse az alábbi lépéseket.

  1. Frissítse az Azure CLI-t az Azure Spring Apps-bővítménysel az alábbi paranccsal:

    az extension update --name spring
    
  2. Jelentkezzen be az Azure CLI-be, és válassza ki aktív előfizetését az alábbi parancsokkal:

    az login
    az account list --output table
    az account set --subscription <name-or-ID-of-subscription>
    
  3. Az alábbi parancsokkal hozzon létre egy erőforráscsoportot az Azure Spring Apps szolgáltatás és az Azure Spring Apps szolgáltatás egy példányának létrehozásához:

    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-adatbázispéldány létrehozása

Azure Database-példány kiépítéséhez kövesse az alábbi lépéseket.

  1. Hozzon létre egy Azure Database for MySQL-kiszolgálót az alábbi paranccsal:

    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
    

Megjegyzés:

Ha nem ad meg admin-user vagy admin-password paramétereket, a rendszer alapértelmezés szerint létrehoz egy alapértelmezett rendszergazdai felhasználót vagy egy véletlenszerű rendszergazdai jelszót.

  1. Hozzon létre egy új adatbázist a következő paranccsal:

    az mysql flexible-server db create \
        --resource-group $AZ_RESOURCE_GROUP \
        --database-name $AZ_DATABASE_NAME \
        --server-name $AZ_DATABASE_SERVER_NAME
    

Alkalmazás létrehozása hozzárendelt nyilvános végponttal

Az alkalmazás létrehozásához használja az alábbi parancsot.

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

Az Azure Spring Apps Csatlakozás az Azure-adatbázisba

Először telepítse a Service Csatlakozás or jelszó nélküli bővítményt az Azure CLI-hez:

az extension add --name serviceconnector-passwordless --upgrade

Ezután a következő paranccsal hozzon létre egy felhasználó által hozzárendelt felügyelt identitást a Microsoft Entra-hitelesítéshez. További információ: Microsoft Entra-hitelesítés beállítása rugalmas Azure Database for MySQL-kiszolgálóhoz.

export AZ_IDENTITY_RESOURCE_ID=$(az identity create \
    --name $AZ_USER_IDENTITY_NAME \
    --resource-group $AZ_RESOURCE_GROUP \
    --query id \
    --output tsv)

Fontos

A felhasználó által hozzárendelt identitás létrehozása után kérje meg a globális Rendszergazda istratort vagy a Privileged Role Rendszergazda istratort, hogy adja meg az alábbi engedélyeket ehhez az identitáshoz: User.Read.All, GroupMember.Read.Allés Application.Read.ALL. További információ: Az Active Directory-hitelesítés Engedélyek szakasza.

Ezután az alábbi paranccsal hozzon létre jelszó nélküli kapcsolatot az adatbázissal.

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

Ez a Szolgáltatás Csatlakozás or parancs a következő feladatokat hajtja végre a háttérben:

  • Engedélyezze a rendszer által hozzárendelt felügyelt identitást az Azure Spring Apps által üzemeltetett alkalmazáshoz $AZ_SPRING_APPS_APP_NAME .

  • Állítsa a Microsoft Entra rendszergazdát az aktuális bejelentkezett felhasználóra.

  • Adjon hozzá egy, az 1. lépésben létrehozott felügyelt identitáshoz elnevezett $AZ_SPRING_APPS_SERVICE_NAME/apps/$AZ_SPRING_APPS_APP_NAME adatbázis-felhasználót, és adja meg az adatbázis $AZ_DATABASE_NAME összes jogosultságát ennek a felhasználónak.

  • Adjon hozzá két konfigurációt az alkalmazáshoz $AZ_SPRING_APPS_APP_NAME: spring.datasource.url és spring.datasource.username.

    Megjegyzés:

    Ha megjelenik a hibaüzenetThe subscription is not registered to use Microsoft.ServiceLinker, futtassa a parancsot az provider register --namespace Microsoft.ServiceLinker a Szolgáltatás Csatlakozás or erőforrás-szolgáltató regisztrálásához, majd futtassa újra a kapcsolati parancsot.

Az alkalmazás létrehozása és üzembe helyezése

Az alábbi lépések a mintaalkalmazás letöltését, konfigurálását, összeállítását és üzembe helyezését ismertetik.

  1. A mintakódtár klónozásához használja a következő parancsot:

    git clone https://github.com/Azure-Samples/quickstart-spring-data-jdbc-mysql passwordless-sample
    
  2. Adja hozzá a következő függőséget a pom.xml fájlhoz :

    <dependency>
        <groupId>com.azure.spring</groupId>
        <artifactId>spring-cloud-azure-starter-jdbc-mysql</artifactId>
    </dependency>
    

    Ez a függőség támogatja a Spring Cloud Azure startert.

    Megjegyzés:

    A Spring Cloud Azure-kódtár verzióinak anyagjegyzék (BOM) használatával történő kezelésével kapcsolatos további információkért tekintse meg a Spring Cloud Azure fejlesztői útmutatójának Első lépések szakaszát.

  3. Az application.properties fájl frissítéséhez használja a következő parancsot :

    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. A projekt a Maven használatával történő létrehozásához használja az alábbi parancsokat:

    cd passwordless-sample
    ./mvnw clean package -DskipTests
    
  5. A következő paranccsal helyezze üzembe a target/demo-0.0.1-SNAPSHOT.jar fájlt az alkalmazáshoz:

    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. Az alkalmazás állapotának lekérdezése az üzembe helyezés után az alábbi paranccsal:

    az spring app list \
        --service $AZ_SPRING_APPS_SERVICE_NAME \
        --resource-group $AZ_RESOURCE_GROUP \
        --output table
    

    Az alábbi példához hasonló kimenetnek kell megjelennie.

    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                    -
    

Az alkalmazás tesztelése

Az alkalmazást tesztelheti a cURL használatával. Először hozzon létre egy új "teendő" elemet az adatbázisban a következő paranccsal:

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

Ez a parancs a létrehozott elemet adja vissza az alábbi példában látható módon:

{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}

Ezután kérje le az adatokat a következő cURL-kéréssel:

curl https://${AZ_SPRING_APPS_SERVICE_NAME}-hellospring.azuremicroservices.io

Ez a parancs a "teendő" elemek listáját adja vissza, beleértve a létrehozott elemet is, ahogyan az a következő példában látható:

[{"id":1,"description":"configuration","details":"congratulations, you have set up JDBC correctly!","done":true}]

Clean up resources

Az oktatóanyag során használt összes erőforrás törléséhez törölje az erőforráscsoportot az alábbi paranccsal:

az group delete \
    --name $AZ_RESOURCE_GROUP \
    --yes

További lépések