Öğretici: Jenkins ve Azure CLı kullanarak Azure Spring buluta uygulama dağıtma

Azure Spring Cloud , yerleşik hizmet bulma ve yapılandırma yönetimiyle tam olarak yönetilen bir mikro hizmet geliştirmesinde bulunur. Hizmet, Spring Boot tabanlı mikro hizmet uygulamalarının Azure 'a dağıtılmasını kolaylaştırır. Bu öğreticide, Azure Spring Cloud için sürekli tümleştirme ve teslimi (CI/CD) otomatik hale getirmek için Jenkins 'de Azure CLı 'yı nasıl kullanabileceğiniz gösterilmektedir.

Bu öğreticide, şu görevleri tamamlayacaksınız:

  • Bir hizmet örneği sağlayın ve bir Java Spring uygulaması başlatın
  • Jenkins sunucunuzu hazırlama
  • Mikro hizmet uygulamalarını derlemek ve dağıtmak için Jenkins ardışık düzeninde Azure CLı 'yı kullanma

Önkoşullar

  • Azure aboneliği: Azure aboneliğiniz yoksa başlamadan önce ücretsiz bir hesap oluşturun.

Bir hizmet örneği sağlayın ve bir Java Spring uygulaması başlatın

Örnek Microsoft hizmet uygulaması olarak Piggy ölçümlerini kullanıyoruz ve hızlı başlangıç: Azure CLI kullanarak bir Java Spring uygulaması başlatarak hizmet örneğini temin edin ve uygulamaları ayarlayın. Aynı işlemden daha önce gittiğinden sonraki bölüme atlayabilirsiniz. Aksi takdirde, Azure CLı komutları aşağıda verilmiştir. Hızlı başlangıç: Azure CLI kullanarak bir Java Spring uygulaması başlatarak daha fazla arka plan bilgisi alın bölümüne bakın.

Yerel makinenizin Jenkins yapı sunucusuyla aynı önkoşulu karşılaması gerekir. Mikro hizmet uygulamalarını derlemek ve dağıtmak için aşağıdakilerin yüklü olduğundan emin olun:

  1. Azure yay bulutu uzantısını yükler:

    az extension add --name spring-cloud
    
  2. Azure yay bulut hizmetinizi içerecek bir kaynak grubu oluşturun:

    az group create --location eastus --name <resource group name>
    
  3. Azure Spring Cloud 'ın bir örneğini sağlayın:

    az spring-cloud create -n <service name> -g <resource group name>
    
  4. piggy ölçümleri deposunu kendi GitHub hesabınıza çatalla. Yerel makinenizde, depoyu adlı bir dizinde kopyalayın source-code :

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. Yapılandırma sunucunuzu ayarlayın. <GitHub kimliğinizi > doğru değer ile değiştirdiğinizden emin olun.

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

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. Üç mikro hizmeti oluşturun: Gateway, AUTH-Serviceve Account-Service:

    az spring-cloud app create --n gateway -s <service name> -g <resource group name>
    az spring-cloud app create --n auth-service -s <service name> -g <resource group name>
    az spring-cloud app create --n account-service -s <service name> -g <resource group name>
    
  8. Uygulamaları dağıtma:

    az spring-cloud app deploy -n gateway -s <service name> -g <resource group name> --jar-path ./gateway/target/gateway.jar
    az spring-cloud app deploy -n account-service -s <service name> -g <resource group name> --jar-path ./account-service/target/account-service.jar
    az spring-cloud app deploy -n auth-service -s <service name> -g <resource group name> --jar-path ./auth-service/target/auth-service.jar
    
  9. Ağ geçidine genel uç nokta ata:

    az spring-cloud app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. Uygulamanın çalıştığını doğrulayabilmeniz için, URL 'yi almak üzere ağ geçidi uygulamasını sorgulayın.

    az spring-cloud app show --name gateway | grep url
    
  11. Plımetrimetrik uygulamasını çalıştırmak için önceki komutun sunduğu URL 'ye gidin.

Jenkins sunucusunu hazırlama

Bu bölümde, Jenkins sunucusunu test için ince olan bir derlemeyi çalıştıracak şekilde hazırlarsınız. Ancak güvenlik nedeniyle, derlemelerinizi çalıştırmak üzere Azure 'da bir aracı çalıştırmak için bir Azure VM Aracısı veya Azure Kapsayıcı Aracısı kullanmanız gerekir.

Eklentileri yükler

  1. Jenkins sunucunuzda oturum açın. Jenkins yönetme eklentileriniYönet ' i seçin.

  2. Kullanılabilir sekmesinde, aşağıdaki eklentileri seçin:

    Bu eklentiler listede görünmezse, zaten yüklü olup olmadığını görmek için yüklü sekmesini işaretleyin.

  3. Eklentileri yüklemek için Şimdi İndir ' i ve yeniden başlattıktan sonra Yükle' yi seçin.

  4. Yüklemeyi gerçekleştirmek için Jenkins sunucunuzu yeniden başlatın.

Azure hizmet sorumlusu kimlik bilgilerinizi Jenkins kimlik bilgileri deposuna ekleyin

  1. Azure 'a dağıtmak için bir Azure hizmet sorumlusu gerekir. Daha fazla bilgi için, Azure App Service dağıtma öğreticisindeki hizmet sorumlusu oluşturma bölümüne bakın. Çıkışı aşağıdakine az ad sp create-for-rbac benzer şekilde görünür:

    {
        "appId": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "displayName": "xxxxxxxjenkinssp",
        "name": "http://xxxxxxxjenkinssp",
        "password": "xxxxxx-xxx-xxxx-xxx-xxxxxxxxxxxx",
        "tenant": "xxxxxx--xxx-xxxx-xxx-xxxxxxxxxxxx"
    }
    
  2. Jenkins panosunda CredentialsSystem'ı (Kimlik Bilgileri > Sistem) seçin. Ardından, Global credentials(unrestricted) (Genel kimlik bilgileri (sınırsız)) seçeneğini belirleyin.

  3. Kimlik bilgileri ekle' yi seçin.

  4. hizmet sorumlusunu tür olarak Microsoft Azure seçin.

  5. Aşağıdaki alanlar için değer sağlayın:

    • ABONELIK kimliği: Azure abonelik kimliği
    • ISTEMCI kimliği: hizmet sorumlusu AppID 'si
    • Istemci gizlidizisi: hizmet sorumlusu parolası
    • KIRACı kimliği: MICROSOFT HESABı Kiracı kimliği
    • Azure ortamı: ortamınız için uygun değeri seçin. Örneğin, Azure genel için Azure 'u kullanın
    • Kimlik: olarak ayarlayın . Bu kodu, bu makalenin sonraki bir adımında kullanıyoruz
    • Açıklama: Bu isteğe bağlıdır, ancak önerilir.

Maven 'i ve az CLı Spring-Cloud uzantısını yükler

Örnek işlem hattı, hizmet örneğine dağıtmak için Maven 'yi kullanır ve az CLı kullanır. Jenkins yüklendiğinde, Jenkinsadlı bir yönetici hesabı oluşturur. Jenkins kullanıcısının Spring-Cloud uzantısını çalıştırma izni olduğundan emin olun.

  1. SSH aracılığıyla jenkins denetleyicisine Bağlan.

  2. Maven’i yükleyin.

    sudo apt-get install maven
    
  3. Azure CLı 'nın ' i girerek yüklü olduğunu doğrulayın az version . Azure CLı yüklü değilse bkz. Azure CLI 'Yı yükleme.

  4. jenkinsKullanıcıya geç:

    sudo su jenkins
    
  5. Yay-bulut uzantısını ekleyin:

    az extension add --name spring-cloud
    

Jenkinsfile oluşturma

  1. kendi deponuzda ( https://github.com/< GitHub kimliğiniz > /pölçüleriniz), kökte bir https://github.com/ oluşturun.

  2. Dosyayı aşağıdaki gibi güncelleştirin. Kaynak grubu adı > ve >değerlerini değiştirdiğinizden emin olun. Jenkins 'e kimlik bilgisini eklediğinizde farklı bir değer kullanırsanız, azure_service_principal doğru kimlikle değiştirin.

        node {
          stage('init') {
            checkout scm
          }
          stage('build') {
            sh 'mvn clean package'
          }
          stage('deploy') {
            withCredentials([azureServicePrincipal('azure_service_principal')]) {
              // login 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-cloud=<service name>'
              // Deploy applications
              sh 'az spring-cloud app deploy -n gateway --jar-path ./gateway/target/gateway.jar'
              sh 'az spring-cloud app deploy -n account-service --jar-path ./account-service/target/account-service.jar'
              sh 'az spring-cloud app deploy -n auth-service --jar-path ./auth-service/target/auth-service.jar'
              sh 'az logout'
            }
          }
        }
    
  3. Değişiklikleri kaydedin ve işleyin.

İşi oluşturma

  1. Jenkins panosunda Yeni öğe' ye tıklayın.

  2. İş için bir ad, Deploy-POF ölçümleri sağlayın ve işlem hattıseçin. Tamam'a tıklayın.

  3. Ardından, Pipeline (İşlem hattı) sekmesine tıklayın.

  4. Definition (Tanım) için Pipeline script from SCM'yi (SCM'den işlem hattı betiği) seçin.

  5. SCM için Git'i seçin.

  6. adreslenmiş deponuz için GitHub URL 'sini girin: < GitHub kimliğiniz > /pıbir tanıtıcı

  7. Dal belirticisinin (' any ' için siyah) */Azure olduğundan emin olun

  8. Betik yolunuJenkinsfile olarak tut

  9. Kaydet’e tıklayın

İşi doğrulama ve çalıştırma

İşi çalıştırmadan önce, oturum açma kimliğini girmekiçin oturum açma giriş kutusundaki metni güncelleştirelim.

  1. Kendi deponuzda index.htmlindex.html ' de açın

  2. "Oturum açma bilgilerini girin" ifadesini arayın ve "oturum açma KIMLIĞINI gir" olarak güncelleştirin

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. Değişiklikleri Yürüt

  4. İşi Jenkins 'te el ile çalıştırın. Jenkins panosunda, iş dağıtımı-Pmbölçümleri ' ne tıklayın ve ardından Şimdi derleyin.

İş tamamlandıktan sonra, ağ geçidi UYGULAMASıNıN genel IP adresine gidin ve uygulamanızın güncelleştirildiğinden emin olun.

Piggy ölçümleri güncelleştirildi

Kaynakları temizleme

Artık gerekli değilse, bu makalede oluşturulan kaynakları silin:

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

Sonraki adımlar