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 a következő feladatokat hajtja végre a Azure portál vagy a 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.
  • Az Azure-adatbázisokhoz csatlakozó alkalmazásokat felügyelt identitással futtathatja.

Jegyzet

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

Előfeltételek

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

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

Először állítson be néhány környezeti változót 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>

Cserélje le a helyőrzőket a jelen cikkben használt alábbi értékekre:

  • <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ó. Alapértelmezés szerint használhatja eastus , de konfigurálhat egy olyan régiót, amely közelebb van a lakóhelyéhez. Tekintse meg az elérhető régiók teljes listáját a használatával az account list-locations.
  • <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
    

Jegyzet

Ha nem adja meg a(z) admin-password vagy admin-user paramétert, a rendszer 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 csatlakoztatása az Azure-adatbázishoz

Először telepítse a Service Connector 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óért lásd: Microsoft Entra-hitelesítés beállítása az Azure Database for MySQL - rugalmas 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 globális rendszergazdai vagy kiemelt szerepkör-rendszergazdai, hogy adja meg az alábbi engedélyeket az identitáshoz: User.Read.All, GroupMember.Read.Allés Application.Read.ALL. További információt az Active Directory-hitelesítésEngedélyek szakaszában talál.

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 Service Connector-parancs a következő feladatokat futtatja a háttérben:

  • Engedélyezi a Azure Spring Apps által üzemeltetett alkalmazás $AZ_SPRING_APPS_APP_NAME rendszer által hozzárendelt felügyelt identitását.

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

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

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

    Jegyzet

    Ha megjelenik a hibaüzenet The subscription is not registered to use Microsoft.ServiceLinker, futtassa a parancsot az provider register --namespace Microsoft.ServiceLinker a Service Connector 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.

    Jegyzet

    A Spring Cloud Azure-kódtár verzióinak anyagjegyzék (BOM) használatával történő kezeléséről a Spring Cloud Azure fejlesztői útmutatójának Első lépésekcímű szakaszában olvashat.

  3. Az alábbi paranccsal frissítse az application.properties fájlt:

    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 létrehozásához használja a következő parancsokat a Maven használatával:

    cd passwordless-sample
    ./mvnw clean package -DskipTests
    
  5. Az alkalmazás célfájljának/demo-0.0.1-SNAPSHOT.jar fájljának üzembe helyezéséhez használja a következő parancsot:

    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
    

    A következő példához hasonló kimenet jelenik meg.

    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ás teszteléséhez használja a cURL-t. 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}]

Erőforrások törlése

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

Következő lépések