자습서: Jenkins 및 Azure CLI를 사용하여 Azure Spring Apps에 앱 배포

참고 항목

Azure Spring Apps는 Azure Spring Cloud 서비스의 새 이름입니다. 서비스에 새 이름이 지정되었지만, 자산을 업데이트하는 동안 스크린샷, 비디오, 다이어그램과 같은 일부 위치에서는 당분간 이전 이름이 표시됩니다.

Azure Spring Apps 는 기본 제공 서비스 검색 및 구성 관리를 통해 완전히 관리되는 마이크로 서비스 개발입니다. 이 서비스를 사용하면 Spring Boot 기반 마이크로 서비스 애플리케이션을 Azure에 쉽게 배포할 수 있습니다. 이 자습서에서는 Jenkins에서 Azure CLI를 사용하여 Azure Spring Apps에 대한 CI/CD(지속적인 통합 및 배달)를 자동화하는 방법을 보여 줍니다.

이 자습서에서는 다음 작업을 완료합니다.

  • 서비스 인스턴스 프로비저닝 및 Java Spring 애플리케이션 시작
  • Jenkins 서버 준비
  • Jenkins 파이프라인의 Azure CLI를 사용하여 마이크로서비스 애플리케이션 빌드 및 배포

필수 조건

  • Azure 구독: Azure 구독이 아직 없는 경우 시작하기 전에 체험 계정을 만듭니다.

서비스 인스턴스 프로비저닝 및 Java Spring 애플리케이션 시작

Piggy 메트릭을 샘플 Microsoft 서비스 애플리케이션으로 사용하고 빠른 시작에서 동일한 단계를 따릅니다. Azure CLI를 사용하여 Java Spring 애플리케이션을 시작하여 서비스 인스턴스를 프로비전하고 애플리케이션을 설정합니다. 동일한 프로세스를 이미 수행한 경우 다음 섹션으로 건너뛸 수 있습니다. 그렇지 않으면 Azure CLI 명령이 포함됩니다. 빠른 시작을 참조하세요 . 자세한 내용을 보려면 Azure CLI 를 사용하여 Java Spring 애플리케이션을 시작합니다.

로컬 머신은 Jenkins 빌드 서버와 동일한 필수 구성 요소를 충족해야 합니다. 마이크로 서비스 애플리케이션을 빌드하고 배포하기 위해 다음이 설치되어 있는지 확인합니다.

  1. Azure Spring Apps 확장을 설치합니다.

    az extension add --name spring
    
  2. Azure Spring Apps 서비스를 포함할 리소스 그룹을 만듭니다.

    az group create --location eastus --name <resource group name>
    
  3. Azure Spring Apps의 인스턴스를 프로비전합니다.

    az spring create -n <service name> -g <resource group name>
    
  4. Piggy 메트릭 리포지토리를 사용자 고유의 GitHub 계정으로 포크합니다. 로컬 컴퓨터에서 다음 디렉터 source-code리에 리포지토리를 복제합니다.

    mkdir source-code
    git clone https://github.com/<your GitHub id>/piggymetrics
    
  5. 구성 서버를 설정합니다. GitHub ID>를 올바른 값으로 바꿔<야 합니다.

    az spring config-server git set -n <your-service-name> --uri https://github.com/<your GitHub id>/piggymetrics --label config
    
  6. 프로젝트를 빌드합니다.

    cd piggymetrics
    mvn clean package -D skipTests
    
  7. 게이트웨이, 인증 서비스 및 계정 서비스라는 세 가지 마이크로 서비스를 만듭니다.

    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. 애플리케이션을 배포합니다.

    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. 퍼블릭 엔드포인트를 게이트웨이에 할당합니다.

    az spring app update -n gateway -s <service name> -g <resource group name> --is-public true
    
  10. 게이트웨이 애플리케이션을 쿼리하여 애플리케이션이 실행 중인지 확인할 수 있도록 URL을 가져옵니다.

    az spring app show --name gateway | grep url
    
  11. 이전 명령에서 제공한 URL로 이동하여 PiggyMetrics 애플리케이션을 실행합니다.

Jenkins 서버 준비

이 섹션에서는 빌드를 실행하도록 Jenkins 서버를 준비합니다. 이는 테스트에 적합합니다. 그러나 보안에 영향을 주므로 Azure VM 에이전트 또는 Azure Container Agent를 사용하여 Azure에서 에이전트를 스핀업하여 빌드를 실행해야 합니다.

플러그 인 설치

  1. Jenkins 서버에 로그인합니다.

  2. Jenkins 관리를 선택합니다.

  3. 플러그 인 관리를 선택합니다.

  4. 사용 가능한 탭에서 다음 플러그 인을 선택합니다.

    이러한 플러그 인이 목록에 표시되지 않으면 설치된 탭을 검사 이미 설치되어 있는지 확인합니다.

  5. 플러그 인을 설치하려면 지금 다운로드를 선택하고 다시 시작한 후 설치합니다.

  6. Jenkins 서버를 다시 시작하여 설치를 완료합니다.

Jenkins 자격 증명 저장소에 Azure 서비스 주체 자격 증명 추가

  1. Azure에 배포하려면 Azure 서비스 주체가 필요합니다. 자세한 내용은 Azure 앱 Service에 배포 자습서의 서비스 주체 만들기 섹션을 참조하세요. 출력 az ad sp create-for-rbac 은 다음과 같습니다.

    {
        "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 대시보드에서 자격 증명>시스템을 선택합니다. 그런 다음, 전역 자격 증명(무제한)을 선택합니다.

  3. 자격 증명 추가를 선택합니다.

  4. Microsoft Azure 서비스 주체를 종류로 선택합니다.

  5. 다음 필드에 대한 값을 제공합니다.

    • 구독 ID: Azure 구독 ID입니다.
    • 클라이언트 ID: 서비스 주체 appid
    • 클라이언트 암호: 서비스 주체 암호
    • 테넌트 ID: Microsoft 계정 테넌트 ID
    • Azure 환경: 환경에 적합한 값을 선택합니다. 예를 들어 Azure Global용 Azure 사용
    • ID: 로 azure_service_principal설정 이 문서의 이후 단계에서 이 ID를 사용합니다.
    • 설명: 이 값은 선택 사항이지만 설명서/기본 테넌트 관점에서 권장됩니다.

Maven 및 Azure CLI Spring 확장 설치

샘플 파이프라인은 Maven을 사용하여 빌드하고 Azure CLI를 사용하여 서비스 인스턴스에 배포합니다. Jenkins가 설치되면 jenkins라는 관리자 계정을 만듭니다. 사용자 Jenkins 에 Spring 확장을 실행할 수 있는 권한이 있는지 확인합니다.

  1. SSH를 통해 Jenkins 컨트롤러에 커넥트.

  2. Maven 설치

    sudo apt-get install maven
    
  3. 를 입력 az version하여 Azure CLI가 설치되어 있는지 확인합니다. Azure CLI가 설치되지 않은 경우 Azure CLI 설치를 참조하세요.

  4. 다음과 같이 jenkins 사용자로 전환합니다.

    sudo su jenkins
    
  5. Spring 확장을 설치합니다.

    az extension add --name spring
    

Jenkinsfile 만들기

  1. 사용자 고유의 리포지토리에서 - https://github.com/your_github_id/piggymetrics 루트에 Jenkinsfile을 만듭니다 .

  2. 다음과 같이 파일을 업데이트합니다. 리소스 그룹 이름 및< 서비스 이름의> 값을 <바꿔야 합니다>. Jenkins에서 자격 증명을 추가할 때 다른 값을 사용하는 경우 azure_service_principal 올바른 ID로 바꿉니다.

        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. 변경 내용을 저장하고 커밋합니다.

작업 만들기

  1. Jenkins 대시보드에서 새 항목을 선택합니다.

  2. 이름, 작업에 대한 Deploy-PiggyMetrics를 제공하고 파이프라인을 선택합니다. 확인을 클릭합니다.

  3. 파이프라인 탭을 선택합니다.

  4. 정의의 경우 SCM에서 파이프라인 스크립트를 선택합니다.

  5. SCM의 경우 Git을 선택합니다.

  6. 포크된 리포지토리에 대한 GitHub URL을 입력합니다. https://github.com/&lt;your GitHub id&gt;/piggymetrics.git

  7. 분기 지정자('any'의 경우 검은색)로 /Azure를 선택합니다.

  8. 스크립트 경로에 대해 Jenkinsfile을 선택합니다.

  9. 저장을 선택합니다.

작업 유효성 검사 및 실행

작업을 실행하기 전에 로그인 입력 상자의 텍스트를 편집하여 로그인 ID입력합니다.

  1. 리포지토리에서 .에서 /gateway/src/main/resources/static/엽니다index.html.

  2. 해당 텍스트를 검색 enter your login 하여 업데이트합니다 enter login ID.

    <input class="frontforms" id="frontloginform" name="username" placeholder="enter login ID" type="text" autocomplete="off"/>
    
  3. 변경 내용을 저장하고 커밋합니다.

  4. Jenkins에서 작업을 수동으로 실행합니다. Jenkins 대시보드에서 작업을 Deploy-PiggyMetrics 선택한 다음 지금 빌드를 선택합니다.

작업이 완료되면 애플리케이션의 gateway 공용 IP로 이동하여 애플리케이션이 업데이트되었는지 확인합니다.

Updated Piggy Metrics

리소스 정리

더 이상 필요하지 않은 경우 이 문서에서 만든 리소스를 삭제합니다.

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

다음 단계