您在本地完成应用的开发、调试和测试后,可以在IntelliJ IDEA中安装Cloud Toolkit插件实现EDAS应用的快速部署。本文档将介绍如何在IntelliJ IDEA中安装Cloud Toolkit,并快速部署应用到容器服务K8s集群。
前提条件
下载并安装JDK 1.8或更高版本。
下载并安装IntelliJ IDEA (2018.3或更高版本)。
说明因JetBrains插件市场官方服务器在海外,如遇访问缓慢无法下载安装的,请加入文末交流群,向Cloud Toolkit技术支持人员获取离线包安装。
在容器服务K8s集群中创建了应用并完成了首次部署,相关操作请参见在K8s集群中使用镜像部署Java微服务应用。
步骤一:安装Cloud Toolkit
启动IntelliJ IDEA。
在IntelliJ IDEA中安装最新版本的插件。
如您之前已安装过旧版安装包,请升级至最新版本。
mac系统:进入Preference配置页面,在左侧导航栏选择Plugins,在右侧搜索框输入Alibaba Cloud Toolkit,然后单击Install安装。
Windows系统:在左侧导航栏选择Plugins,在右侧搜索框输入Alibaba Cloud Toolkit,并单击Install安装。
在IntelliJ IDEA中插件安装成功后,重启IntelliJ IDEA,您可以在工具栏看到Alibaba Cloud Toolkit的图标()。
步骤二:配置Cloud Toolkit账号
在安装完Alibaba Cloud Toolkit后,您需使用AccessKey ID和AccessKey Secret来配置Cloud Toolkit的账号。
启动IntelliJ IDEA。
在IntelliJ IDEA菜单栏选择 。
在左侧导航栏选择Alibaba Cloud Toolkit > Accounts。
在Accounts界面中设置 AccessKey ID和AccessKey Secret,然后单击OK。
如果您使用RAM用户的AccessKey ID和AccessKey Secret,请确认该RAM用户至少拥有部署应用的权限。
如果您是EDAS专有云企业版用户,还需配置Endpoint才能正常使用Cloud Toolkit功能。
如果您已经注册过阿里云账号,在Accounts界面中单击Get existing AK/SK,进入阿里云登录页面。用已有账号登录后,跳转至安全信息管理页面,获取AccessKey ID和AccessKey Secret。
如果您还没有阿里云账号,在Accounts界面中单击Sign up,进入阿里云账号注册页面,注册账号。注册完成后按照上述方式获取AccessKey ID和AccessKey Secret。
步骤三:部署应用到容器服务K8s集群
在IntelliJ IDEA菜单栏选择 。
您也可以在IntelliJ IDEA菜单栏选择
,在Run/Debug configurations对话框左侧选择 。在Deploy to EDAS对话框配置应用部署参数。
在配置页面中根据您的实际需求选择应用的Region、Namespace和Application。
重要如果在应用列表中获取不到应用,排查问题原因的具体步骤,请参见常见问题。
Region:应用所在地域。
Namespace:应用所在微服务空间。
Application:应用名称。
设置部署方式,可选的部署方式由您在控制台第一次部署的方式决定。
Maven Build:选择Maven Build方式来构建应用时,系统会默认添加一个Maven任务来构建部署包。
说明如果您想部署多模块工程,请参见部署多模块工程。
Upload File:选择Upload File方式来构建应用时,选择上传您的WAR包或者JAR包,然后进行部署。
Build Image:选择Build Image方式来构建应用时,需要依次输入工作目录Content Directory,文件路径Dockerfile和镜像标签Version。
Select Image:选择Build Image方式来构建应用时,可在Select Image的下拉列表选择需要部署的镜像。
单击Advanced进入高级部署参数设置页签,并配置Application Environment、Startup Command、Environments、Persistence、Storage 和Appcalition Management等参数。
详细的高级部署参数解释,请参见DeployK8sApplication。
Application Environment:设置应用运行环境信息,多次重复部署时需要重新填写PackageVersion。
Startup Command:设置启动命令信息,详细的部署参数解释,请参见DeployK8sApplication。
Environments:设置部署环境变量信息,详细的部署参数解释,请参见DeployK8sApplication。
Persistence:设置持久化存储。
Storage:设置本地存储,详细的部署参数解释,请参见DeployK8sApplication。
Application Management:设置应用生命周期管理。
Poststart脚本:一种容器钩子。该钩子在容器被创建后立刻触发,通知容器它已经被创建。该钩子不需要向其所对应的hook handler传入任何参数。如果该钩子对应的hook handler执行失败,则该容器会停止运行,并根据该容器的重启策略决定是否要重启该容器。更多信息,请参见Container Lifecycle Hooks。
PreStop脚本:一种容器钩子。该钩子在容器被删除前触发,其所对应的hook handler必须在删除该容器的请求发送给Docker daemon之前完成。在该钩子对应的hook handler完成后不论执行的结果如何,Docker daemon会发送一个SIGTERN信号量给Docker daemon来删除该容器。更多信息,请参见Container Lifecycle Hooks。
Liveness脚本:一种探测容器状态的探针,探测应用是否处于健康状态。如果不健康,则删除重建容器。更多信息,请参见Pod Lifecycle。
Readiness脚本:一种探测容器状态的探针,探测应用是否启动完成并且处于正常服务状态。如果不正常,则更新容器的状态。更多信息,请参见Pod Lifecycle。
单击Apply,再单击Run。
IntelliJ IDEA的Console区域会打印部署日志。您可以根据日志信息检查部署结果。
部署多模块工程
实际工作中碰到的大部分Maven工程都是多模块的,各个项目模块可以独立开发,其中某些模块又可能会使用到其他的一些模块的功能,这样的项目工程就是多模块工程。
如果您的工程项目为Maven多模块工程并且想部署工程中的某子模块,那么需要保证EDAS Deployment Configurations页面中的Before launch中的Maven构建任务中最后一个任务为该子模块的构建任务。管理Maven构建任务的具体操作,请参见Maven构建任务的管理。
例如:一个CarShop工程存在以下示例的子模块。
carshop
├── itemcenter-api
├── itemcenter
├── detail
其中itemcenter和detail为子模块,且都依赖于itemcenter-api模块,现在想部署itemcenter模块,应该怎么做?只需要在配置页面中的Before launch中增加如下两个Maven任务:
增加一个在父工程carshop中执行
mvn clean install
的Maven任务。增加一个在子模块itemcenter中执行
mvn clean package
的Maven任务。
Maven构建任务的管理
在IntelliJ IDEA中安装的Cloud Toolkit内可以部署Maven的构建任务。您也可以在 Deploy to EDAS的配置页面的Before launch区域来添加、删除、修改和移动Maven构建任务。
在添加Maven构建任务编辑框中,您可以单击右侧的文件夹按钮选择当前工程的所有可用模块,并在Command line中编辑构建命令。
常见问题
应用列表获取不到应用
通常出现这种情况为使用RAM用户来部署应用,且RAM用户没有同步到EDAS系统或者没有进行正确授权,从而导致在应用列表下拉框中看不到应用。您可以通过RAM授权或EDAS子账号授权来确保RAM用户已经同步到EDAS并且得到授权。
RAM授权
该授权方式可使RAM用户访问EDAS的所有资源。
EDAS子账号授权
该授权方式可使子账号细粒度授权访问EDAS的资源。
使用阿里云主账号登录EDAS控制台。
在左侧导航栏选择
,单击页面右上角的创建角色。输入一个角色名称,在可选权限区域框中,选择
,单击添加将部署应用添加到已选权限,然后单击确定。在左侧导航栏选择
,单击子账号页面右上角的同步子账号。选择需进行授权的子账号,在EDAS旧鉴权列单击管理角色,在左侧搜索并选择目标角色,将该角色添加到右侧已选角色列表中,然后单击确定。
选择需进行授权的子账号,在EDAS旧鉴权列单击授权应用,在左侧搜索并选择目标应用,将该应用添加到右侧已选应用列表中,然后单击确定。
配置Endpoint
说明如果使用EDAS专有云企业版,还需要按以下步骤在Cloud Toolkit中配置Endpoint。Endpoint请联系EDAS技术支持获取。
在Preference(Filtered)对话框的左侧导航栏中选择Appearance & BehaviorEndpoint。
在Endpoint界面中设置Endpoint,配置完成后,单击Apply and Close。