首先,根据自己的业务场景选择业务类型。
然后填写应用基本信息,如果需要详细设置应用类型等,请展开高级设置。
部署类型:如何选择“部署类型”?
应用类型:如何选择应用类型?
在创建好应用后,可以在应用列表点击“查看”。
聚石塔会默认生成两种类型的环境,正式环境与测试环境。正式环境与测试环境的容器集群不能是相同的集群。建议手淘互动应用直接配置正式环境就可以。
1)填写环境基本信息;
2)填写资源配置信息;
3)配置环境;
为进一步提升用户的应用交付效率,聚石塔推出了持续集成能力;从用户的代码源开始,用户手动触发构建,系统自动帮助用户构建并产出代码包,构建完成后,用户直接提交发布单即可,免去了之前用户通过线下方式手工打包、然后上传代码包的过程;具体可参见:点击查看。
如果使用官方镜像,请在此界面直接选择容器镜像,并配置实例数量,实例所使用的CPU和内存。
配置项 |
说明 |
容器镜像 |
容器镜像可以理解为应用开发技术栈。比如如果使用JAVA,可选择tomcat镜像,springboot镜像等。 |
实例数量 |
实例数量是每个环境下(比如正式环境或测试环境)的实例个数,考虑到稳定性,实例个数需要至少配置为2。 |
CPU/内存 |
指环境下的每个实例限定的CPU内存规格,如果实际使用内存规格超过界面上配置的限额,整个容器会被kill掉。注意内存的规格为MB。 |
手淘互动已经一般情况只需要关注正式环境以及正式环境系统配置即可。
部署根目录:如果镜像需要使用代码包部署,就需要配置部署根目录。官方镜像的部署根目录统一为/acs/code。
日志收集:如果需要通过SLS收集日志,使用方式参考:点击查看。
容器配置:
配置项 |
说明 |
端口映射 | 如果使用了官方镜像,端口映射最好不要修改。端口映射指定了需要将容器内什么哪些端口暴露出供外部调用。这些端口在后续流量接入(SLB流量接入)过程中都需要保持一致。比如tomcat启动在8080端口,并且该端口需要对外提供服务,那这里的端口映射就需要填写8080。 |
环境变量 | 环境变量会以Linux 环境变量的形式配置在系统中。 |
文件挂载 |
文件挂载可以将指定文本以文件的形式挂载到容器内的指定目录中。 |
目录挂载 |
建议将日志,或者容器内的数据目录(如临时文件存储)以目录挂载的形式挂载到宿主机上,保证容器所占用的磁盘空间不会被占满,容器占用磁盘空间过大会导致容器直接挂掉。 详细请参考:点击查看。 |
健康检查配置 |
如果是首次发布,可以先跳过“健康检查”配置,先让服务发布起来;发布起来后,再根据需要配置 目前支持http和shell脚本检测应用健康状态,请一定保证设置正确,否则会导致容器启动失败。具体参见:点击查看。 |
这些配置中需要重点关注的配置是端口映射和健康检查配置。健康检查配置会影响到应用发布过程,只有系统判断配置的健康检查成功之后才会认为是发布成功。
如果是首次发布,可以先跳过配置“优雅上下线”,先让服务发布起来;发布起来后,如果有“优雅上下线”的需求,再根据需要配置。
① PostStart:
容器"创建成功后,运行前"的任务,用于资源部署、环境准备等。需要注意:
a) 并不是在容器启动成功后才执行;
b) 如果钩子长时间未执行完成,则容器不会变为running状态,也就无法发布成功;
c) 如果执行失败,则容器会被kill掉;
②PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等。需要注意:
a) 如果钩子长时间未执行完成,会在超过优雅上下线等待时间 terminationGracePeriodSeconds 后被kill;
b) 如果执行失败,则容器会被kill掉;
更详细精准的解释如下:
https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#overview。
需要注意的是:所有的部署配置变更,以及环境实例数量的变更,都需要重新提交发布单才能生效。
4)完成配置
下一步,请去创建发布单进行应用发布。
对于手淘互动应用而言,暂时只需要关注正式环境的发布。如下图是示,需要注意选择正式环境的Tab。
接下来新建发布单。
发布批数:发布批数是指将指定的实例数量分为几批发布。例如,环境配置了4个实例,这里发布批数为2,则是将4个实例分为两批发布,每批发布2个实例。分批发布可以减少代码变更对线上服务的影响,并且可以达到一定的灰度测试效果。
暂停模式:第一批暂停是部署第一批后,该发布单暂停发布,点击了“恢复”之后才会继续,剩下的批次依次发布了;每批暂停是指每部署完一批都暂停,点“恢复”后开始下一批。
发布单创建提交之后,可以看到发布单列表,状态为部署中。
点击发布单后的详情,可以进入到发布实例详情列表。
在这里可以看到发布过程中的实例列表,以及发布完成的实例列表,以及整个发布单的状态。
① 【恢复】:默认是置灰不能点击的,根据发布单的状态来判断,如果当前发布单的状态是"暂停",则变为可以点击。
② 【切换为每批暂停】、【切换为第一批暂停】、【切换为不暂停】:这三个按钮是互斥的,当前发布单正在使用的暂停策略是灰色不可点击的,用户可以点击其他两个按钮来切换暂停策略,点击后选中的暂停策略变为灰色,同理其余两个变为可点击.
③ 【批量失败重试】:会重试发布失败的实例,此按钮可随时点击,没有失败记录时后台会忽略。
④ 【关闭发布单】:发布单处于非"已完成"状态时可点击,点击后会关闭当前发布单,并将发布单职位失败。
⑤ 【回滚】:发布中回滚请参见文档:点击查看。
部署过程中,【查看日志】和【远程登录】是跟进部署进展的最好方式。
查看日志:
系统事件:容器启动过程中的主要事件;如果容器长时间未启动成功,要关注Warning类型的事件。
日志:容器启动过程中的日志。
如果有一个实例的发布过程一直没有结束(左侧状态不是执行成功),通常是发布过程出现问题。有关发布异常的排查方法详见文档:点击查看。
如果之前选择了分批发布,当发布完一批之后,需要手动点击恢复按钮,继续后面批次的发布。
当所有实例已经发布完成,并且发布单处于已完成的状态,代表发布成功。
如果发布单一直没有结束,并且定位到了异常,可以手动执行关闭发布单,之后再在修改之后,重新提交发布单。
在发布成功后,就可以在环境管理下,看到自己发布环境的实例数量。
进一步进入【管理】按钮,可以看到启动成功的实例列表。
发布失败时,请查看错误信息提示。
发布单成功发布,代表应用健康检查已经成功。如果还想进一步验证自己应用的可用性,可以通过远程登录的方式,登录到具体实例中(一个容器运行环境),执行linux命令( 比如curl localhost:8080)来确认自己应用已经真正发布成功。
远程登录的入口在“环境管理”->“资源管理”下,如下图所示。
点击远程登录以后,进入一个容器内的linux bash环境下。可以执行所有和ECS上相同的指令,验证应用是否可用。
由于同一个环境下的所有实例通常拥有相同的环境配置和代码,因此随便选择一个计算实例验证可用性即可。
应用发布成功后,需要做流量接入,才能访问到容器内的应用程序。
具体详见文档:流量接入。
应用发布成功后,运维请参考应用运维。