文档中心 > 容器服务

应用发布

更新时间:2020/08/21 访问次数:13822

 

1. 创建应用

image.png

 

业务类型:商家应用小程序&EWS的业务请选择“小程序云应用”,电商业务(ERP、商家后台等)请选择电商云应用,

发布方式:选默认的"容器部署"即可

应用类型:

  • 无状态应用:没有特殊要求的情况选择默认"无状态应用"即可,对应k8s的Deployment
  • 有状态应用:需要稳定的唯一网络标识或有序发布的情况,对应k8s的StatefulSet

 

2. 配置应用环境

1. 选择应用发布

在创建好的应用下点击应用发布,会进入一键配置界面。

image.png

注:如果应用已经进行过初始化,或手动配置过部署配置,请跳过这个步骤。

 

2. 系统生成配置

环境的解释

聚石塔会默认生成两种类型的环境,正式环境与测试环境。正式环境与测试环境的容器集群不能是相同的集群。建议手淘互动应用直接配置正式环境就可以。

 

image.png

如果使用官方镜像,请在此界面直接选择容器镜像,并配置实例数量,实例所使用的CPU和内存。

  • 容器镜像:容器镜像可以理解为应用开发技术栈。比如如果使用JAVA,可选择tomcat镜像,springboot镜像等。
  • 实例数量:实例数量是每个环境下(比如正式环境或测试环境)的实例个数,考虑到稳定性,实例个数需要至少配置为2。
  • CPU/内存:指环境下的每个实例限定的CPU内存规格,如果实际使用内存规格超过界面上配置的限额,整个容器会被kill掉。注意内存的规格为MB

 

如果使用自定义镜像,请选择“高级设置”进行接下来的操作。

 

3. 查看或变更部署配置

当配置初始化完成后,配置是可以被变更或查看的。如下图所示:

image.png

可以看到默认生成了两个环境:测试环境&正式环境。并且每个环境默认生成了两个配置:正式环境系统配置 & 测试环境系统配置。

手淘互动已经一般情况只需要关注正式环境以及正式环境系统配置即可。

 

点击配置列表后的编辑按钮可以进入编辑配置的界面。如下图所示。

image.png

部署根目录:如果镜像需要使用代码包部署,就需要配置部署根目录。官方镜像的部署根目录统一为/acs/code

日志收集:如果需要通过SLS收集日志,使用方式参考:https://www.yuque.com/fczggw/wu7u0k/fo3ne1

容器配置

  • 端口映射:如果使用了官方镜像,端口映射最好不要修改。端口映射指定了需要将容器内什么哪些端口暴露出供外部调用。这些端口在后续流量接入(SLB流量接入)过程中都需要保持一致。比如tomcat启动在8080端口,并且该端口需要对外提供服务,那这里的端口映射就需要填写8080。
  • 环境变量:环境变量会以Linux 环境变量的形式配置在系统中。
  • 文件挂载:文件挂载可以将指定文本以文件的形式挂载到容器内的指定目录中。
  • 目录挂载:建议将日志,或者容器内的数据目录(如临时文件存储)以目录挂载的形式挂载到宿主机上,保证容器所占用的磁盘空间不会被占满,容器占用磁盘空间过大会导致容器直接挂掉。
  • 健康检查配置:目前支持http和shell脚本检测应用健康状态,请一定保证设置正确,否则会导致容器启动失败。比如官方SpringBoot2镜像默认设置值为 http://127.0.0.1:8081/actuator/health。

 

这些配置中需要重点关注的配置是端口映射健康检查配置。健康检查配置会影响到应用发布过程,只有系统判断配置的健康检查成功之后才会认为是发布成功。

健康检查配置分为两种:

 

健康检查方式

判定为成功的条件

http get

返回的http状态码为200

shell脚本

脚本正常退出(exit 0)

 

  • 优雅上下线
    • PostStart:容器创建成功后,运行前的任务,用于资源部署、环境准备等。
    • PreStop:在容器被终止前的任务,用于优雅关闭应用程序、通知其他系统等等

image.png

 

需要注意的是:所有的部署配置变更,以及环境实例数量的变更,都需要重新提交发布单才能生效。

 

3. 发布应用的指定环境

1. 提交发布单

对于手淘互动应用而言,暂时只需要关注正式环境的发布。如下图是示,需要注意选择正式环境的Tab。

 image.png

 

接下来新建发布单。

image.png

 

发布批数:发布批数是指将指定的实例数量分为几批发布。例如,环境配置了4个实例,这里发布批数为2,则是将4个实例分为两批发布,每批发布2个实例。分批发布可以减少代码变更对线上服务的影响,并且可以达到一定的灰度测试效果。

暂停模式:第一批暂停是部署第一批后,该发布单暂停发布,点击了“恢复”之后才会继续,剩下的批次依次发布了;每批暂停是指每部署完一批都暂停,点“恢复”后开始下一批

image.png

发布单创建提交之后,可以看到发布单列表,状态为部署中。

 

2. 查看发布单状态

点击发布单后的详情,可以进入到发布实例详情列表。

在这里可以看到发布过程中的实例列表,以及发布完成的实例列表,以及整个发布单的状态。

image.png

  • 1、【恢复】:默认是置灰不能点击的,根据发布单的状态来判断,如果当前发布单的状态是"暂停",则变为可以点击。
  • 2、【切换为每批暂停】、【切换为第一批暂停】、【切换为不暂停】:这三个按钮是互斥的,当前发布单正在使用的暂停策略是灰色不可点击的,用户可以点击其他两个按钮来切换暂停策略,点击后选中的暂停策略变为灰色,同理其余两个变为可点击
  • 3、【批量失败重试】:会重试发布失败的实例,此按钮可随时点击,没有失败记录时后台会忽略
  • 4、【关闭发布单】:发布单处于非"已完成"状态时可点击,点击后会关闭当前发布单,并将发布单职位失败
  • 5、【回滚】:发布中回滚请参见文档:https://www.yuque.com/fczggw/wu7u0k/ghx9lf

 

部署过程中,【查看日志】和【远程登录】是跟进部署进展的最好方式。

查看日志:

  • 系统事件:容器启动过程中的主要事件;如果容器长时间未启动成功,要关注Warning类型的事件
  • 日志:容器启动过程中的日志

image.png

 

 

 

如果有一个实例的发布过程一直没有结束(左侧状态不是执行成功),通常是发布过程出现问题。有关发布异常的排查方法详见文档:https://www.yuque.com/fczggw/ec07di/qawru0#CSwn6

 

如果之前选择了分批发布,当发布完一批之后,需要手动点击恢复按钮,继续后面批次的发布。

image.png

 

发布成功

当所有实例已经发布完成,并且发布单处于已完成的状态,代表发布成功。

image.png

 

如果发布单一直没有结束,并且定位到了异常,可以手动执行关闭发布单,之后再在修改之后,重新提交发布单。

 

在发布成功后,就可以在环境管理下,看到自己发布环境的实例数量。

image.png

进一步进入管理资源,可以看到启动成功的计算实例列表。

image.png

 

发布失败

发布失败时,请查看错误信息提示

image.png

 

3. 验证应用是否真正启动成功

发布单成功发布,代表应用健康检查已经成功。如果还想进一步验证自己应用的可用性,可以通过远程登录的方式,登录到具体实例中(一个容器运行环境),执行linux命令( 比如curl localhost:8080/healthcheck )来确认自己应用已经真正发布成功。

远程登录的入口在“环境管理”->“资源管理”下,如下图所示。

image.png

 

点击远程登录以后,进入一个容器内的linux bash环境下。可以执行所有和ECS上相同的指令,验证应用是否可用。

image.png

由于同一个环境下的所有实例通常拥有相同的环境配置和代码,因此随便选择一个计算实例验证可用性即可。

FAQ

关于此文档暂时还没有FAQ
返回
顶部