Bagikan melalui


Tutorial: Menyebarkan aplikasi ke Azure Spring Apps menggunakan Jenkins dan Azure CLI

Nota

Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan ini memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara waktu saat kami bekerja untuk memperbarui aset seperti cuplikan layar, video, dan diagram.

Azure Spring Apps adalah pengembangan layanan mikro yang dikelola sepenuhnya dengan penemuan layanan bawaan dan manajemen konfigurasi. Layanan ini memudahkan penyebaran aplikasi layanan mikro berbasis Spring Boot ke Azure. Tutorial ini menunjukkan bagaimana Anda dapat menggunakan Azure CLI di Jenkins untuk mengotomatiskan integrasi dan pengiriman berkelanjutan (CI/CD) untuk Azure Spring Apps.

Dalam tutorial ini, Anda akan menyelesaikan tugas-tugas ini:

  • Menyediakan instans layanan dan meluncurkan aplikasi Java Spring
  • Menyiapkan server Jenkins Anda
  • Menggunakan Azure CLI dalam alur Jenkins untuk membangun dan menyebarkan aplikasi layanan mikro

Prasyarat

  • Langganan Azure: Jika Anda tidak memiliki langganan Azure, buat akun gratis sebelum memulai.

Menyediakan instans layanan dan meluncurkan aplikasi Java Spring

Kami menggunakan Metrik Piggy sebagai contoh aplikasi layanan Microsoft dan mengikuti langkah yang sama di Mulai Cepat: Meluncurkan aplikasi Java Spring menggunakan Azure CLI untuk menyediakan instans layanan dan menyiapkan aplikasi. Jika Anda sudah melalui proses yang sama, Anda dapat melompat ke bagian berikutnya. Selain itu, berikut ini adalah perintah Azure CLI yang disertakan. Lihat Mulai Cepat: Luncurkan aplikasi Java Spring menggunakan Azure CLI untuk mendapatkan informasi selengkapnya.

Komputer lokal Anda perlu memenuhi prasyarat yang sama dengan server build Jenkins. Pastikan berikut ini diinstal untuk membangun dan menyebarkan aplikasi layanan mikro:

  1. Instal ekstensi Azure Spring Apps:

    az extension add --name spring
    
  2. Buat grup sumber daya untuk berisi layanan Azure Spring Apps Anda:

    az group create --location eastus --name <resource group name>
    
  3. Penyediakan sebuah instans dari Azure Spring Apps:

    az spring create -n <service name> -g <resource group name>
    
  4. Fork repo Piggy Metrics ke akun GitHub Anda sendiri. Di komputer lokal Anda, kloning repositori Anda di direktori yang disebut source-code:

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Siapkan server konfigurasi Anda. Pastikan Anda mengganti <id> GitHub Anda dengan nilai yang benar.

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

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Buat tiga layanan mikro: gateway, layanan autentikasi, dan layanan akun:

    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. Sebarkan aplikasi:

    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. Tetapkan titik akhir publik ke gateway:

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Kueri aplikasi gateway untuk mendapatkan url sehingga Anda dapat memverifikasi bahwa aplikasi sedang berjalan.

    az spring app show --name gateway | grep url
    
  11. Navigasikan ke URL yang disediakan oleh perintah sebelumnya untuk menjalankan aplikasi PiggyMetrics.

Menyiapkan server Jenkins

Di bagian ini, Anda menyiapkan server Jenkins untuk menjalankan build, yang baik-baik saja untuk pengujian. Namun, karena implikasi keamanan, Anda harus menggunakan agen Azure VM atau agen Azure Container untuk memutar agen di Azure untuk menjalankan build Anda.

Memasang plugin

  1. Masuk ke server Jenkins Anda.

  2. Pilih Kelola Jenkins.

  3. Pilih Kelola Plugin.

  4. Pada tab Tersedia , pilih plug-in berikut ini:

    Jika plug-in ini tidak muncul dalam daftar, periksa tab Terinstal untuk melihat apakah plug-in ini sudah diinstal.

  5. Untuk menginstal plug-in, pilih Unduh sekarang dan instal setelah menghidupkan ulang.

  6. Mulai ulang server Jenkins Anda untuk menyelesaikan penginstalan.

Menambahkan kredensial Azure Service Principal Anda di penyimpanan kredensial Jenkins

  1. Anda memerlukan Azure Service Principal untuk melakukan deployment ke Azure. Untuk informasi selengkapnya, lihat bagian Create service principal pada tutorial Sebarkan ke Azure App Service. Output dari az ad sp create-for-rbac terlihat seperti ini:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Pada dasbor Jenkins, pilih Kredensial>Sistem. Kemudian, pilih Kredensial global (tidak dibatasi).

  3. Pilih Tambahkan Kredensial.

  4. Pilih Perwakilan Layanan Microsoft Azure sebagai jenis.

  5. Berikan nilai untuk bidang berikut:

    • ID Langganan: ID langganan Azure
    • ID Klien: Appid perwakilan layanan
    • Rahasia Klien: Kata sandi perwakilan layanan
    • ID Penyewa: ID penyewa akun Microsoft
    • Lingkungan Azure: Pilih nilai yang sesuai untuk lingkungan Anda. Misalnya, gunakan Azure untuk Azure Global
    • ID: Atur sebagai azure_service_principal. Kami menggunakan ID ini di langkah selanjutnya dalam artikel ini
    • Deskripsi: Nilai ini bersifat opsional, tetapi direkomendasikan dari sudut siaga dokumentasi/pemeliharaan.

Menginstal Maven dan ekstensi Spring untuk Azure CLI

Alur sampel menggunakan Maven untuk membangun dan Azure CLI untuk disebarkan ke instans layanan. Ketika Jenkins diinstal, jenkins membuat akun admin bernama jenkins. Pastikan bahwa pengguna jenkins memiliki izin untuk menjalankan ekstensi spring.

  1. Sambungkan ke pengontrol Jenkins melalui SSH.

  2. Pasang Maven.

    sudo apt-get install maven
    
  3. Verifikasi bahwa Azure CLI diinstal dengan memasukkan az version. Jika Azure CLI tidak diinstal, lihat Menginstal Azure CLI.

  4. Beralih pengguna ke jenkins

    sudo su jenkins
    
  5. Pasang ekstensi spring:

    az extension add --name spring
    

Membuat Jenkinsfile

  1. Dalam repositori Anda sendiri - https://github.com/your_github_id/piggymetrics - buat Jenkinsfile di root.

  2. Perbarui file sebagai berikut. Pastikan Anda mengganti nilai <nama> grup sumber daya dan <nama> layanan. Ganti azure_service_principal dengan ID yang tepat jika Anda menggunakan nilai yang berbeda saat menambahkan kredensial di 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. Simpan dan terapkan perubahan.

Membuat pekerjaan

  1. Pada dasbor Jenkins, pilih Item Baru.

  2. Berikan nama, Deploy-PiggyMetrics untuk pekerjaan dan pilih Pipeline. Klik OK.

  3. Pilih tab Alur .

  4. Untuk Definisi, pilih Skrip alur dari SCM.

  5. Untuk SCM, pilih Git.

  6. Masukkan URL GitHub untuk repositori fork Anda: https://github.com/&lt;your GitHub id&gt;/piggymetrics.git.

  7. Untuk Penentu Cabang (hitam untuk 'apa pun'), pilih /Azure.

  8. Untuk Jalur skrip, pilih Jenkinsfile.

  9. Pilih Simpan

Memvalidasi dan menjalankan tugas

Sebelum menjalankan pekerjaan, edit teks dalam kotak input masuk untuk memasukkan ID masuk.

  1. Di repositori Anda, buka index.html di /gateway/src/main/resources/static/.

  2. Cari enter your login dan perbarui teks tersebut ke enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Simpan dan terapkan perubahan.

  4. Jalankan pekerjaan di Jenkins secara manual. Pada dasbor Jenkins, pilih pekerjaan Deploy-PiggyMetrics lalu pilih Bangun Sekarang.

Setelah pekerjaan selesai, navigasikan ke IP gateway publik aplikasi dan verifikasi bahwa aplikasi Anda telah diperbarui.

Metrik Piggy yang Diperbarui

Membersihkan sumber daya

Jika tidak lagi diperlukan, hapus sumber daya yang dibuat dalam artikel ini:

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

Langkah selanjutnya