您可以通过Maven的toolkit-maven-plugin插件完成SAE应用的自动化部署。本文介绍通过Maven自动化部署应用的操作步骤及典型场景示例。
背景信息
Cloud Toolkit的更多信息,请参见
什么是Alibaba Cloud Toolkit。
典型场景示例
本章节介绍通过Maven插件自动部署应用的典型部署场景及相关配置文件示例。关于自动部署应用的操作步骤,请参见
操作步骤。
操作步骤。
- 场景一:本地构建WAR或FatJAR包并部署
例如您在北京环境有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,可使用应用名称及命名空间进行部署。
- 打包文件
- 场景二:使用已有镜像地址部署镜像类型应用
例如您在北京环境有一个镜像类型应用,期望使用已有的镜像部署应用。文件打包和部署配置如下。
- 打包文件
apiVersion: V1 kind: AppPackage spec: packageType: Image imageUrl: registry.cn-beijing.aliyuncs.com/test/gateway:latest #镜像地址。
- 部署文件
apiVersion: V1 kind: AppDeployment spec: type: serverless target: appId: #部署应用的ID。如果配置了该参数则无需配置namespaceId和appName。 namespaceId: #应用所属命名空间ID。如果您不清楚应用ID,可使用应用所属命名空间及应用名称进行部署。 appName: #应用名称。如果您不清楚应用ID,可使用应用名称及命名空间进行部署。
- 打包文件
- 场景三:本地构建镜像上传至仓库并部署应用
例如您在北京环境有镜像类型应用,期望在本地编译并构建为镜像,然后上传到阿里云镜像仓库部署应用。文件打包和部署配置如下。
- 打包文件
apiVersion: V1 kind: AppPackage spec: packageType: Image build: docker: dockerfile: Dockerfile #指定Dockerfile。 imageRepoAddress: #镜像仓库地址。 imageTag: #镜像Tag。 imageRepoUser: #镜像仓库用户名。 imageRepoPassword: #镜像仓库密码。
- 部署文件
apiVersion: V1 kind: AppDeployment spec: type: serverless target: appId: #部署应用的ID。如果配置了该参数则无需配置namespaceId和appName。 namespaceId: #应用所属命名空间ID。如果您不清楚应用ID,可使用应用所属命名空间及应用名称进行部署。 appName: #应用名称。如果您不清楚应用ID,可使用应用名称及命名空间进行部署。
- 打包文件
操作步骤
更多配置项
- 打包参数
打包文件支持的参数如下所示。
apiVersion: V1 kind: AppPackage spec: packageType: #应用部署包类型,支持War、FatJar、Image、url。您只有在该处配置了url,那么packageUrl才能生效。 imageUrl: #镜像地址,Image包类型应用可设置。如果设置了spec.build.docker,使用本地构建的镜像部署,则不需要设置该参数。 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。如果您希望使用自定义的过期时间,可修改该字段。
- 部署参数
部署文件支持的参数如下所示。
apiVersion: V1 kind: AppDeployment spec: 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 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 readiness: #应用启动状态检查,多次健康检查失败的容器将被重启。不通过健康检查的容器将不会有SLB流量进入。 exec: command: - sleep - 1s initialDelaySeconds: 5 timeoutSeconds: 11 minReadyInstances: 1 #最小存活实例数。在滚动升级过程中或者滚动升级失败时,可用实例数都将尽可能不小于该值,为0则没有限制。弹性扩缩容的范围不能小于该值,否则将触发异常。
更多信息
问题反馈
如果您在使用SAE过程中有任何疑问,欢迎您扫描下面的二维码或搜索群号23198618,加入钉钉群与我们交流。
