Deis包含很多的组件,这些组件一起组成一个分布式的PaaS。每一个Deis的组件都可以以一个容器或者一组容器的方式部署。
几个组件。

控制器组件(Controller)

控制器组件是一个HTTP API服务器。Deis命令行客户端可以与此组件交互。

数据库组件(Database)

数据库组件是一个PostgreSQL服务器,用来持久化平台状态。备份和WAL日志会被推送到Store组件

缓存组件(Cache)

缓存组件是一个Redis实例,在controller和registry中会被使用到。

Builder

Builder使用Git服务器来处理应用的构建。构建步骤为:

  1. 接受来自于SSH的git push请求
  2. 通过SSH的密钥验证用户
  3. 授权用户Git仓库的写权限
  4. 根据更新的Git仓库构建一个新的Docker镜像
  5. 将最新的配置添加到最终的Docker镜像
  6. 将镜像推送到平台的注册中心
  7. 在控制器上创建一个新的发行版本

一旦新的发行版本生成,新的容器会在平台上自动的进行部署。

Registry

Registry保存Docker镜像。镜像的数据保存在Store中。

Logspout

Logspount组件是一个自定义化的progrium’s logspount,它可以运行在CoreOS集群的主机中,并从运行的容器中收集日志,最后再将日志发送到日志组件

Logger

Logger组件其实是一个syslog服务器,它可以用来收集来自Logspout的日志。这些数据可以通过控制组件查询。

发布器(Publisher)

发布器组件是一个使用Go语言编写的微服务,可以将容器发布到etcd,并暴露给平台的路由器(Router)。

路由器(Router)

路由组件使用Nginx将流量路由到应用容器。

Store(存储)

存储组件使用Ceph来保存需要存储状态的Deis组件,包括RegistryDatabaseLogger