目录
第1章系统概述
1.1建设背景
随着信息技术的发展,互联网+教育的应用模式改变了人们的工作及生活模式,面向教育、企业及政府单位的企业应用逐步走向云化、互联网化,但是随着公司业务的发展,往往会出现服务器环境越来越复杂,管理依赖困难等问题。这些问题导致运维压力大,开发、测试、运维的整体工作效率大打折扣,团队竞争力下降。行业的问题积累,有时需要新技术的出现才能解决。Docker的横空出世,让人们看到了build、ship、run一体化的希望,而奕云CaaS正是希望基于docker 的容器化技术,解决用户从代码自动编译打包,到线上运行维护的全套需求.
1.2痛点分析
传统运维模式的问题:
●随着业务快速发展,服务器环境越来越复杂,各种紧急上线,技术债务,
临时版本的程序,脚本等,可能长期得不到清理,最终引发问题。
●技术平台快速发展,管理依赖是件很麻烦的事,而且影响运维和开发的沟
通。
●环境统一问题,经常导致上线失败。开发、测试、运维协作困难。
●监控体系不断重构,难以满足需求。
●规模小无需自动化,而规模大后再自动化又容易引起问题。
●十分依赖经验丰富的运维人员。
传统单体架构问题:
●加载、编译耗时长。
●代码管理负责。
●横向扩展难。
●各模块之间的耦合程度高。
针对以上问题,奕云容器管理平台设计了可以帮助您构筑企业级?DevOps 流程工具链和交付文化以及微服务架构的敏捷开发流程,助力企业实现交付能力的平滑升级。
1.3系统简介
奕云caas平台是基于容器的企业应用支撑云平台,为企业提供Devops、微服务架构、自动化运维等解决方案,通过奕云CaaS平台提供的容器服务,助力企业实现基础设施云化,应用架构现代化,开发流程敏捷化,打造行业领先的IT能力。
容器服务是基于基础设施提供的 Docker 容器引擎服务平台,覆盖了软件开发过程中的开发、测试、演练、上线等生命周期管理,保持应用系统快速搭建和各环境的一致性。
容器技术可以处理不同平台之间的差异性,提供一个标准化的交付方式,统一配置,统一环境,保证效率,能有效的实现资源限制。此外,容器能够做到快速迁移,秒级高可用。容器服务能够对应用进行按需配置,秒级弹性伸缩,大大减少开发,测试及运维人员的环境搭建和应用创建的服务时间,提高工作效率,提高基础设施资源利用率,降低硬件和软件及人力成本。
奕云CaaS采用私有云模式,实现用户私有集群的容器化管理和资源智能化分配,提供全流程标准化的主机管理、应用持续集成、镜像构建、部署管理、容器运维和多层级监控服务。
1.4建设目标
●开箱即用,定位为纯工具,与自身业务无关。
●开发自运维,使开发人员能全流程跟踪和发现应用服务的问题。
●全流程全视图,覆盖集成、部署、运维、监控等每一个产品开发运维环节,
一步到位,省心省力
●追求效率和利用率,分钟级的构建和部署,提高开发交付效率,极速的升
级回滚和扩缩容,让业务能够快速迭代和弹性伸缩。
●智能化的监控,及时了解业务和主机运行状况,发现潜在的问题。
●标准,用docker镜像和容器分别标准化业务的集成和交付环节,统一产品
开发交付的工作流程,标准化生产和测试环境,避免开发测试过程中环境不统一的问题。
第2章系统架构
上图为系统架构图,CaaS平台以google开源的K8S集群管理系统为基础来管理Iaas基础设施,在Docker技术的基础上,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列完整功能,CaaS平台在此基础上通过整合从开发到运维的工具链,实现Docker镜像的管理、服务管理、API管理、监控告警管理、CI&CD集成管理,通过控制台单一入口组件为企业提供应用支撑平台。
第3章CI&CD流程
上图为CI&CD的整体流程示意图。
●开发人员可在应用程序和运行平台这两层进行应用程序的编码、构建、
测试和发布;
●测试人员可进行环境的快速搭建,测试环境的一致性和持续集成等工作;
●运维人员可进行从硬件、操作系统到运行时平台的安装、配置、运行监
控、升级和优化等工作。
●开发使用不同的镜像服务部署开发环境,方便本地开发环境的搭建和一
致性;
●测试通过使用镜像完成服务持续集成,简化测试环境的搭建;
●运维使用同一份镜像服务部署,保持环境的一致性,也可以制作镜像并
进行快速部署;在应用大流量的情况,能做到秒级的扩容;
开发环节:
CI 流程
Developer
Gitlab
CaaS-CI
K8S
Docker registry
Commit and push
code
Webhook 触发构建镜像
代码编译
通过
否控制台提示或邮件
通知
是
执行测试
通过
镜像升级自动部署到测试环境
是
打包镜像
否在registry 存储生成的项目镜像版本 上图为开发环节开发人员从提交代码到发布到测试环境的整个过程。 测试环节:
测试环节流程跟开发环节流程一样,建立测试项目并进行CI 流程进行验收测试,以前端框架为angular 为例,采用protractor + selenium 方案。 ● GITLAB 建立测试项目,编写protractor 测试脚本,模拟浏览器执行测试。 ● 提交代码。
● 执行protratcor 镜像到selenium 环境进行测试。 ● 测试完毕将测试结果通过nginx 镜像发布出来。 运维环节:
● 手工将测试通过的镜像发布到生产环境中。
● 运维人员可进行从硬件、操作系统到运行时平台的安装、配置、运行监
控、升级和优化等工作。
第4章功能说明4.1功能清单
由代码仓库和项目管理组成,通过关联Gitlab上的项目在CaaS上走CI流程构建可部署的项目镜像。
4.2.1代码仓库
●功能说明
将Gitlab上具有权限的项目做关联,自动生成Gitlab的webhook,用于代码提交后自动触发CI构建流程。关联的项目用于项目构建镜像时选用。
关联代码库:选择需要构建镜像的项目代码库,关联后自动生成Gitlab的webhook。
查看webhook:查看设置到gitlab上的webhook信息。
4.2.2项目管理
●功能说明
项目是一组工程的集合,是管理需要构建镜像的项目以及构建镜像配置。
新增项目:新增项目信息。
项目成员:管理成员对项目的权限。
删除项目:删除已创建的项目信息。
4.2.3工程管理
●功能说明
对项目的所有工程进行管理,管理工程构建配置以及构建记录等。
新建工程:创建工程构建配置信息。用户可选择使用代码仓库进行构建,也可以不使用代码仓库构建。创建的工程配置用于生成dockerfile文件。
删除工程:删除已创建的工程构建配置信息。
工程构建:点击构建按钮,选择代码仓库的分支以及版本,点击确定后将使用工程构建配置生成的dockerfile生成项目镜像并存储到docker仓库中。
工程详情:列出工程的基本信息、构建配置以及构建记录。
构建记录:列出手工构建或者自动触发构建的记录,每条记录可以查看构建日志以及停止构建操作。
4.3应用管理
用于将项目生成的镜像部署到测试环境或生产环境上,镜像升级可自动触发升级,对于运行的镜像可停止、扩缩容、升级回滚等操作。
4.3.1应用管理
●功能说明
应用是一组服务的集合,集群采用Kubernetes作为分布式容器管理工具,用户可以将应用的镜像部署到生产或测试环境中。用户可以管理正在运行的业务,进行升级回滚、扩容缩容、日志查看、异常恢复、启动停止等操作。
新建应用:新建应用信息,并添加成员的权限。
删除应用:删除已定义的应用。
应用详情:点击详情进入应用管理界面,可新增应用的服务以及管理应用的部署配置和运维操作。下图为应用详情界面。
4.3.2服务管理
●功能说明
列出所有应用的服务,并对服务的部署配置进行管理。
新增服务:新增服务信息,填写部署到集群环境的K8S部署配置以及负载均衡信息。
删除服务:修改已创建的服务信息以及部署配置信息。
重启服务:重启正在运行的服务。
停用流服务:停用正在运行的服务。
启用服务:启用停用的服务。
升级/回滚:镜像升级可触发自动升级,升级后可回滚到指定旧版本的配置。修改部署配置后保存就对部署配置版本升级一个新版本,会提示用户是否升级。
扩容/缩容:正在运行的服务可点击扩容缩容按钮对实例进行手动伸缩服务的实例数量。填写伸缩实例的数量即可完成伸缩功能。
自动伸缩:填写是否开启自动伸缩的开关以及CPU或内存的阈值,当业务访问需求变化触发阈值则进行实例的自动伸缩以满足业务需求。
部署详情:展示部署的信息,列表显示部署触发的事件以及错误信息。
4.3.3容器管理
●功能说明
管理所有服务部署产生的所有容器实例。可以查看容器日志以及采用web界面ssh登录到容器的控制台。
日志查看:查看容器内服务产生的日志。
控制台:点击控制台则以root身份ssh登录到容器的控制台查看容器内服务状态。
4.4交付中心
4.4.1基础镜像
●功能说明
添加用于构建项目镜像的基础镜像,以满足项目工程构建的需求。
新增基础镜像:新增基础镜像,添加的信息有基础镜像的仓库地址、镜像名称和版本。
删除基础镜像:删除基础镜像。
4.4.2项目镜像
●功能说明
列表显示通过项目管理中通过项目构建配置产生的镜像,按项目名分类管理该项目所有工程所有分支以及各个版本的镜像。
删除镜像:删除项目下某个分支某个版本的镜像。原则上不允许删除镜像,以免回滚操作找不到镜像导致回滚失败。因此删除镜像需在系统配置中配置私有仓库的token认证才允许删除。
其他镜像:在私有仓库中无法进行分类的镜像全部划分到其他镜像列表中。
4.4.3应用市场
●功能说明
由奕云发布或第三方发布的可一键部署的应用。通常为已写好K8S编排文件的应用。
部署:应用市场上的应用可点击部署按钮一键或少量修改后进行部署,填写应用名称,修改并确认编排文件无误后即刻创建应用。
发布应用:发布到应用市场的应用通常包括应用的图标、市场分类、编排文件、项目镜像,按文件夹形成规范,将具备规范的软件包放置于指定目录即可将应用发布到应用市场上。首先从公网上加载奕云发布的官方应用,然后再加载指定目录上的第三方应用。下图为应用市场界面。
4.5运维管理
4.5.1集群管理
●功能说明
管理多个K8S集群,对于拥有developer权限以上的用户,可以为该集群添加主机并设置主机的工作场景、主机标签、是否用于构建等信息。
新增集群:新增集群信息,填写K8S集群的APISERVER、etcd、dns、日志开
启等信息。
集群设置:对添加的集群信息进行查看和修改。
删除集群:删除已定义的集群信息。
命名空间:添加集群命名空间,不同团队可以拥有不同的命名空间,不同命名空间的服务名、部署名、POD名称可以相同。
集群成员:添加成员并设置集群成员的权限。
4.5.2主机管理
●功能说明
维护集群中的节点,可添加K8S节点以及管理节点标签。
添加主机:通过选择主机类型是centos或ubuntu类型,将生成的命令拷贝到主机上执行即添加一个K8S的节点。
标签设置:管理该主机的标签,可添加、删除用于该主机的标签,用于服务部署时编排到该主机。
主机设置:设置该主机的工作环境是测试环境还是正式生产环境以及是否用于CI构建镜像。
实例列表:列出运行于该主机的容器实例,可以查看该实例的日志和ssh进日控制台查看服务状态。
4.5.3监控管理
●功能说明
奕云监控管理提供多维度的主机和运行实例的监控,通过列表和图表方式呈现给用户。
监控列表:列出主机或容器的资源占比,监控指标有CPU占用、内存占用、磁盘读写占用、网络流入流出占用比。
图标监控:以曲线图和饼状图方式呈现的监控数据。
4.5.4告警管理
●功能说明
告警管理用于添加报警策略,用户可以自定义主机组以及用户组,当主机组
满足告警策略定义的阈值时,发送邮件或短信给用户组中定义的用户。
新建模板:新建告警策略模板,用户可选择主机或容器实例进行监控,设置告警逻辑,当告警产生时发送的邮件模板和用户组。
添加主机组:添加运用于告警模板的主机组合。对不同的主机组可设置不同的告警策略模板。
添加用户组:添加接收告警邮件或短信的用户组。
未恢复告警:列表显示未恢复的告警,只有master权限才可以删除未恢复的告警。
第5章运行环境
5.1服务器环境要求
CaaS平台可以直接部署于物理机上,也可以部署于虚拟机上。
普通方案如下:
●CaaS平台部署时需保证公网和内网网络正常,无拦截机制。
●部署完成后可以关闭公网访问。如需从公网提拉镜像则需公网访问。
●如需外部网段推拉镜像,则需开通5000端口。
●CaaS控制台服务默认采用9090端口。外部访问则需开通9090端口。业务
端口根据业务具体情况进行开通。一般建议开通一段端口用于更多服务需要发布出去时使用。