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.
- Jenkins: instalowanie narzędzia Jenkins na maszynie wirtualnej z systemem Linux
- Konto usługi GitHub: jeśli nie masz konta usługi GitHub, 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:
- Usługa Git
- JDK 8
- Maven 3.0 lub nowszy
- Zainstalowany interfejs wiersza polecenia platformy Azure w wersji 2.0.67 lub nowszej
Zainstaluj rozszerzenie Azure Spring Apps:
az extension add --name spring
Utwórz grupę zasobów zawierającą usługę Azure Spring Apps:
az group create --location eastus --name <resource group name>
Aprowizuj wystąpienie usługi Azure Spring Apps:
az spring create -n <service name> -g <resource group name>
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
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
Skompiluj projekt:
cd piggymetrics mvn clean package -D skipTests
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>
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
Przypisz publiczny punkt końcowy do bramy:
az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
Wykonaj zapytanie względem aplikacji bramy, aby uzyskać adres URL, aby sprawdzić, czy aplikacja jest uruchomiona.
az spring app show --name gateway | grep url
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
Zaloguj się do serwera Jenkins.
Wybierz pozycję Zarządzaj usługą Jenkins.
Wybierz pozycję Zarządzaj wtyczkami.
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.
Aby zainstalować wtyczki, wybierz pozycję Pobierz teraz i zainstaluj po ponownym uruchomieniu.
Uruchom ponownie serwer Jenkins, aby ukończyć instalację.
Dodawanie poświadczeń jednostki usługi platformy Azure w magazynie poświadczeń serwera Jenkins
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" }
Na pulpicie nawigacyjnym serwera Jenkins wybierz pozycję Credentials>System (Poświadczenia > System). Następnie wybierz pozycję Global credentials (unrestricted) (Poświadczenia globalne [bez ograniczeń]).
Wybierz pozycję Dodaj poświadczenia.
Wybierz pozycję Jednostka usługi platformy Microsoft Azure jako rodzaj.
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.
Połączenie do kontrolera Jenkins za pośrednictwem protokołu SSH.
Zainstaluj narzędzie Maven.
sudo apt-get install maven
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.Przełącz się do
jenkins
użytkownika:sudo su jenkins
Zainstaluj rozszerzenie spring:
az extension add --name spring
Tworzenie pliku Jenkinsfile
We własnym repozytorium
https://github.com/your_github_id/piggymetrics
— utwórz plik Jenkinsfile w katalogu głównym.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' } } }
Zapisz i zatwierdź zmianę.
Tworzenie zadania
Na pulpicie nawigacyjnym usługi Jenkins wybierz pozycję Nowy element.
Podaj nazwę Deploy-PiggyMetrics dla zadania i wybierz pozycję Potok. Kliknij przycisk OK.
Wybierz kartę Pipeline (Potok).
W polu Definition (Definicja) wybierz wartość Pipeline script from SCM (Skrypt potoku z menedżera SCM).
W polu SCM wybierz wartość Git.
Wprowadź adres URL usługi GitHub dla rozwidlenia repozytorium:
https://github.com/<your GitHub id>/piggymetrics.git
.W polu Specyfikator gałęzi (czarny dla "any") wybierz / Azure.
W polu Ścieżka skryptu wybierz pozycję Jenkinsfile.
Wybierz pozycję Zapisz
Weryfikowanie i uruchamianie zadania
Przed uruchomieniem zadania zmodyfikuj tekst w polu wejściowym logowania, aby wprowadzić identyfikator logowania.
W repozytorium otwórz plik
index.html
w pliku/gateway/src/main/resources/static/
.enter your login
Wyszukaj i zaktualizuj ten tekst naenter login ID
.<input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
Zapisz i zatwierdź zmianę.
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.
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>