日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

基于Jenkins插件實現彈性伸縮中ECS資源包部署

本文為您介紹通過Jenkins插件(Alibabacloud Package Deployment)實現彈性伸縮中ECS資源包部署的最佳實踐。

前提條件

已部署JenKins服務。更多信息,請參見Jenkins官網

背景信息

Jenkins插件(Alibabacloud Package Deployment)是由阿里云彈性伸縮團隊向Jenkins社區提供的插件,該插件結合了阿里云的彈性伸縮ESS云服務器ECS系統運維管理對象存儲OSS等云產品,基于自建的Jenkins平臺,快速實現云上ECS資源的發布部署管理能力。

本文以SpringBoot項目(github地址)為例,介紹如何基于Jenkins插件(Alibabacloud Package Deployment)實現彈性伸縮中ECS資源包部署。

工作原理

在自建的Jenkins平臺上,Jenkins插件(Alibabacloud Package Deployment)結合OOS、OSS、彈性伸縮功能實現彈性伸縮中ECS資源包部署,其工作原理流程如下所示:工作原理圖..png

Jenkins任務執行完成后,由于上述流程中OOS模板已為伸縮組創建一個生命周期掛鉤,如果彈性伸縮后續擴容新的ECS實例時,則在彈性伸縮產品側,該生命周期掛鉤功能可實現從OSS中下載項目包并部署到新擴容出ECS資源上。具體流程如下所示:生命周期..png

準備工作

在操作前,請確保您已經完成以下工作。

  • 安裝JenKins插件(Alibabacloud Package Deployment

    您需要為JenKins服務安裝Alibabacloud Package Deployment插件,以備ECS資源包部署需要。

    1. 登錄已部署的Jenkins服務。

    2. 在左側導航欄,選擇系統管理>插件管理>Available plugins

    3. 在搜索欄中輸入Alibabacloud Package Deployment后,選中插件前的圖片..png圖標,然后單擊Download now and install after restart插件..png

    4. Download progress頁面,等待插件安裝完成后重啟Jenkins。

      Jenkins重啟完成后,選擇系統管理>插件管理>Installed plugins,您可以在Plugins頁面查看到該插件。

  • 創建伸縮組

    本文以創建一個華東1(杭州)地域的ECS類型伸縮組為例(例如ECS-test-group),其中,該伸縮組已擴容3臺ECS實例。具體操作,請參見配置伸縮組伸縮組..png

操作步驟

步驟一:配置阿里云AccessKey信息

使用Alibabacloud Package Deployment插件進行ECS資源部署前,您必須配置阿里云AccessKey信息,

  1. 登錄已部署的Jenkins平臺。

  2. 在左側導航欄,選擇系統管理>系統配置

  3. Configure System頁面,配置Aliyun Access KeyAliyun Secret KeyAK..png

  4. 單擊保存

步驟二:為OOSServiceRole角色授權

配置阿里云AccessKey信息后,還需要在阿里云賬號下創建OOS扮演的角色(OOSServiceRole角色),并為OOSServiceRole角色授權以下自定義策略。具體操作,請參見為OOS服務設置RAM權限

自定義策略腳本示例如下:

{
  "Version": "1",
  "Statement": [
{
    "Version": "1",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ess:ResumeProcesses",
                "ess:DescribeScalingInstances",
                "ess:DescribeLifecycleHooks",
                "ess:CreateLifecycleHook",
                "ess:ModifyLifecycleHook",
                "ess:SuspendProcesses",
                "ess:CompleteLifecycleAction"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "oss:*",
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": [
                "ecs:DescribeInvocations",
                "ecs:TagResources",
                "ecs:DescribeInstances",
                "ecs:RunCommand",
                "ecs:DescribeInvocationResults"
            ],
            "Resource": "*"
        },
        {
            "Effect": "Allow",
            "Action": "oos:ListExecutions",
            "Resource": "*"
        }
    ]
}

步驟三:創建JenKins任務

本文為您介紹通過構建一個自由風格的軟件項目(Freestyle)和Pipeline兩種方式創建JenKins任務的操作方法。

Freestyle創建方式

  1. 在Jenkins頁面的左側導航欄,單擊新建任務

  2. 創建自由風格(即Freestyle方式)的JenKins任務。

    以創建testfreestyle任務為例,具體如下所示:

    freestyle.png

    創建完成后,在Jenkins首頁的任務列表下查看testfreestyle任務已創建成功。

Pipeline創建方式

  1. 在Jenkins頁面的左側導航欄,單擊新建任務

  2. 創建Pipeline方式的JenKins任務。

    以創建testpipeline任務為例,具體如下所示:

    pipeline.png

    創建完成后,在Jenkins首頁的任務列表下查看testpipeline任務已創建成功。

步驟四:構建項目和部署資源包

由于步驟三:創建JenKins任務使用的創建方式不同,對彈性伸縮管理的ECS資源進行包部署的操作也有所不同。

基于Freestyle方式的項目

如果希望在部署資源時實現一站式部署,無需人為干預部署過程,推薦您按照以下操作步驟進行ECS資源的部署。

  1. 在Jenkins任務列表中找到testfreestyle任務,單擊任務名稱(testfreestyle)。

  2. 在左側導航欄,選擇配置>源碼管理,設置需要構建的源碼URL(例如github地址)。

    url.png

  3. 構建后操作區域,單擊增加構建后操作步驟,選擇Alibabacloud Automatic Package Deployment

    構建后操作..png

  4. 設置Alibabacloud Automatic Package Deployment相關參數。

    主要參數說明如下所示,其他參數保持默認值即可。

    配置項

    說明

    示例

    Region

    部署資源以及OSS、OOS的地區。

    華東1(杭州)

    ResourceType

    操作資源類型。目前支持ESS和ECS。

    ESS

    ResourceId

    資源ID。

    說明

    本例選擇的操作資源類型為ESS,因此輸入環境準備中已創建的伸縮組(ECS-test-group)ID。

    asg-bp1fm3eq9dot****

    Bucket

    輸入OSS Bucket名稱。如果您未創建OSS Bucket,請先前往OSS控制臺進行配置,具體操作,請參見創建OSS Bucket

    ossbucketexample

    ObjectName

    構建項目打包后上傳到OSS Bucket的文件名。

    說明

    上傳到OSS Bucket的文件名需要以.zip形式存儲。

    examplename.zip

    LocalPath

    Jenkins已構建項目的待打包上傳的目錄路徑。

    /

    DestinationDir

    項目部署在云服務器ECS的位置。

    /root/example.zip

    BatchNumber

    OOS模板任務執行的批次數(即伸縮組管理的ECS資源包部署的批次數)。

    3

    invokeScript

    項目部署所執行的腳本。

    說明

    請您根據自身需要填寫腳本內容。

  5. 單擊保存

  6. 在左側導航欄,單擊立即構建

  7. 單擊左下角的圖標..jpeg(構建進度圖標),進入控制臺輸出頁面,查看項目已成功構建(SUCCESS)。一次性執行完成..png

基于Pipeline方式的項目

如果為了防止部署過程中出現異常,希望通過分批次暫停的部署方式,確保每一批次部署執行正常,推薦您使用流水線Pipeline script設置的方法。

  1. 在Jenkins任務列表中找到testpipeline任務,單擊任務名稱(testpipeline)。

  2. 在左側導航欄,選擇配置>流水線,配置流水線相關參數,然后單擊保存

    • 定義:選擇Pipeline script選項。

    • 腳本:輸入Pipeline script腳本內容。腳本示例如下所示。

      該腳本示例主要實現:Jenkins構建SpringBoot項目后,Jenkins插件會將其打包并上傳到OSS服務,然后執行OOS任務下載OSS上的目錄包,并將該目錄包分3批次下載在伸縮組所管理的ECS資源上,通過腳本命令啟動SpringBoot項目的tomcat demo服務,每完成一批任務,OOS任務將處于任務暫停狀態,此時,您可以根據已完成的部署情況,選擇OOS任務下一批部署操作是繼續還是取消。本示例以每10s查詢OOS執行任務狀態為例。

      pipeline {
              agent any
              stages {
                  stage('項目拉取') {
                      steps {
                          script{
                            checkout scmGit(
              branches: [[name: 'v2.1.0.RELEASE']],
              userRemoteConfigs: [[url: 'https://github.com/spring-projects/spring-boot']])
                        }
                  }
                  }
                  stage('構建項目打包上傳部署') {
                      steps {
                          script {
                              //將構建項目指定目錄打包上傳OSS后,OOS模板通過分批暫停方式將OSS上傳完成的包部署到ESS管理的ECS資源中,此時會返回OOS執行任務Id
                              executeId = ossUploadAndOosExec(batchNumber:3, mode:'FailurePause', bucket:
                              'zln****', destinationDir:'/root/kk/testpipeline.zip', invokeScript:'source /etc/profile \\ncd /root/kk \\nunzip testpipeline.zip \\ncd /root/kk/testpipeline/spring-boot-samples/spring-boot-sample-tomcat \\nmvn spring-boot:run &', localPath:'/', objectName:
                              'workspace/spring****.zip', pausePolicy:'EveryBatchPause', region:'cn-hangzhou', resourceId:
                              'asg-bp15isanqpyoclxa****', resourceType:'ESS')
                              env.EXECUTE_ID = executeId
                              //通過OOS執行任務Id查詢OOS執行狀態
                              def status = oosStatusQuery(executeId:"${executeId}", region:'cn-hangzhou')
                              //當OOS執行任務狀態沒有處于終態,進入循環
                              while (status != 'Success' && status != 'Failed' && status != 'Cancelled') {
                                  //如果OOS執行任務狀態處于等待狀態,此時需要用戶需要輸入命令,選擇是否要執行下一批ECS資源的部署
                                  if (status == 'Waiting') {
                                      //通過用戶操作的選項,選擇Approve/Cancelled 實現執行下一批ECS資源的部署或者jenkins任務結束
                                      def policy = input message:
                                      'Policy input required', ok:'OK',
                                              parameters: [choice(name:'OOS execute policy', choices:
                                      'Approve\nCancelled', description:'How to execute next step?')]
                                      //通過執行任務Id以及執行任務通知類型,推動OOS執行任務是繼續執行還是取消任務執行
                                      oosExecuteNotify executeId:"${executeId}", notifyType:"${policy}", region:'cn-hangzhou'
                                  }
                                  //查詢OOS執行任務的間隔
                                  sleep 10
                                  //通過OOS執行任務Id查詢OOS執行狀態
                                  status = oosStatusQuery(executeId:"${executeId}", region:'cn-hangzhou')
                              }
      
                          }
      
                      }
                  }
              }
              post {
                  aborted {
                      script {
                          //防止jenkins任務執行終止時,OOS任務還處于運行/暫停狀態,這里在終止jenkins任務前將OOS任務進行取消
                          if (env.EXECUTE_ID != null) {
                              oosExecuteNotify executeId:"${env.EXECUTE_ID}", notifyType:"Cancelled", region:'cn-hangzhou'
                          }
                      }
      
                  }
              }
          }
      說明

      為確保上述示例應用程序能夠順利構建,您必須確保待擴容的ECS實例已具備Maven、Java和unzip環境。

  3. 可選:查看流水線示例步驟腳本。

    編輯上述Pipeline script腳本內容時,您可以參考Jenkins工具中Alibabacloud Package Deployment插件提供的3個流水線示例步驟,借助流水線語法中的片段生成器中的示例步驟,編輯符合實際場景需要的流水線步驟腳本。

    1. 流水線區域,單擊流水線語法

    2. 進入片段生成器頁面,在步驟區域的示例步驟下拉列表中,選擇并配置Alibabacloud Package Deployment插件提供的3個流水線示例步驟。具體詳情如下所示:示例步驟..png

      • ossUploadAndOosExec:用于將已構建項目的相關目錄打包并上傳到OSS服務,然后OOS通過下載OSS上的目錄包并在相關ECS資源上進行部署。您可以通過配置以下相關參數,然后單擊生成流水線腳本,生成可參考的腳本內容。

        配置項

        說明

        Region

        OOS、OSS以及彈性伸縮所在的地域。例如華東1(杭州)

        ResourceType

        資源類型。目前支持ESS和ECS。

        本例選擇了ESS資源類型。

        ResourceId

        資源ID。本例設置了已創建的伸縮組ID。

        Mode

        OOS模板的執行方式,取值范圍:

        • Automatic(默認值):自動執行。

        • FailurePause:失敗暫停。

        • Debug:單步執行。

        本例選擇了FailurePause執行方式。

        PausePolicy

        OOS模板的循環模式,取值范圍:

        • Automatic(默認值):不暫停。

        • EveryBatchPause:每批暫停。

        • FirstBatchPause:第一批暫停。

        本示例選擇了EveryBatchPause模式。

        BatchNumber

        OOS模板執行的批次。

        Bucket

        OSS Bucket的名稱。

        ObjectName

        上傳至OOS的文件名稱。

        LocalPath

        已構建項目待打包的目錄路徑。

        DestinationDir

        OOS部署項目至ECS資源上的位置。

        InvokeScript

        部署項目所執行的腳本。

      • oosStatusQuery:用于查詢OOS模板的任務狀態,您可以通過配置以下相關參數,然后單擊生成流水線腳本,生成可參考的腳本內容。

        配置項

        說明

        Region

        OOS模板任務的所屬地域,例如華東1(杭州)

        ExecuteId

        OOS模板任務的執行ID。您可以前往OOS控制臺查看,例如exec-******

      • oosExecuteNotify:用于OOS任務暫停后,執行下一步的操作,例如:任務繼續或取消。您可以通過配置以下相關參數,然后單擊生成流水線腳本,生成可參考的腳本內容。

        配置項

        說明

        Region

        OOS模板暫停任務所屬地域,例如華東1(杭州)

        ExecuteId

        OOS模板暫停任務的執行ID。您可以前往OOS控制臺查看,例如exec-******

        NotifyType

        OOS模板暫停任務執行的下一步操作。取值范圍:

        • Approve:任務繼續執行。

        • Cancelled:任務取消。

    3. 生成流水線腳本下方,查看已生成的流水線示例腳本。

      例如通過配置ossUploadAndOosExec可生成如下腳本,您可根據示例腳本內容,編寫滿足實際場景需要的流水線腳本。生成腳本示例步驟..png

    4. 在左側導航欄,單擊返回

  4. 在左側導航欄,單擊立即構建

  5. 通過階段視圖頁面或者控制臺輸出頁面,查看部署任務的執行情況。

    • 階段視圖頁面

      例如:在階段視圖頁面,當OOS任務處于暫停狀態時,單擊下圖中藍色區域(In Progress),在彈出的選項框中,根據部署情況,選擇OOS模板任務暫停后的下一步操作為ApproveCancelled

      pipe-xingqiyi..png

    • 控制臺輸出頁面

      例如:在控制臺輸出頁面,當構建出現Input requested命令時,單擊Input requested,根據部署情況,在彈出的Policy input required頁面,選擇OOS模板任務暫停后的下一步操作為ApproveCancelled選擇下一步操作..png

驗證結果

驗證Alibabacloud Package Deployment插件的執行效果,可前往OSS控制臺、ECS控制臺、OOS控制臺或者彈性伸縮控制臺查看相應執行結果是否已生成。

  • 前往對象存儲OSS管理控制臺,查看上傳打包的文件。具體操作,請參見搜索文件存儲..png

  • 前往ECS云服務器管理控制臺,獲取ECS公網IP地址,然后在瀏覽器中輸入http://<ECS公網IP>:8080,并按回車鍵啟動項目。如果網頁可以正常訪問(如下圖所示)表示項目已正常啟動。2023-06-30_14-10-56.png

    說明

    <ECS公網IP>替換為您實際擴容ECS實例的公網IP地址。

  • 前往系統運維管理(OOS)管理控制臺,查看模板執行詳情。具體操作,請參見查看執行詳情OOS執行結果..png

  • 前往彈性伸縮控制臺,查看伸縮組中自動生成的生命周期掛鉤。OOS模板會觸發伸縮組自動創建一個生命周期掛鉤。生命周期掛鉤..png可選:如果彈性伸縮后續擴容了新的ECS實例,伸縮組的生命周期掛鉤功能可實現自動下載OSS中的項目包并進行新ECS資源包部署。