Implementaties verifiëren bij Azure App Service

Voltooid

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 het pom.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.

  1. 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"
    }
    
  2. Wijzig het pom.xml-bestand van uw web-app om de informatie in de JSON-uitvoer te gebruiken.

    1. Open het pom.xml-bestand met de code-editor:

      cd ~/MyWebApp
      code pom.xml
      
    2. Zoek de sectie <configuration> voor de azure-webapp-maven-plugin.

    3. 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>
      
      
    4. Sla uw wijzigingen op door Ctrl+S-te typen.

    5. Sluit de code-editor af door Ctrl+Qte typen.

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

  1. 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"
    }
    
  2. Maak een gebruikersversie van het settings.xml-bestand dat maven kan gebruiken.

    1. Maak een nieuw XML-bestand voor uw Maven-instellingen met de code-editor:

      code ~/.m2/settings.xml
      
    2. 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 op
      key Hiermee specificeert u de password-waarde van de serviceprincipal.
      tenant Specificeert de tenant-waarde van de service-principal
    3. Sla uw wijzigingen op door Ctrl+S-te typen.

    4. Sluit de code-editor af door Ctrl+Qte typen.

  3. Wijzig het pom.xml-bestand van uw web-app om te verwijzen naar het verificatiebestand.

    1. Open het pom.xml-bestand met de code-editor:

      cd ~/MyWebApp
      code pom.xml
      
    2. Zoek sectie <configuration> voor azure-webapp-maven-plugin.

    3. 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> 
      
    4. Sla uw wijzigingen op door Ctrl+S-te typen.

    5. Sluit de code-editor af door Ctrl+Qte typen.

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