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

通過Maven插件自動部署應用

您可以通過Maven的toolkit-maven-plugin插件完成SAE應用的自動化部署。本文介紹通過Maven自動化部署應用的典型場景、操作步驟、配置參數以及如何部署多模塊工程。

前提條件

背景信息

toolkit-maven-plugin是一個開源工具,能夠幫助您構建一個完整的生命周期框架,完成項目的基礎工具建設。功能特性如下:

  • 可擴展,能夠輕松編寫Java或腳本語言。

  • 能夠將任意數量的項目構建到預定義的輸出類型中,例如JAR、WAR或基于項目元數據的分發,在大多數情況下無需執行任何腳本。

  • 無需額外的配置,就可以與源代碼管理系統(例如Subversion或Git)集成,并可以基于某個標簽管理項目的發布。

典型場景示例

本地構建WAR或FatJAR包并部署應用

例如,您在華北2(北京)地域下有WAR類型的應用,期望在本地使用WAR包部署應用。文件打包和部署配置如下。

  • 打包文件

    apiVersion: V1
    kind: AppPackage
    spec:
      packageType: War                                    
  • 部署文件

    apiVersion: V1
    kind: AppDeployment
    spec:
      type: serverless
      target:
        appId:        # 部署應用的ID。如果配置了該參數則無需配置namespaceId和appName。
        namespaceId:  # 應用所屬命名空間ID。如果您不清楚應用ID,可使用應用所屬命名空間及應用名稱部署。
        appName:      # 應用名稱。如果您不清楚應用ID,可使用應用名稱及命名空間部署。                                      

使用已有鏡像地址部署鏡像類型應用

例如,您在華北2(北京)地域下有一個鏡像類型應用,期望使用已有的鏡像部署應用。文件打包和部署配置如下。

  • 打包文件

    apiVersion: V1
    kind: AppPackage
    spec:
      packageType: Image
      imageUrl: registry.cn-beijing.aliyuncs.com/test/gateway:latest  # 鏡像地址。
      acrInstanceId: # ACR EE實例ID。如果需要使用ACR EE,則填寫該參數。
  • 部署文件

    apiVersion: V1
    kind: AppDeployment
    spec:
      type: serverless
      target:
        appId:        # 部署應用的ID。如果配置了該參數則無需配置namespaceId和appName。
        namespaceId:  # 應用所屬命名空間ID。如果您不清楚應用ID,可使用應用所屬命名空間及應用名稱部署。
        appName:      # 應用名稱。如果您不清楚應用ID,可使用應用名稱及命名空間部署。                                  

本地構建鏡像上傳至倉庫并部署應用

例如,您在華北2(北京)地域下有鏡像類型應用,期望在本地編譯并構建為鏡像,然后上傳到阿里云鏡像倉庫部署應用。文件打包和部署配置如下。

  • 打包文件

    apiVersion: V1
    kind: AppPackage
    spec:
      packageType: Image
      build:
        docker:
           dockerfile: Dockerfile # 指定Dockerfile。
           imageRepoAddress:      # 鏡像倉庫地址。
           imageTag:              # 鏡像Tag。
           imageRepoUser:         # 鏡像倉庫用戶名。
           imageRepoPassword:     # 鏡像倉庫密碼。
      acrInstanceId:              # ACR EE實例ID。如果需要使用ACR EE,則填寫該參數。
  • 部署文件

    apiVersion: V1
    kind: AppDeployment
    spec:
      type: serverless
      target:
        appId:        # 部署應用的ID。如果配置了該參數則無需配置namespaceId和appName。
        namespaceId:  # 應用所屬命名空間ID。如果您不清楚應用ID,可使用應用所屬命名空間及應用名稱部署。
        appName:      # 應用名稱。如果您不清楚應用ID,可使用應用名稱及命名空間部署。                                      

部署應用

本示例介紹如何通過添加插件依賴并部署配置信息,將本地環境的工程部署到SAE上。

  1. 在打包工程的pom.xml文件中添加插件依賴。

    說明

    建議您使用最新1.1.8版本的toolkit-maven-plugin。

    <build>
        <plugins>
            <plugin>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>toolkit-maven-plugin</artifactId>
                <version>1.1.8</version>
            </plugin>
        </plugins>
    </build>                            
  2. 配置插件信息。

    配置插件信息主要包括配置賬號、打包和部署信息。更多信息,請參見更多配置項

    1. 配置賬號信息。

      在打包工程的根目錄下創建文件格式為YAML的賬號配置文件,命名為toolkit_profile.yaml并輸入以下信息。

      regionId:        # 應用所在地域。
      accessKeyId:     # 訪問阿里云資源的AccessKey ID,建議您使用RAM用戶的AccessKey ID降低安全風險。
      accessKeySecret: # 訪問阿里云資源的AccessKey Secret,建議您使用RAM用戶的AccessKey Secret降低安全風險。                                    
    2. 配置打包信息。

      在打包工程的根目錄下創建文件格式為YAML的打包配置文件。如果打包工程為Maven的子模塊,則需要在子模塊的目錄下創建該文件,并命名為toolkit_package.yaml,輸入以下信息。

      apiVersion: V1
      kind: AppPackage
      spec:
       packageType:   # 應用部署包類型,支持War、FatJar、Image、url。您只有在該處配置了URL,packageUrl才能生效。
       packageUrl:    # 部署包地址,War、FatJar類型應用可配置。不填則使用當前Maven構建的包部署。
       imageUrl:      # 如果部署包類型為Image,可配置此字段。Image類型也可以在本地構建Docker鏡像部署。
       acrInstanceId: # ACR EE實例ID。如果需要使用ACR EE,則填寫該參數。
    3. 配置部署信息。

      在打包工程的根目錄下創建文件格式為YAML的部署文件,命名為toolkit_deploy.yaml,并輸入以下信息。

      apiVersion: V1
      kind: AppDeployment
      spec:
       type: serverless
       target:
         appId:        # 部署應用的ID。如果配置了該參數則無需配置namespaceId和appName。
         namespaceId:  # 應用所屬命名空間ID。如果您不清楚應用ID,可使用應用所屬命名空間及應用名稱部署。
         appName:      # 應用名稱。如果您不清楚應用ID,可使用應用名稱及命名空間部署。                                   
  3. 進入pom.xml所在的目錄,執行以下命令構建部署工程。

    重要

    如果部署的是Maven子模塊,需要進入子模塊pom.xml文件所在的目錄執行部署工程。

    mvn clean package toolkit:deploy -Dtoolkit_profile=toolkit_profile.yaml -Dtoolkit_package=toolkit_package.yaml -Dtoolkit_deploy=toolkit_deploy.yaml                           

    命令參數說明如下。

    參數

    說明

    toolkit:deploy

    打包完成后,部署應用。

    -Dtoolkit_profile

    指定賬號配置文件。如果賬號文件與pom.xml在同一個目錄下,且名稱為.toolkit_profile.yaml,可不填寫該參數,插件會自動獲取。

    重要

    插件自動獲取的.toolkit_profile.yaml文件名最前面包含英文句號。

    -Dtoolkit_package

    指定打包文件。如果打包文件與pom.xml在同一個目錄下,且名稱為.toolkit_package.yaml,可不填寫該參數,插件會自動獲取。

    重要

    插件自動獲取的.toolkit_package.yaml文件名最前面包含英文句號。

    -Dtoolkit_deploy

    指定部署文件。如果部署文件與pom.xml在同一個目錄下,且名稱為.toolkit_deploy.yaml,可不填寫該參數,插件會自動獲取。

    重要

    插件自動獲取的.toolkit_deploy.yaml文件名最前面包含英文句號。

    -Ddeploy_version

    指定部署的版本號,優先級高于toolkit_deploy.yaml文件中的Version配置。

    說明

    該參數僅支持1.1.2及以上版本的toolkit-maven-plugin插件。

    執行該打包命令后,系統顯示如下結果,當返回信息中顯示BUILD SUCCESS表示部署成功。page_deploy_maven_plugin_version_1.1.8

部署多模塊工程

模塊工程是常見的項目組織形式,toolkit-maven-plugin插件支持以下兩種方式來部署多模塊工程。

在父工程中執行打包及部署命令

此方式支持1.0.3及以上版本的toolkit-maven-plugin。

在父工程中執行toolkit:deploy命令時,增加-Ddeploy_artifacts參數來指定需要部署的子模塊Artifact ID。如果希望部署多個子模塊,請以英文半角逗號(,)分隔。

例如,一個CarShop工程存在以下示例的子模塊:

carshop
   itemcenter-api
   itemcenter
   detail

如果想同時部署itemcenter和detail子模塊,您可以在carshop目錄下,執行以下命令:

mvn clean package toolkit:deploy -Ddeploy_artifacts=itemcenter,detail

默認情況下,此插件會根據itemcenter和detail模塊下的.edas_config.yaml文件來分別部署對應的應用。您也可以通過增加-Dedas_config參數來指定配置文件。

在子模塊中執行打包及部署命令

此方式支持所有版本的toolkit-maven-plugin。

首先,在父工程中執行install命令,將子模塊依賴安裝到本地的Maven倉庫。然后,進入需要部署的子模塊目錄下執行toolkit:deploy命令。

更多配置項

  • 展開查看打包參數。

    打包文件支持的參數如下所示。

    apiVersion: V1
    kind: AppPackage
    spec:
      packageType:   # 應用部署包類型,支持War、FatJar、Image、url。您只有在該處配置了URL,packageUrl才能生效。
      imageUrl:      # 鏡像地址,Image包類型應用可設置。如果設置了spec.build.docker,使用本地構建的鏡像部署,無需設置該參數。
      acrInstanceId: # ACR EE實例ID。如果需要使用ACR EE,則填寫該參數。
      packageUrl:    # 部署包地址,War、FatJar類型應用可填入。
      build:
        docker:
           dockerfile:        # Docker鏡像構建文件。如果您希望在本地構建鏡像部署,需要填入此字段,例如:Dockerfile。
           imageRepoAddress:  # 阿里云鏡像倉庫地址。如果您希望在本地構建鏡像部署,需要填入此字段,例如:registry.cn-beijing.aliyuncs.com/edas_demo/demo。
           imageTag:          # 鏡像Tag。如果您希望在本地構建鏡像部署,需要填入此字段,例如:test。
           imageRepoUser:     # 阿里云鏡像倉庫用戶名。如果您希望在本地構建鏡像部署,需要填入此字段,例如:***@***。
           imageRepoPassword: # 阿里云鏡像倉庫密碼。如果您希望在本地構建鏡像部署,需要填入此字段,例如:password。
        oss:
           bucket:              # 目標存儲桶名稱。如果您希望使用自定義的OSS倉庫存儲部署包,需要填入此字段,例如:bucket-name01。
           key:                 # OSS自定義路徑。如果您希望使用自定義的OSS倉庫存儲部署包,需要填入此字段,例如:test1/test.jpg。
           accessKeyId:         # OSS賬號。如果您希望使用自定義的OSS倉庫存儲包,需要填入此字段。
           accessKeySecret:     # OSS密碼。如果您希望使用自定義的OSS倉庫存儲包,需要填入此字段。
           useVpcEndpoint: true # 是否通過內網上傳文件。true表示通過內網上傳,false表示不通過內網上傳。
           accessTimeout:30     # 部署包臨時訪問地址的過期時間,單位為分鐘,默認為30。如果您希望使用自定義的過期時間,可修改該字段。                       
  • 展開查看部署參數。

    部署文件當前支持的完整參數如下所示。

    說明
    • 如果您有新的參數需要支持,請加入釘群(釘群號:32874633),聯系產品技術專家進行咨詢。

    • 為了能夠完整地使用以下參數部署應用,推薦您使用最新版本的Maven插件。

    apiVersion: V1
    kind: AppDeployment
    spec:
      type: serverless
      target:
        appName:     # 應用名稱。
        namespaceId: # 應用所在命名空間。
        appId:       # 應用ID。插件會使用此應用進行部署,如果未填入則使用namespaceId和appname來查找應用進行部署。
      version:       # 部署版本號,默認使用日時分秒格式。
      jdk:           # 部署的包依賴的JDK版本,支持以下6個選項:Open JDK 8、Open JDK 7、Dragonwell 11、Dragonwell 8、openjdk-8u191-jdk-alpine3.9、openjdk-7u201-jdk-alpine3.9。鏡像不支持。
      webContainer:  # 部署的包依賴的Tomcat版本,支持以下2個選項:apache-tomcat-7.0.91、apache-tomcat-8.5.42。
      batchWaitTime: # 分批等待時間。
      command:       # 鏡像啟動命令。該命令必須為容器內存在的可執行的對象。
      commandArgs:   # 鏡像啟動命令參數。上述啟動命令所需參數。
      - 1d
      updateStrategy: 
        type: GrayBatchUpdate # 部署類型,BatchUpdate表示分批部署,GrayBatchUpdate表示灰度部署。
        batchUpdate: 
          batch: 2 # 分批數,如果是灰度部署,表示灰度批次后的分批數。
          releaseType: manual # 分批類型。manual表示手動分批,auto表示自動分批。
          batchWaitTime: 0 # 分批類型為auto時使用,表示分批間間隔時間,單位為分鐘。
        grayUpdate: # 灰度部署時需要配置。
          gray: 1 # 灰度的實例數。
      envs:    # 容器環境變量參數。
        - name: envtmp0
          value: '0'
        - name: envtmp1
          value: '1'
      customHostAlias:  # 容器內自定義host映射。
        - hostName: 'samplehost1'
          ip: '127.X.X.X'
        - hostName: 'samplehost2'
          ip: '127.X.X.X'
      jarStartOptions:  # JAR包啟動應用選項。
      jarStartArgs:     # JAR包啟動應用參數。
      liveness:   # 容器健康檢查,健康檢查失敗的容器將被重啟。
        exec:
          command:
            - sleep
            - 1s
        initialDelaySeconds: 5
        timeoutSeconds: 11
        periodSeconds: 30 
      readiness:  # 應用啟動狀態檢查,多次健康檢查失敗的容器將被重啟。不通過健康檢查的容器將不會有SLB流量進入。
        exec:
          command:
            - sleep
            - 1s
        initialDelaySeconds: 5
        timeoutSeconds: 11
        periodSeconds: 30   
      minReadyInstances: 1  # 最小存活實例數。在滾動升級過程中或者滾動升級失敗時,可用實例數都將盡可能不小于該值,為0則沒有限制。彈性擴縮容的范圍不能小于該值,否則將觸發異常。
      timezone: Asia/Shanghai # 時區設置。
      warStartOptions: CATALINA_OPTS=\"$CATALINA_OPTS $Options\" catalina.sh run # WAR包部署的啟動命令。
      tomcatConfig: # 以WAR包部署的Tomcat配置。
        port: 8082
        maxThreads: 399
        contextPath: /test/
        uriEncoding: UTF-8
        useBodyEncodingForUri: false
      nasConfig: # NAS配置。
        nasId: 3fc4*****
        mountHost: 3fc4*****.cn-shanghai.nas.aliyuncs.com
        mountDesc:
          - mountPath: /nas
            nasPath: /
      postStart: # 啟動后處理。
        exec:
          command:
            - sh
            - -c
            - echo helloPostStart
      preStop: # 停止前處理。
        exec:
          command:
            - sh
            - -c
            - echo helloPreStop
      terminationGracePeriodSeconds: 9 # 優雅下線時間,單位為秒。
      changeOrderDesc: maven test # 發布說明。
      autoEnableApplicationScalingRule: true # 是否自動啟用彈性規則。
      associateEip: true # EIP配置。該配置與autoEnableApplicationScalingRule的配置互斥,即二者只能有一個取值為true。
      configMapMountDesc: # ConfigMap配置。
        - configMapId: 123**
          key: config1
          mountPath: /configMap
      enableAhas: true # 是否啟用AHAS。
      ossConfig: # OSS配置。
        ossAkId: ******
        ossAkSecret: ******
        ossMountDescs:
          - bucketName: ******-cn-shanghai-s-*****
            bucketPath: /
            mountPath: /ossPath
            readOnly: true
      slsConfigs: # SLS日志采集設置,不填寫選填項,則SAE會自動創建相應SLS資源;選填1和2,會采用指定SLS資源并自動創建Logtail配置;選填1、2和3,則完全采用您指定的SLS資源與Logtail配置。
        - logDir: /tmp/test.log # 必填,文件日志路徑。
          projectName: test-project   # 選填項1。
          logstoreName: test-logstore # 選填項2。
          logtailName: test-logtail   # 選填項3。

更多信息

SAE部署應用完成后,您可以對應用進行如下操作。

操作

相關文檔

更新、擴縮容、啟停、刪除應用等生命周期管理的操作

管理應用生命周期

自動彈性伸縮、CLB綁定和批量啟停等提升應用性能的操作

日志管理、監控管理、應用事件查看和變更記錄查看等聚焦應用運行狀態的操作