二. 容器方式发布APP
本章对容器化部署APP的操作方法进行介绍。以容器方式部署APP程序是利用Docker技术将程序制作为镜像形式进行发布的。其流程可以概括为:
上传镜像
编辑APP信息
编排应用
测试
发布到测试环境
部署在生产环境
2.1 上传镜像
登录工业互联网平台账号,选择功能菜单中的“镜像管理”功能:
之后进入镜像界面,单击右上角的“添加新的镜像”按钮:
进入上传界面,按要求填写以下内容:
名称(必填):镜像的名字,建议与镜像文件的主文件名相同。例如镜像文件名是imagename.tar,那么镜像名就填写imagename。
描述(选填)
标签名称(必填):标示镜像的信息,在Docker中用来识别镜像,与镜像名之间用冒号分隔。如imagename:v1中的imagename是镜像名,v1是标签。建议使用版本号或者发布时间作为标签名。例如:
使用镜像生成的日期时间作为镜像标签,如imagename:20190810114514;
使用镜像的版本号作为镜像标签,如:imagename:v1.0.2.34
镜像标签中可以添加关键功能的描述,如imagename:v1.0.2.34-nginx、imagename:v1.0.2.34-tomcat标记使用不同http服务器软件的镜像。
标签描述(选填)
镜像上传:单击打开选择文件对话框上传或将文件拖到网页上传框里上传。注意:镜像仅支持tar文件。
填写好后单击“提交”按钮,开始上传镜像。
镜像上传的进度会在页面下方显示;期间如果有错误将在右上角显示。
2.2 编辑APP信息
APP发布者必须提供必需的APP描述信息。APP基本信息有如下作用:
服务发布者可以根据这些信息可以快速找到已发布的APP版本和具体情况;
用户可以在购买前通过了解APP详细内容,结合自身需求选择合适的APP。
2.2.1 进入编辑信息界面
在左侧菜单中单击“发布”:
在跳转的界面中单击右边APP发布的“即刻开始”按钮,就进入了填写信息的界面:
2.2.2 编辑APP基本信息
标题(必填):APP部署的名称。此名称仅APP发布者可见。
版本(必填):APP版本,默认值为1.0。
部署方式(必填):选择“基于容器发布”。
标签分类(必填):应用商店中该APP所属分类列表。API发布后将显示在此分类标签下。
上传APP标识(选填):上传APP的提示图标。仅支持.jpg和.png格式,大小不超过3MB。
上传订阅须知(选填):上传服务订阅者订阅时的须知文档。
APP描述(选填):APP具体描述信息。APP描述支持简单编辑和高级编辑两类信息输入方式。简单编辑仅支持纯文本信息。 如果需要添加更多描述内容,发布者可以通过点击左上方的“高级编辑模式”切换至高级编辑模式,详细描述APP场景及特点。 高级编辑模式支持纯文本、图片及视频等内容形式。
上传SLA(选填):制定APP发布后的SLA标准。服务订阅者需要根据SLA来确定使用规则。
上传用户使用手册(选填):上传APP发布后的使用文档。
注意:以上四种文档都仅支持.doc, .pdf, .xls, .docx, .xlsx文件,每个文档文件大小不超过20MB。
当服务发布者提供了APP基本信息中的必填项,便可点击下一步,选择租户信息。
2.2.3 选择租户信息
如果选择基于容器发布,那么在部署过程中,服务发布者需要根据实际需求选择APP的租户类型,租户类型分为多租户和单租户两种。
对于单租户应用,订阅者购买后享受独立部署,即有多少用户部署多少套APP。而购买多租户应用后使用该应用的统一部署,即只部署一套APP,所有用户都使用这套程序。当然无论采用什么方式,用户信息都是分开存储的。
在完成2.2.2节的基本信息填写后,单击“下一步”,进入选择界面。
在该界面选择是单租户还是多租户部署。如果选择单租户,则会在编排测试环境完毕后进行套餐的定义;多租户没有。
2.3 应用编排
完成1.3节选择租户信息后,单击下一步进入编排界面,如图所示:
2.3.1 编排管理页面主要模块介绍
编排管理页面主要有三大模块区域组成,资源区(左侧)、工作区(中间)和配置区(右侧)。不同区域功能如下:
资源区:提供资源支撑。服务发布者可以在资源区选择已有资源实现应用快速部署。主要包括以下两类资源:
镜像:用户可以看到的镜像包括公有镜像和自有镜像两类。公有镜像由服务管理员根据不同客户需求分配给相应服务发布者;自有镜像是通过DevOps服务接入推出镜像到系统库里的。我们在2.1节上传的镜像也将出现在列表中。
存储:星云平台提供持久化卷存储(persistent volume claim, PVC),可以拖动到工作区中并与需要存储的镜像连线来完成存储配置。
工作区:编辑界面。服务发布者可以通过拖拉的方式,把资源区内容放到工作区进行拓扑设计包括连接存储资源等。
拖拉:可以用鼠标指定选好的资源如:数据库,中间件,应用逻辑等,放到工作区中间,然后可以通过在每个节点处进行连线 指定不同组件之间的关联关系。
组合(Group):长按shift键,用鼠标左键选取需要进行组合的工作区组件,再点击鼠标右键,选择Group选项就可以把多个组件group在一起,通过一个service暴露出去。这样在服务治理里就可以针对不同版本进行治理。
分离(Separate):选中组合在一起的组件,点击鼠标右键,选择Separate,可以将它们重新分开。
封装(Combine)长按shift键,用鼠标左键选取需要进行封装的工作区组件,再点击鼠标右键,选择Combine。该功能可以将多个镜像组件封装于一个实例中。
解包(Extract):选中封装在一起的组件,点击鼠标右键,选择Extract,可以将该组件重新分离。
删除(Delete)选中工作区存在的组件,点击鼠标右键,选择Delete,可以将工作区中的组件进行删除。
配置区:完成对工作区的资源的具体设置,如对镜像设置端口、CPU使用量;对PVC存储设置大小等。
2.3.2 镜像编排管理具体设置
镜像具体设置如图所示:
基础设置:基本部署信息
名称:部署的名称设定
类型:此类型直接引用了k8s里面的概念,如:deployment,statefulset等。具体对不同类型如何使用,请参考k8s的文档。
版本:镜像的版本选择
实例数量:实例数量是指容器部署几个来确保性能
容器设置:与容器相关的配置
基础配置
名称:容器部署的名称镜像:镜像名称
标签:指名镜像的版本
最下限CPU和最上限CPU:在这个范围内容器可以使用的CPU资源
最下限内存和最上限内存:在这个范围内容器可以使用的内存资源
command:指定容器运行后触发的命令
Args:为命令设置传入参数,就填写在配置文件的 args 字段下
高级配置
环境变量:指定容器的参数,通过键值的输入来指定容器的环境变量
镜像拉取策略:如果本机已有的镜像则可选择不获取最新镜像,总是使用本地镜像;或总是去拖最新的镜像
存储配置:如果有存储的连线,通过此配置指定存储挂载在容器的目录
配置文件:用户通过创建配置文件,可以自动生成configmap,用于应用的配置
名称:配置文件的文件名,例如config.properties, app.json, conf.yaml
路径:配置文件在容器中存放的路径,必须是目录内容:该配置文件的具体内容,内容格式不限
用途:用户配置好以上三项之后,容器启动时,会在指定的路径下生成指定的文件,文件内容为指定的内 容。可以添加多个配置文件。例如: 配置的名称为conf.properties, 路径为/usr/config, 内容为prop1=value1, 则容器启动时会生成/usr/config/conf.properties文件,该文件内容为prop1=value1
日志文件路径:容器中应用的日志文件存放目录或者具体文件名
日志文件路径指的是容器中的应用产生的日志文件的路径,可以是目录,也可以是具体的文件名。
该配置只是告诉平台系统应用日志产生的位置,平台不会创建或者修改日志文件本身。应用发布后,用户可以把配置过的日志文件从运行的容器中复制出来并且下载到本地。下载下来的日志文件是zip压缩包的格式。
例如:用户配置了容器中路径/var/log和/usr/app/test.log两个日志文件路径。应用发布后,用户可以针对这两个配置的日志路径分别进行下载。下载/var/log,将会得到zip压缩包,里面包含了/var/log目录下的所有文件 和子目录文件。下载/usr/app/test.log,将会得到zip压缩包,里面包含了test.log文件
安全上下文:可以查看当前SCC配置。如果该namespace的SCC配置为privileged,勾选之后,该镜像组件部署时,会在配置文件中添加securtyContext内容。
网络:设定容器运行后的访问方式
访问名称:对外提供的服务访问名称
访问配置:在部署选项中,为镜像选中相应的节点组之后,可以在访问配置中为内部应用或者外部用户配置相应的访问方式。
暴露:如果选择暴露服务接口,选择要支持的协议和端口
发布配置:发布到网关或暴露IP地址
- 强制重启Pod选项:当将已发布的产品退回草稿,重新部署时,如果需要将已存在的Pod重启,在点击部署到测试环境或者生产环境前,勾选强制重启Pod选项。
服务发布者可以通过上传和下载的方式把已经设计完毕的拓扑作为模板进行保存使用。
2.4 测试
测试部署是针对应用部署前的测试环境部署。服务发布者通过测试部署判断所部署的内容是否符合实际应用设计需求。测试环境会保留测试内容。
测试部署在服务编排完成后进行,单击“部署到测试环境”,等待部署成功后右上角的提示:
出现该提示后,单击“下一步”进入套餐信息配置界面。对于单租户部署,可以在这里配置每个租户的套餐信息,包括套餐使用的CPU和内存数量。多租户部署没有这一步。
部署时,可以使用日志和终端(terminal)功能。
部署日志:用户在测试部署时需要知道相应的部署细节, 这时可以通过点击编排页面中的Log 图标打开部署日志窗口(见下图)。
应用日志:用户在测试部署时需要知道相应的应用运行细节, 这时可以通过点击编排页面中的Log 图标打开应用日志窗口,选择相应的应用图标来切换不同的应用日志(见下图)。
Web Terminal: 为了更好的方便用户调试程序,可以直接通过Web Terminal 能力直接打开容器的控制台(见下图)。
2.5 发布到测试环境
完成2.4节编排好应用部署拓扑后,选择部署到测试环境。
测试部署完毕后,服务发布者会看到测试环境应用的访问URL和详情,并通过这些信息判断应用具体情况。
2.6 部署在生产环境
2.6.1 生产部署
生产部署指的是针对应用通过测试后,被部署到最终生产环境。生产环境有着严格的资源隔离划分,不同用户拥有独立命名的空间 和可用资源。测试环境中会保留测试内容。
在生产环境下的部署方式如下:
- 单击菜单的“控制台→待完成”链接:
- 在接下来的界面中,找到刚才发布的APP,单击“上架申请”或“部署”按钮:
- 如果是单租户APP,会要求你填写修订版本;确认后会直接提交上架申请,等待管理员审核。
- 如果是多租户APP,会进入一个类似于服务编排的界面,单击右下角“部署到生产环境”:
- 弹出填写修订版本的对话框,填写信息后等待成功消息,最后单击右下角的“完成”按钮回到“待完成”界面。
2.6.2 上架申请
服务发布者需要先通过上架过程将应用发布到云市场平台的应用市场上,这样应用才能被用户浏览并订阅。服务发布者选择确认上 架后,系统会将上架申请发送至服务管理员,由服务管理员对应用进行审批,判断应用是否可以上线。
提交上架申请的操作步骤:
用户通过服务发布者账户登录云市场平台。
单击右上方账户名,在屏幕左边导航栏中选择发布-APP发布。
输入APP详情后进入APP编排环节。
编排好应用部署拓扑后,选择部署到测试环境。
应用测试成功后,服务发布者选择部署,确认后直接进行生产部署。
应用部署完成后,点击上架申请,向服务管理员提交上架申请。
2.6.3 下架申请
上架后的应用如果不想再被消费者购买,或由于其他原因需要暂时将其下架(如升级回滚、重新编排、修改、添加或删除应用的功能或程序),服务发布者可以通过控制台对应用进行下架处理。 应用下架后,订阅者将无法在应用市场找到该应用。
下架应用的操作步骤:
用户通过服务发布者账户登录云市场平台。
单击右上方账户名,在屏幕左边导航栏中选择控制台-已发布。
选择相应的产品,在操作栏点击下架。