Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。
几个组件。
控制器组件(Controller)
控制器组件是一个HTTP API服务器。Deis命令行客户端可以与此组件交互。
数据库组件(Database)
数据库组件是一个PostgreSQL服务器,用来持久化平台状态。备份和WAL日志会被推送到Store组件。
缓存组件(Cache)
缓存组件是一个Redis实例,在controller和registry中会被使用到。
Builder
Builder使用Git服务器来处理应用的构建。构建步骤为:
- 接受来自于SSH的
git push
请求 - 通过SSH的密钥验证用户
- 授权用户Git仓库的写权限
- 根据更新的Git仓库构建一个新的Docker镜像
- 将最新的配置添加到最终的Docker镜像
- 将镜像推送到平台的注册中心
- 在控制器上创建一个新的发行版本
一旦新的发行版本生成,新的容器会在平台上自动的进行部署。
Registry
Registry保存Docker镜像。镜像的数据保存在Store中。
Logspout
Logspount组件是一个自定义化的progrium’s logspount,它可以运行在CoreOS集群的主机中,并从运行的容器中收集日志,最后再将日志发送到日志组件。
Logger
Logger组件其实是一个syslog服务器,它可以用来收集来自Logspout的日志。这些数据可以通过控制组件查询。
发布器(Publisher)
发布器组件是一个使用Go语言编写的微服务,可以将容器发布到etcd,并暴露给平台的路由器(Router)。
路由器(Router)
路由组件使用Nginx将流量路由到应用容器。