本文来自于【阿里云官方镜像站:https://developer.aliyun.com/mirror/?utm_content=g_1000307095 】

原文链接:https://developer.aliyun.com/article/745656?spm=a2c6h.12873581.0.0.54c47e46mLfYep

一、自动化部署流程

通过toolkit-maven-plugin插件自动化部署应用的流程:首先添加插件依赖,接下来配置插件,最后构建部署。

1. 添加插件依赖

在pom.xml文件中增加如下所示的插件依赖。

<build>
<plugins>
<plugin>
<groupId>com.alibaba.cloud</groupId>
<artifactId>toolkit-maven-plugin</artifactId>
<version>1.0.6</version>
</plugin>
</plugins></build>

说明toolkit-maven-plugin建议使用最近版本。

2. 配置插件

配置插件主要包括账号配置、打包配置和部署配置。如果需要更多自定义配置项,请参见打包参数和部署参数。
a. 账号配置
在打包工程的根目录下创建文件格式为YAML的账号配置文件,命名为toolkit_profile.yaml并填入如下信息:

regionId: #应用所在区域,如北京为`cn-beijing`,上海为`cn-shanghai`,杭州为`cn-hangzhou`。accessKeyId: #访问阿里云资源的AK,建议使用子账号的AK降低安全风险accessKeySecret: #访问阿里云资源的SK,建议使用子账号的SK降低安全风险

b. 打包配置
在打包工程的根目录下创建文件格式为YAML的打包配置文件。如果打包工程为Maven的子模块,则需要在子模块的目录下创建该文件,并命名为toolkit_package.yaml,填入如下信息:

apiVersion: V1kind: AppPackagespec: packageType: #应用部署包类型,支持WAR、FatJar、Image三种格式。 packageUrl: #如果应用部署包类型为WAR或FatJar,可填入此字段,不填则使用当前maven构建的包进行部署。 imageUrl: #如果部署包类型为Image,可填入此字段;Image类型也可以在本地构建Docker镜像进行部署,请参考打包文件参数章节设置相关参数。

c. 部署配置
在打包工程的根目录下创建文件格式为YAML的部署文件,命名为toolkit_deploy.yaml,并填入如下信息:

apiVersion: V1kind: AppDeploymentspec: type: serverless target: appId: #部署应用的ID,如果配置了appId则无需配置namespaceId和appName namespaceId: #所属区域,如不清楚appId,可使用此所属区域及应用名称进行部署 appName: #应用名称,如不清楚appId,可使用此应用名称及命名空间进行部署

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,其为可选参数,插件会自动获取。
注意文件名最前面有小数点。
-Dtoolkit_package:指定打包文件。如果打包文件与pom.xml在同一个目录下,且名字为.toolkit_package.yaml,其为可选参数,插件会自动获取。
注意文件名最前面有小数点。
-Dtoolkit_deploy:指定部署文件。如果部署文件与pom.xml在同一个目录下,且名字为.toolkit_deploy.yaml,其为可选参数,插件会自动获取。-Ddeploy version:指定部署的版本号,优先级高于部署配置文件中的version配置。
说明toolkit-maven-plugin插件1.0.6及以后版本支持该配置参数。

执行该打包命令后,系统显示如下结果,当回显信息中显示“BUDILD SUCCESS”表示部署成功。

二、更多配置项

打包参数打包文件支持的参数如下所示:
apiVersion: V1kind: AppPackagespec: packageType: #应用部署包类型,支持WAR、FatJar、Image。 imageUrl: #镜像地址,Image包类型应用可填入。 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仓库存储包,可填入此字段。
部署参数部署文件支持的参数如下所示:
apiVersion: V1kind: AppDeploymentspec:
type: serverless
target:
appName: #应用名称
namespaceId: #应用所在命名空间
appId: #应用ID。插件会使用此应用进行部署,如未填入则使用namespaceId和appName来查找应用进行部署。
version: #部署版本号,默认使用日时分秒格式
jdk: #部署的包依赖的JDK版本,JDK支持版本为Open JDK 7和Open JDK 8。镜像不支持。
webContainer: #部署的包依赖的Tomcat版本,WebContainer支持apache-tomcat-7.0.91。镜像不支持。
batchWaitTime: #分批等待时间。
command: #镜像启动命令。该命令必须为容器内存在的可执行的对象。例如:sleep。设置该命令将导致镜像原本的启动命令失效。
commandArgs: #镜像启动命令参数。上述启动命令所需参数。
- 1d
envs: #容器环境变量参数
- name: envtmp0
value: '0'
- name: envtmp1
value: '1'
customHostAlias: #容器内自定义host映射
- hostName: 'samplehost1'
ip: '127.0.0.1'
- hostName: 'samplehost2'
ip: '127.0.0.1'
jarStartOptions: #JAR包启动应用选项
jarStartArgs: #JAR包启动应用参数
liveness: #容器健康检查,健康检查失败的容器将被杀死并恢复。
exec:
command:
- sleep
- 1s
initialDelaySeconds: 5
timeoutSeconds: 11
readiness: #应用启动状态检查,多次健康检查失败的容器将被杀死并重启。不通过健康检查的容器将不会有 SLB 流量进入。
exec:
command:
- sleep
- 1s
initialDelaySeconds: 5
timeoutSeconds: 11
minReadyInstances: 1 #最小存活实例数。在滚动升级过程中或者滚动升级失败,可用实例数都将尽可能不小于该值,为 0 则不限制。弹性扩缩容的范围不应该小于该值,否则将触发异常。

三、典型场景示例

场景一:本地构建WAR或FatJar包并部署在SAE
假设您在北京环境有WAR或FatJar类型应用,期望本地构建WAR或FatJar部署在SAE。打包配置和部署配置如下所示。

打包文件:apiVersion: V1kind: AppPackagespec: packageType: War
部署文件:apiVersion: V1kind: AppDeploymentspec: type: serverless target: appId: #应用ID。插件会使用此应用进行部署,如未填入则使用namespaceId和appName来查找应用进行部署。 namespaceId: #【可选】命名空间,如不清楚appId,可使用此命名空间及应用名称进行部署。 appName: #【可选】应用名称,如不清楚appId,可使用此命名空间及应用名称进行部署。

场景二:使用已有镜像地址部署镜像类型应用
假设您在北京环境有一个镜像类型应用,期望使用已有的镜像(registry.cn-beijing.aliyuncs.com/test/gateway:latest )部署应用。打包配置和部署配置如下所示。

打包文件:apiVersion: V1kind: AppPackagespec: packageType: Image imageUrl: registry.cn-beijing.aliyuncs.com/test/gateway:latest
部署文件:apiVersion: V1kind: AppDeploymentspec: type: serverless target: appId: #应用ID。插件会使用此应用进行部署,如未填入则使用namespaceId和appName来查找应用进行部署。 namespaceId: #【可选】命名空间,如不清楚appId,可使用此命名空间及应用名称进行部署。 appName: #【可选】应用名称,如不清楚appId,可使用此命名空间及应用名称进行部署。

场景三:本地构建镜像上传至仓库并部署应用
假设您在北京环境有镜像类型应用,期望在本地编译并构建为镜像,并上传到阿里云镜像仓库进行部署,打包配置和部署配置如下所示。

打包文件:apiVersion: V1kind: AppPackagespec: packageType: Image build: docker: dockerfile: Dockerfile #指定Dockerfile imageRepoAddress: #镜像仓库地址 imageTag: #镜像Tag imageRepoUser: #镜像仓库用户名 imageRepoPassword: #镜像仓库密码
部署文件:apiVersion: V1kind: AppDeploymentspec: type: serverless target: appId: #应用ID。插件会使用此应用进行部署,如未填入则使用namespaceId和appName来查找应用进行部署。 namespaceId: #【可选】命名空间,如不清楚appId,可使用此命名空间及应用名称进行部署 appName: #【可选】应用名称,如不清楚appId,可使用此命名空间及应用名称进行部署



更多相关文章

  1. android apk安装结束的系统广播的监听
  2. Android中ShareUserId注意问题
  3. Android应用程序启动画面
  4. Multiple APK Support in Android(安卓)Market
  5. android之视频播放控件VideoView简单应用
  6. Android(安卓)APP的发布流程
  7. Android(安卓)Spinner控件的简单应用
  8. Android(安卓)ClickableSpan 应用实例
  9. mysql-8.0.17-winx64 部署方法

随机推荐

  1. 定制Android之4G-LTE模块驱动
  2. RecylcerView中的子view matchParent属性
  3. gradle/gradle plugin/Android(安卓)stud
  4. android定义可以被其他程序调用的activit
  5. Android视频开发国人开发的Vitamio开源项
  6. Android局部布局替换实现
  7. Android(安卓)获取网络状态的工具类
  8. android学习之LinearLayout
  9. Android版本与Linux内核的关系
  10. 让Activity变成一个窗口