Deis consists of a number of components that combine to create a distributed PaaS. Each Deis component is deployed as a container or set of containers.
The controller component is an HTTP API server. Among other functions, the
controller contains the scheduler, which decides
where to run app containers.
The deis
command-line client interacts with this component.
The database component is a PostgreSQL server used to store durable platform state. Backups and WAL logs are pushed to Store.
The cache component is an optional instance of Redis. If the cache is running, it will be used by the Registry.
Caching can cause problems for deis pull
, but may speed up access to small
files when using a remote storage backend such as S3. The deisctl
provisioning
tool does not install or start the cache by default.
The builder component uses a Git server to process Application builds. The builder:
- Receives incoming
git push
requests over SSH- Authenticates the user via SSH key fingerprint
- Authorizes the user’s access to write to the Git repository
- Builds a new Docker image from the updated git repository
- Adds the latest Config to the resulting Docker image
- Pushes the new Docker image to the platform’s Registry
- Triggers a new Release through the Controller
Note
The builder component does not incorporate Config directly into the images it produces. A Release is a pairing of an application image with application configuration maintained separately in the Deis Database.
Once a new Release is generated, a new set of containers is deployed across the platform automatically.
The registry component hosts Docker images on behalf of the platform. Image data is stored by Store.
The logspout component is a customized version of progrium’s logspout that runs on all CoreOS hosts in the cluster and collects logs from running containers. It sends the logs to the Logger component.
The logger component is a syslog server that collects logs from Logspout components spread across the platform. This data can then be queried by the Controller.