Cloud Toolkit Maven 插件部署应用到阿里云 EDAS

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
性能测试 PTS,5000VUM额度
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
简介: 针对 EDAS 开发者,如果当前正在使用 WAR 包或 JAR 包来部署应用,那么就可以通过 Cloud Toolkit Maven 插件部署应用到阿里云 EDAS。

针对 EDAS 开发者,如果当前正在使用 WAR 包或 JAR 包来部署应用,那么就可以通过 Cloud Toolkit Maven 插件部署应用到阿里云 EDAS。

第 1 步 :添加 Maven 依赖

在项目工程的 pom.xml 文件中,添加如下 <build> 依赖

<build>
 <plugins>
     <plugin>
         <groupId>com.alibaba.cloud</groupId>
         <artifactId>toolkit-maven-plugin</artifactId>
         <version>1.0.0</version>
     </plugin>
 </plugins>
</build>
AI 代码解读

从 Mavan 官方中央仓库 查询最新版本

第 2 步 :设置 yaml 文件

在项目工程的根目录下创建一个 .edas_config.yaml 文件。如果打包工程为 Maven 的子模块,则需要在子模块的根目录下创建该文件,文件内容如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-0000-567-1234-5f6a54550453
AI 代码解读

以上配置项中,region_id 为应用机器所在的区域 ID,app_id 为应用 ID,以上的配置参数为示例参数,请替换成您的应用参数。更多参数请参阅本文文末的更多配置项。

第 3 步:关联 EDAS 账号

在任意目录下新建一个账号文件,使用 yaml 格式配置 Access Key ID 和 Access Key Secret,Access Key ID 和 Access Key Secret 可登录阿里云用户信息管理查看。配置示例如下:

access_key_id: 123456
access_key_secret: 7891011
AI 代码解读

第 4 步:完成部署

进入您的根目录(如果为 Maven 多模块则进入子模块目录),打包命令:

mvn package toolkit:deploy -Daccess_key_file={账号文件路径}
AI 代码解读

image

执行以上命令后,看到终端输出上图日志,代表应用已经成功部署到 EDAS 了。

更多配置项

部署应用的配置项可分成三大类:

  • 基本环境(env)
  • 应用配置(app)
  • 存储配置(oss)

目前支持的配置项如下表所示:

类型 key 是否必须 说明
env region_id 应用所在的区域ID
app app_id 应用ID
package_version 部署包的版本。默认为 pom 文件的 version 加上当前机器构建的时间,格式如:"1.0 (2018-09-27 19:00:00)"。
desc 部署的描述
group_id 部署分组 ID。默认为所有分组。
batch 部署分批。默认为 1 批,最大为 5 批。
batch_wait_time 部署分批之间的等待时间,单位为分钟。默认不等待。
buildPackId 如果在创建应用时没有指定运行环境,且没有部署, 原生 Dubbo 或者 Spring Cloud 应用在第一次部署时可以不填。 非原生 Dubbo 或者 Spring Cloud 应在第一次部署时需要指定这个字段。(根据获取容器版本列表接口 ListBuildPackRequest 查询获取)。
componentIds 如果在创建应用时没有指定运行环境,且没有部署, 原生 Dubbo 或者 Spring Cloud 应用在第一次通过 WAR 包部署时,需要通过这个字段指定部署所依赖的 Apache Tomcat 组件的版本。(根据获取组件列表接口 ListComponentsRequest 接口查询获取)。 非原生 Dubbo 或者 Spring Cloud 应用在第一次通过 WAR 包部署时,可以不填。
stage_timeout 展示每个发布单 stage 状态的超时时间,单位为分钟,默认为 5 分钟。如果同时设置了 batch_wait_time,那么此参数在计算时会自动加上 batch_wait_time。在运行时,如果某个 stage 等待时间超过此阈值,那么此插件会自动退出。
oss region_id 目标存储桶所在的区域 ID 。默认使用应用所在的区域 ID 。
bucket 目标存储桶名称。默认使用 EDAS 提供的免费 OSS 存储空间。若指定了 oss 配置,则必须指定 bucket 参数,否则使用 EDAS 自动分配的免费 OSS 存储空间。
key 应用包上传到oss的自定义路径,默认使用 EDAS 提供的免费 OSS 存储空间。 若使用指定的 OSS 存储,则可通过该参数指明包存储路径,同时可以使用以下变量来进行参数化的路径配置 {region_id},{app_id},{version},例如: pkgs/petstore/{version}/store.war 该配置默认为 {region_id}/{app_id}/{version}
access_key_id 应用包上传到 oss 的自定义账号 ID。
access_key_secret 应用包上传到 oss 的自定义账号密钥。

配置示例一:指定分组和部署包的版本

例如我们在北京 region 有一个 ID 为 eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 的应用,希望部署的分组 ID 为 06923bb9-8c5f-4508-94d8-517b692f30b9,部署包版本为 1.2。那么配置如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
  package_version: 1.2
  group_id: 06923bb9-8c5f-4508-94d8-517b692f30b9
AI 代码解读

配置示例二:指定 OSS 存储

例如我们希望部署一个 ID 为 eb20dc8a-e6ee-4f6d-a36f-5f6a54550453 的应用,并将部署包上传到自己在北京 region 的名为 release-pkg 的存储桶,文件对象名为 my.war,OSS 账号 ID 为 ABC,OSS 账号密钥为 1234567890。那么配置如下:

env:
  region_id: cn-beijing
app:
  app_id: eb20dc8a-e6ee-4f6d-a36f-5f6a54550453
oss:
  region_id: cn-beijing
  bucket: release-pkg
  key: my.war  
  access_key_id: ABC
  access_key_secret: 1234567890
AI 代码解读

指定配置文件

  • 当未指定配置文件时,此插件会默认使用打包工程的根目录下的.edas_config.yaml文件。如果打包工程为一个 Maven 工程的子模块,那么默认配置文件应该存放在该子模块的根目录下而不是整个 Maven 工程的根目录下。
  • 您也可以通过设置参数 -Dedas_config=xxx 来指定配置文件。
  • 如果既存在默认配置文件,也通过参数指定配置文件,那么此插件会使用参数指定的配置文件。

账号配置及账号优先级说明

当使用此插件部署应用时,您需提供部署应用的阿里云账号密钥对。目前此插件支持多种配置方式,当存在重复配置的情况时,优先级高的配置方式会覆盖优先级低的配置方式。优先级从高到低的配置方式罗列如下:

  • 命令行指定 ak/sk 参数:您可以通过如下任一方式来指定 access_key_id/access_key_secret:

    • 在使用 Maven 命令打包时,通过-Daccess_key_id=xx -Daccess_key_secret=xx来指定。
    • 在 pom 中配置此插件时,配置 ak/sk 参数如下所示:

      <plugin>
        <groupId>com.aliyun</groupId>
        <artifactId>edas-maven-plugin</artifactId>
        <version>2.30.0</version>
        <configuration>
            <accessKeyId>abc</accessKeyId>
            <accessKeySecret>1234567890</accessKeySecret>
        </configuration>
      </plugin>
      AI 代码解读
  • 命令行指定账号文件(推荐):在使用 Maven 命令打包时,通过 -Daccess_key_file={账号文件路径 来指定 yaml 格式的账号文件。例如:

    access_key_id: abc
    access_key_secret: 1234567890
    AI 代码解读
  • 使用默认的阿里云账号文件:如果没有通过以上两种方式指定账号,那么此插件会使用您曾经配置过的阿里云账号进行应用部署。

    • aliyuncli:如果您使用过最新的 aliyuncli 工具并且配置过阿里云账号,那么阿里云会在您当前 Home 目录下生成一个 .aliyuncli 目录,并在 .aliyuncli 目录下创建 credentials 文件来保存您的账号信息。以Mac系统为例,假如系统用户为jack,那么会在 /Users/jack/.aliyuncli/credentials 文件中保存如下信息:

      [default]
      aliyun_access_key_secret = 1234567890
      aliyun_access_key_id = abc
      AI 代码解读

此插件会使用此账号文件作为部署应用的账号。

  • aliyun:如果您使用过老的 aliyun 工具并且配置过阿里云账号,那么 aliyun 工具会在您当前 Home 目录下生成一个 .aliyun 目录,并且在 .aliyun 目录下创建一个 config.json 文件来保存您的账号信息。以Mac系统为例,假如系统用户为jack,那么会在 /Users/jack/.aliyun/config.json 文件中保存账号信息,例如:

    {
      "current": "",
      "profiles": [{
          "name": "default",
          "mode": "AK",
          "access_key_id": "",
          "access_key_secret": "",
          "sts_token": "",
          "ram_role_name": "",
          "ram_role_arn": "",
          "ram_session_name": "",
          "private_key": "",
          "key_pair_name": "",
          "expired_seconds": 0,
          "verified": "",
          "region_id": "",
          "output_format": "json",
          "language": "en",
          "site": "",
          "retry_timeout": 0,
          "retry_count": 0
      }, {
          "name": "",
          "mode": "AK",
          "access_key_id": "abc",
          "access_key_secret": "xxx",
          "sts_token": "",
          "ram_role_name": "",
          "ram_role_arn": "",
          "ram_session_name": "",
          "private_key": "",
          "key_pair_name": "",
          "expired_seconds": 0,
          "verified": "",
          "region_id": "cn-hangzhou",
          "output_format": "json",
          "language": "en",
          "site": "",
          "retry_timeout": 0,
          "retry_count": 0
      }],
      "meta_path": ""
    }
    AI 代码解读
  • 系统环境变量:最后,此插件会尝试通过系统环境变量来获取 access_key_id 和 access_key_secret 的值。即通过 Java 代码的 System.getenv("access_key_id")System.getenv("access_key_secret") 来获取相应的值。



官网
https://toolkit.aliyun.com


TB13bbFavWG3KVjSZPcXXbkbXXa-120-125.jpg

交流群(钉钉)


b35318a3e1a70775eee7dcb295468d50f5d21abb

交流群(微信)





相关实践学习
通过EDAS实现K8s微服务应用的金丝雀发布
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ACK Serverless,体验微服务应用的部署、访问和高级发布能力。
SpringMVC框架入门
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。在使用Spring进行WEB开发时,可以选择使用Spring的SpringMVC框架或集成其他MVC开发框架,如Struts2等。 相关的阿里云产品企业级分布式应用服务 EDAS:企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )等微服务运行环境,助力您的各类应用轻松上云。产品详情: https://www.aliyun.com/product/edas&nbsp;
目录
打赏
0
21
22
49
6180
分享
相关文章
|
6月前
|
入门Cloud Toolkit:简化你的Java应用开发与部署流程
【10月更文挑战第19天】作为一名长期从事Java开发的程序员,我一直致力于寻找能够简化日常开发工作的工具。在众多工具中,阿里巴巴推出的Cloud Toolkit引起了我的注意。这款免费的插件旨在帮助开发者更轻松地进行开发、测试及部署工作,尤其是在与云服务交互时表现尤为出色。本文将从个人的角度出发,介绍Cloud Toolkit的基本功能及其使用技巧,希望能帮助初学者快速上手这款实用工具。
109 1
Serverless应用引擎问题之源码部署关掉如何解决
Serverless部署是指将应用程序部署到无服务器架构中,该架构允许开发者专注于代码而无需关心底层服务器的运行和维护;针对Serverless部署过程中可能遇到的挑战,本合集提供全面的指南和最佳实践,帮助开发者顺利实现应用的无服务器化部署。
117 2
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
如下请问EDAS的这个问题怎么解决? 应用id:2b0e6935-47fb-40ec-a11d-7dac320aecc1 集群中的节点内存是足够的,部署跑不起来 可以帮忙看看吗,以前集群下应用发布都是正常的,最近集群下应用部署基本都报错跑不起来,提示节点不可用
166 2
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
请教一个问题,阿里云的edas每次发版,都会有几个版本的deployment的版本存在,怎么设置自动只保留5个版本的啊?
107 2
通过EDAS部署并访问应用
本实验旨在通过使用分布式应用服务EDAS纳管容器服务ASK,掌握微服务应用的部署和访问。
《阿里云产品手册2022-2023 版》——企业级分布式应用服务
《阿里云产品手册2022-2023 版》——企业级分布式应用服务
469 0
阿里云互联网中间件五剑客之——企业级分布式应用服务EDAS
阿里云互联网中间件五剑客之——企业级分布式应用服务EDAS自制脑图, 企业级分布式应用服务 EDAS(Enterprise Distributed Application Service)是一个应用托管和微服务管理的 PaaS 平台,提供应用开发、部署、监控、运维等全栈式解决方案,同时支持 Spring Cloud、Apache Dubbo(以下简称 Dubbo )、HSF 等微服务运行环境,助力您的各类应用轻松上云。
493 23
阿里云互联网中间件五剑客之——企业级分布式应用服务EDAS
阿里云-EDAS平台 无法打开一直处于加载中...
阿里专有云敏捷标准版V3.5 EDAS平台打开一直处于加载中... 网站未信任 需要增加数字证书。
阿里云-EDAS平台 无法打开一直处于加载中...
阿里云ACP企业级互联网架构ACP实验之本地配置EDAS开发环境(下)
阿里云ACP企业级互联网架构ACP实验之本地配置EDAS开发环境(下)
507 0
阿里云ACP企业级互联网架构ACP实验之本地配置EDAS开发环境(下)
Alibaba Cloud Toolkit使用:在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 应用到远程服务器
Alibaba Cloud Toolkit使用:在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 应用到远程服务器
770 0
Alibaba Cloud Toolkit使用:在 Intellij IDEA 中部署 Spring Boot / Spring Cloud 应用到远程服务器

相关产品

  • 企业级分布式应用服务
  • 推荐镜像

    更多