Implementaties verifiëren bij Azure App Service
Als u de oefeningen in deze module wilt voltooien, bent u aangemeld bij de sandbox-omgeving. Omdat deze omgeving interactief is, zijn al uw implementaties geverifieerd met behulp van de referenties die u hebt gebruikt toen u de sandbox initialiseerde. Uw implementaties gebruiken deze interactieve omgeving echter niet als u het buildproces automatiseert. In een automatiseringsscenario moet u uw project configureren voor het gebruik van een van de ondersteunde verificatiemethoden.
In deze les leert u hoe uw bedrijf Maven kan configureren voor het gebruik van Azure-verificatie.
Uw web-app verifiëren
Azure biedt u de flexibiliteit om te bepalen hoe u uw app wilt verifiëren. De optie die u kiest, is afhankelijk van de bouwomgeving van uw bedrijf. De drie opties voor het verifiëren van uw toepassingscode met Maven worden hier vermeld, in volgorde van complexiteit (van minst naar meest):
Verifieer met behulp van de Azure CLI of gebruik Cloud Shell in Azure Portal.
Maak een Azure-service-principal, maak een JSON-bestand met de referenties van uw service-principal en wijzig het
pom.xml
-bestand van uw project.Maak een Azure-service-principal, voeg uw referenties voor de service-principal toe aan een Maven-
settings.xml
-bestand en wijzig hetpom.xml
-bestand van uw project om de Maven-instellingen te gebruiken.
Microsoft raadt de derde optie aan, omdat deze de meest betrouwbare, flexibele en consistente benadering van verificatie biedt. In een praktijkomgeving worden de bestaande Java-web-apps van uw bedrijf mogelijk uitgevoerd op lokale servers waarop de Azure CLI-hulpprogramma's niet zijn geïnstalleerd. Daarom zou u waarschijnlijk de aanbeveling implementeren om verificatie toe te voegen met behulp van een service-principal en een Maven-settings.xml
-bestand. Voor deze oefening beschikt de sandbox echter niet over voldoende bevoegdheden om service-principals te maken.
Verificatie met de Azure CLI
De eenvoudigste manier om Maven te verifiëren, is door u aan te melden met de Azure CLI. De Maven-invoegtoepassing voor Azure App Service kan de app vervolgens implementeren met behulp van uw referenties, zonder dat er extra configuratie is vereist.
Als u azure Cloud Shell gebruikt, zoals u al hebt gedaan bij het voltooien van de oefeningen met de Microsoft Learn-sandbox in deze module, bent u standaard aangemeld bij Azure. U hoeft geen opdrachten meer uit te voeren. Als u echter de Azure CLI van een afzonderlijke computer gebruikt, moet u zich aanmelden met behulp van de opdracht az login
.
Verificatie met een service-principal
De tweede methode voor het verifiëren van uw web-app omvat het maken van een Azure-service-principal en het opslaan van de referenties van uw service-principal in een bestand waarnaar u verwijst vanuit uw projectinstellingen.
Voer de volgende stappen uit om een Azure-service-principal te maken met de Azure CLI.
Voer de volgende opdracht uit vanuit de Azure CLI om een Azure-service-principal te maken:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Waar
https://mywebapp-1234567890.azurewebsites.net/
de URL van uw web-app is.Met deze opdracht wordt een antwoord geretourneerd met een JSON-object dat lijkt op het volgende voorbeeld:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Wijzig het
pom.xml
-bestand van uw web-app om de informatie in de JSON-uitvoer te gebruiken.Open het
pom.xml
-bestand met de code-editor:cd ~/MyWebApp code pom.xml
Zoek de sectie
<configuration>
voor deazure-webapp-maven-plugin
.Voeg de volgende XML toe na de regel met het
<region>
-element en gebruik de informatie in de JSON-uitvoer:<auth> <type>service_principal</type> <client>value-of-appId</client> <tenant>value-of-tenant</tenant> <key>value-of-password</key> <environment>azure</environment> </auth>
De sectie
azure-webapp-maven-plugin
moet er nu uitzien zoals in het volgende voorbeeld:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>v2</schemaVersion> <resourceGroup>MyWebApp-1714654093047-rg</resourceGroup> <appName>MyWebApp-1714654093047</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>abcdefghijklmnopqrstuvwxyz1234567890</key> <environment>azure</environment> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Sla uw wijzigingen op door Ctrl+S-te typen.
Sluit de code-editor af door Ctrl+Qte typen.
Maven gebruiken om uw web-app te bouwen en te implementeren in Azure App Service:
mvn azure-webapp:deploy
Maven geeft een reeks buildberichten weer en het uiteindelijke bericht moet aangeven dat de implementatie naar Azure is geslaagd:
[INFO] Scanning for projects... [INFO] [INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: 74d82376-184f-400e-a08e-27cd522d7559 [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 47.052 s [INFO] Finished at: 2024-05-02T13:10:54Z [INFO] ------------------------------------------------------------------------
De
Auth type: SERVICE_PRINCIPAL
-regel in het antwoord geeft aan dat de service-principal is gebruikt voor het publiceren van uw webapp op Azure.
Verificatie met een Maven-settings.xml
-bestand
De derde methode voor het verifiëren van uw web-app omvat het maken van een Azure-service-principal, het maken van een Maven-settings.xml
-bestand met de referenties van uw service-principal en het wijzigen van het pom.xml
-bestand van uw project om de Maven-instellingen te gebruiken.
De stappen voor het maken van een Azure-service-principal met de Azure CLI zijn hetzelfde als in de vorige sectie van deze eenheid.
Voer de volgende opdracht uit vanuit de Azure CLI om een Azure-service-principal te maken:
az ad sp create-for-rbac --name https://mywebapp-1234567890.azurewebsites.net/ --role Contributor --scopes /subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss
Waar
https://mywebapp-1234567890.azurewebsites.net/
de URL van uw web-app is.Met deze opdracht wordt een antwoord geretourneerd met een JSON-object dat lijkt op het volgende voorbeeld:
Creating 'Contributor' role assignment under scope '/subscriptions/ssssssss-ssss-ssss-ssss-ssssssssssss' The output includes credentials that you must protect. Be sure that you do not include these credentials in your code or check the credentials into your source control. For more information, see https://aka.ms/azadsp-cli { "appId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa", "displayName": "mywebapp-1234567890.azurewebsites.net/", "name": "https://mywebapp-1234567890.azurewebsites.net/", "password": "...", "tenant": "tttttttt-tttt-tttt-tttt-tttttttttttt" }
Maak een gebruikersversie van het
settings.xml
-bestand dat maven kan gebruiken.Maak een nieuw XML-bestand voor uw Maven-instellingen met de code-editor:
code ~/.m2/settings.xml
Plak de volgende XML in het bestand:
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>azure-auth</id> <configuration> <client>aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa</client> <tenant>tttttttt-tttt-tttt-tttt-tttttttttttt</tenant> <key>pppppppp-pppp-pppp-pppp-pppppppppppp</key> </configuration> </server> </servers> </settings>
Waar:
Parameter Beschrijving client
Geeft de appId
-waarde van de service principal opkey
Hiermee specificeert u de password
-waarde van de serviceprincipal.tenant
Specificeert de tenant
-waarde van de service-principalSla uw wijzigingen op door Ctrl+S-te typen.
Sluit de code-editor af door Ctrl+Qte typen.
Wijzig het
pom.xml
-bestand van uw web-app om te verwijzen naar het verificatiebestand.Open het
pom.xml
-bestand met de code-editor:cd ~/MyWebApp code pom.xml
Zoek sectie
<configuration>
voorazure-webapp-maven-plugin
.Voeg de volgende XML toe na de regel met het element
<region>
:<auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth>
De sectie
azure-webapp-maven-plugin
moet er nu uitzien zoals in het volgende voorbeeld:<plugin> <groupId>com.microsoft.azure</groupId> <artifactId>azure-webapp-maven-plugin</artifactId> <version>2.13.0</version> <configuration> <schemaVersion>V2</schemaVersion> <resourceGroup>maven-publish</resourceGroup> <appName>MyWebApp-1234567890</appName> <pricingTier>S1</pricingTier> <region>centralus</region> <auth> <type>service_principal</type> <serverId>azure-auth</serverId> </auth> <runtime> <os>Linux</os> <javaVersion>Java 17</javaVersion> <webContainer>Tomcat 10.0</webContainer> </runtime> <deployment> <resources> <resource> <directory>${project.basedir}/target</directory> <includes> <include>*.war</include> </includes> </resource> </resources> </deployment> </configuration> </plugin>
Sla uw wijzigingen op door Ctrl+S-te typen.
Sluit de code-editor af door Ctrl+Qte typen.
Maven gebruiken om uw web-app te bouwen en te implementeren in Azure App Service:
mvn azure-webapp:deploy
Maven geeft een reeks buildberichten weer en het uiteindelijke bericht moet aangeven dat de implementatie naar Azure is geslaagd:
[INFO] -------------------< com.microsoft.example:MyWebApp >------------------- [INFO] Building MyWebApp Maven Webapp 1.0-SNAPSHOT [INFO] --------------------------------[ war ]--------------------------------- [INFO] [INFO] --- azure-webapp-maven-plugin:2.13.0:deploy (default-cli) @ MyWebApp --- [INFO] Auth type: SERVICE_PRINCIPAL [INFO] Username: aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa [INFO] There is only one subscription '...' in your account, will use it automatically. [INFO] Subscription: ... [INFO] Failed to get version of your artifact, skip artifact compatibility test [INFO] Trying to deploy external resources to MyWebApp-1714654093047... [INFO] Successfully deployed the resources to MyWebApp-1714654093047 [INFO] Trying to deploy artifact to MyWebApp-1714654093047... [INFO] Deploying (/home/cephas/MyWebApp/target/MyWebApp.war)[war] ... [INFO] Application url: https://mywebapp-1714654093047.azurewebsites.net [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 53.611 s [INFO] Finished at: 2024-05-02T13:53:31Z [INFO] ------------------------------------------------------------------------
De
Auth type: SERVICE_PRINCIPAL
regel in het antwoord geeft aan dat uw service-principalreferenties zijn gebruikt om uw web-app naar Azure te publiceren.