Samouczek: wdrażanie aplikacji w usłudze Azure Spring Apps przy użyciu narzędzia Jenkins i interfejsu wiersza polecenia platformy Azure

Uwaga

Azure Spring Apps to nowa nazwa usługi Azure Spring Cloud. Mimo że usługa ma nową nazwę, stara nazwa będzie widoczna w niektórych miejscach przez pewien czas, ponieważ pracujemy nad aktualizowaniem zasobów, takich jak zrzuty ekranu, filmy wideo i diagramy.

Usługa Azure Spring Apps to w pełni zarządzane programowanie mikrousług z wbudowanym odnajdywaniem usług i zarządzaniem konfiguracją. Usługa ułatwia wdrażanie aplikacji mikrousług opartych na usłudze Spring Boot na platformie Azure. W tym samouczku pokazano, jak za pomocą interfejsu wiersza polecenia platformy Azure w usłudze Jenkins zautomatyzować ciągłą integrację i ciągłe dostarczanie (CI/CD) dla usługi Azure Spring Apps.

W tym samouczku wykonasz następujące zadania:

  • Aprowizuj wystąpienie usługi i uruchom aplikację Java Spring
  • Przygotowywanie serwera Jenkins
  • Tworzenie i wdrażanie aplikacji mikrousług za pomocą interfejsu wiersza polecenia platformy Azure w potoku narzędzia Jenkins

Wymagania wstępne

  • Subskrypcja platformy Azure: jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto.

Aprowizuj wystąpienie usługi i uruchom aplikację Java Spring

Używamy metryk Piggy jako przykładowej aplikacji usługi firmy Microsoft i wykonaj te same kroki w przewodniku Szybki start: uruchamianie aplikacji Java Spring przy użyciu interfejsu wiersza polecenia platformy Azure w celu aprowizowania wystąpienia usługi i konfigurowania aplikacji. Jeśli już przeszedłeś ten sam proces, możesz przejść do następnej sekcji. W przeciwnym razie są dostępne następujące polecenia interfejsu wiersza polecenia platformy Azure. Zapoznaj się z przewodnikiem Szybki start: uruchamianie aplikacji Java Spring przy użyciu interfejsu wiersza polecenia platformy Azure, aby uzyskać więcej informacji.

Maszyna lokalna musi spełniać te same wymagania wstępne co serwer kompilacji serwera Jenkins. Upewnij się, że następujące elementy zostały zainstalowane w celu skompilowania i wdrożenia aplikacji mikrousług:

  1. Zainstaluj rozszerzenie Azure Spring Apps:

    az extension add --name spring
    
  2. Utwórz grupę zasobów zawierającą usługę Azure Spring Apps:

    az group create --location eastus --name <resource group name>
    
  3. Aprowizuj wystąpienie usługi Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Rozwidlenie repozytorium Piggy Metrics do własnego konta usługi GitHub. Na komputerze lokalnym sklonuj repozytorium w katalogu o nazwie source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Skonfiguruj serwer konfiguracji. Upewnij się, że identyfikator usługi GitHub> został zastąpiony <poprawną wartością.

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. Skompiluj projekt:

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Utwórz trzy mikrousługi: gateway, auth-service i account-service:

    az spring app create --n gateway -s <service name> -g <resource group name>
    az spring app create --n auth-service -s <service name> -g <resource group name>
    az spring app create --n account-service -s <service name> -g <resource group name>
    
  8. Wdróż aplikacje:

    az spring app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar
    az spring app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar
    az spring app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
    
  9. Przypisz publiczny punkt końcowy do bramy:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Wykonaj zapytanie względem aplikacji bramy, aby uzyskać adres URL, aby sprawdzić, czy aplikacja jest uruchomiona.

    az spring app show --name gateway | grep url
    
  11. Przejdź do adresu URL dostarczonego przez poprzednie polecenie, aby uruchomić aplikację PiggyMetrics.

Przygotowanie serwera Jenkins

W tej sekcji przygotujesz serwer Jenkins do uruchomienia kompilacji, która jest odpowiednia do testowania. Jednak ze względu na implikację zabezpieczeń należy użyć agenta maszyny wirtualnej platformy Azure lub agenta kontenera platformy Azure, aby uruchomić agenta na platformie Azure w celu uruchamiania kompilacji.

Instalowanie wtyczek

  1. Zaloguj się do serwera Jenkins.

  2. Wybierz pozycję Zarządzaj usługą Jenkins.

  3. Wybierz pozycję Zarządzaj wtyczkami.

  4. Na karcie Dostępne wybierz następujące wtyczki:

    Jeśli te wtyczki nie są wyświetlane na liście, sprawdź kartę Zainstalowane , aby sprawdzić, czy zostały już zainstalowane.

  5. Aby zainstalować wtyczki, wybierz pozycję Pobierz teraz i zainstaluj po ponownym uruchomieniu.

  6. Uruchom ponownie serwer Jenkins, aby ukończyć instalację.

Dodawanie poświadczeń jednostki usługi platformy Azure w magazynie poświadczeń serwera Jenkins

  1. Do wdrożenia na platformie Azure potrzebna jest jednostka usługi platformy Azure. Aby uzyskać więcej informacji, zobacz sekcję Tworzenie jednostki usługi w samouczku Wdrażanie w usłudze aplikacja systemu Azure Service. Dane wyjściowe z az ad sp create-for-rbac pliku wyglądają mniej więcej tak:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Na pulpicie nawigacyjnym serwera Jenkins wybierz pozycję Credentials>System (Poświadczenia > System). Następnie wybierz pozycję Global credentials (unrestricted) (Poświadczenia globalne [bez ograniczeń]).

  3. Wybierz pozycję Dodaj poświadczenia.

  4. Wybierz pozycję Jednostka usługi platformy Microsoft Azure jako rodzaj.

  5. Podaj wartości dla następujących pól:

    • Identyfikator subskrypcji: identyfikator subskrypcji platformy Azure
    • Identyfikator klienta: identyfikator jednostki usługi appid
    • Klucz tajny klienta: hasło jednostki usługi
    • Identyfikator dzierżawy: identyfikator dzierżawy konta Microsoft
    • Środowisko platformy Azure: wybierz odpowiednią wartość dla danego środowiska. Na przykład użyj platformy Azure dla globalnej platformy Azure
    • Identyfikator: ustaw jako azure_service_principal. Użyjemy tego identyfikatora w późniejszym kroku w tym artykule
    • Opis: Ta wartość jest opcjonalna, ale zalecana z punktu widzenia dokumentacji/konserwacji.

Instalowanie rozszerzenia Spring interfejsu wiersza polecenia platformy Azure i programu Maven

Przykładowy potok używa narzędzia Maven do kompilowania i interfejsu wiersza polecenia platformy Azure w celu wdrożenia w wystąpieniu usługi. Po zainstalowaniu usługi Jenkins tworzy konto administratora o nazwie jenkins. Upewnij się, że użytkownik jenkins ma uprawnienia do uruchamiania rozszerzenia spring.

  1. Połączenie do kontrolera Jenkins za pośrednictwem protokołu SSH.

  2. Zainstaluj narzędzie Maven.

    sudo apt-get install maven
    
  3. Sprawdź, czy interfejs wiersza polecenia platformy Azure jest zainstalowany, wprowadzając polecenie az version. Jeśli interfejs wiersza polecenia platformy Azure nie jest zainstalowany, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.

  4. Przełącz się do jenkins użytkownika:

    sudo su jenkins
    
  5. Zainstaluj rozszerzenie spring:

    az extension add --name spring
    

Tworzenie pliku Jenkinsfile

  1. We własnym repozytorium https://github.com/your_github_id/piggymetrics — utwórz plik Jenkinsfile w katalogu głównym.

  2. Zaktualizuj plik w następujący sposób. Pamiętaj, aby zastąpić wartości <nazwy> grupy zasobów i< nazwy> usługi. Zastąp azure_service_principal odpowiednim identyfikatorem, jeśli używasz innej wartości podczas dodawania poświadczeń w usłudze Jenkins.

        node {
          stage('init') {
            checkout scm
          }
          stage('build') {
            sh 'mvn clean package'
          }
          stage('deploy') {
            withCredentials([azureServicePrincipal('azure_service_principal')]) {
              // Log in to Azure
              sh '''
                az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET -t $AZURE_TENANT_ID
                az account set -s $AZURE_SUBSCRIPTION_ID
              '''  
              // Set default resource group name and service name. Replace <resource group name> and <service name> with the right values
              sh 'az config set defaults.group=<resource group name>'
              sh 'az config set defaults.spring=<service name>'
    
              // Deploy applications
              sh 'az spring app deploy -n gateway --jar-path ./gateway/target/gateway.jar'
              sh 'az spring app deploy -n account-service --jar-path ./account-service/target/account-service.jar'
              sh 'az spring app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar'
              sh 'az logout'
            }
          }
        }
    
  3. Zapisz i zatwierdź zmianę.

Tworzenie zadania

  1. Na pulpicie nawigacyjnym usługi Jenkins wybierz pozycję Nowy element.

  2. Podaj nazwę Deploy-PiggyMetrics dla zadania i wybierz pozycję Potok. Kliknij przycisk OK.

  3. Wybierz kartę Pipeline (Potok).

  4. W polu Definition (Definicja) wybierz wartość Pipeline script from SCM (Skrypt potoku z menedżera SCM).

  5. W polu SCM wybierz wartość Git.

  6. Wprowadź adres URL usługi GitHub dla rozwidlenia repozytorium: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. W polu Specyfikator gałęzi (czarny dla "any") wybierz / Azure.

  8. W polu Ścieżka skryptu wybierz pozycję Jenkinsfile.

  9. Wybierz pozycję Zapisz

Weryfikowanie i uruchamianie zadania

Przed uruchomieniem zadania zmodyfikuj tekst w polu wejściowym logowania, aby wprowadzić identyfikator logowania.

  1. W repozytorium otwórz plik index.html w pliku /gateway/src/main/resources/static/.

  2. enter your login Wyszukaj i zaktualizuj ten tekst na enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Zapisz i zatwierdź zmianę.

  4. Uruchom zadanie ręcznie w usłudze Jenkins. Na pulpicie nawigacyjnym narzędzia Jenkins wybierz zadanie Deploy-PiggyMetrics , a następnie wybierz pozycję Kompiluj teraz.

Po zakończeniu zadania przejdź do publicznego adresu IP gateway aplikacji i sprawdź, czy aplikacja została zaktualizowana.

Updated Piggy Metrics

Czyszczenie zasobów

Gdy zasoby utworzone w tym artykule nie będą już potrzebne, usuń je:

az group delete -y --no-wait -n <resource group name>

Następne kroki