云帮社区版开放免费下载半个月了,已经有不少小伙伴开始体验了我们的云帮产品,但真正了解云帮运行机制以及产品设计思想的朋友并不多,本系列文档从云帮的产品设计思路开始,逐步介绍云帮的技术架构以及各个特性的技术实现,中间还会穿插各种应用实战的内容,希望能够帮助大家深刻的理解云帮,并借助云帮为您的工作提供便利。
概述
云帮可以创建符合 12要素 的云原生应用。平台使用Docker作为基本的计算单元来封装应用,利用Kubernetes对应用进行编排和容器调度。好雨将Kubernetes 与 Docker 进行了深度整合,并针对企业级服务特性自主研发了应用引擎、运维平台、持续交付引擎、自动化运维、云应用市场等功能模块,底层的分布式存储、SDN、日志收集、实时统计则采用了扩展性极强的插件式设计,增强了平台的灵活性和扩展性。
12要素应用
符合12要素原则(实践方法)构建的应用可以在分布式系统中灵活的伸缩与迁移。
12要素 的贡献者参与过数以百计的应用程序的开发和部署,并通过 Heroku 平台见证了数十万应用程序的开发,运作以及扩展的过程。
云帮的设计完全兼容了12要素原则,可以实现云原生应用的高可用、弹性伸缩,灵活迁移等特性。
平台集成环境自动构建功能,不但支持Dockerfile构建应用,还提供了源代码级别的应用构建,您无需了解Docker,也不需要写Dockerfile,平台可以将您的源代码自动构建成应用并运行起来。
应用
云帮平台提到最多的名词就是 应用,云帮中可操作的对象也是应用,这里的应用指的是可独立提供服务的单元,请不要与手机应用,APP混淆。
应用 可以通过下列三种形式来创建/获取:
Git仓库中的源代码
Git仓库中Dockerfile文件以及相关的源代码
应用市场 或 云市中通过 "一键部署" 安装
应用可以有不同的类型,不同应用有各自的属性和行为,如:Web应用的属性包含 应用名称,默认域名,开放端口,行为包含 绑定域名、扩容节点、启动、关闭等。 MySQL应用的属性和行为都是针对MySQL服务所特有的,如备份恢复,数据库管理等等。
构建、发布与运行
构建阶段
构建组件处理来自git push的请求,或者用户触发构建(一键部署)操作。
如果您提交的是源代码,构建组件会进行源代码的构建操作,检查代码语言,利用语言的包管理工具安装相关环境依赖和代码库依赖。源代码构建程序还会将本次源码语言的类型、包依赖关系存入应用属性中。
如果构建模块发现您的代码中包含一个 Dockerfile 文件,会按照Docker标准的镜像构建的方式解析Dockerfile,生成Docker 镜像并推送的内部私有的镜像仓库中。
发布阶段
发布阶段由应用引擎来完成,它负责将本次构建的应用注册为一个新的版本,并将源码、Dockerfile在构建阶段识别出来的属性存储下来。为应用存储版本信息是为了上线后方便回滚,存储构建信息是为了下次构建时缓存状态。
运行阶段
运行阶段主要由 应用引擎 和 Kubernetes 来完成,首先由应用引擎初始化租户网络(如果租户网络已经存在,该步骤跳过),然后应用引擎调用Kubernetes的控制器服务部署租户应用,应用的属性信息由应用引擎设定。容器创建成功后,会将信息写入到etcd服务中,应用层负载均衡的自动发现机制感应变化后更新负载均衡节点信息。
后端服务
云帮将所有持久化存储服务如:数据库、缓存、存储、消息系统等均看成是应用的附加资源,这些服务与应用是分开的,我们<font color=red>不建议</font>将应用和后端服务放到一个应用中,这样做违背了12要素的设计原则。
应用程序通过环境变量的形式与后端服务进行关联。这样做是为了将应用与后端服务解耦,无论是应用还是后端服务都可以实现独立的灵活伸缩。
下期预告
下期主要介绍 云帮的技术架构。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。