Skip to content

Latest commit

 

History

History
106 lines (80 loc) · 2.94 KB

File metadata and controls

106 lines (80 loc) · 2.94 KB
title:Components
description:Components of the Deis application platform (PaaS)

Components

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.

Controller

The controller component is an HTTP API server. Among other functions, the controller contains :ref:`the scheduler <choosing_a_scheduler>`, which decides where to run app containers. The deis command-line client interacts with this component.

Database

The database component is a PostgreSQL server used to store durable platform state. Backups and WAL logs are pushed to :ref:`Store`.

Cache

The cache is an instance of Redis used by the registry.

Builder

The builder component uses a Git server to process :ref:`Application` builds. The builder:

  1. Receives incoming git push requests over SSH
  2. Authenticates the user via SSH key fingerprint
  3. Authorizes the user's access to write to the Git repository
  4. Builds a new Docker image from the updated git repository
  5. Adds the latest :ref:`Config` to the resulting Docker image
  6. Pushes the new Docker image to the platform's :ref:`Registry`
  7. Creates a new :ref:`Release` on the :ref:`Controller`

Once a new :ref:`Release` is generated, a new set of containers is deployed across the platform automatically.

Registry

The registry component hosts Docker images on behalf of the platform. Image data is stored by :ref:`Store`.

Logspout

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 :ref:`logger` component.

Logger

The logger component is a syslog server that collects logs from :ref:`logspout` components spread across the platform. This data can then be queried by the :ref:`Controller`.

Publisher

The publisher component is a microservice written in Go that publishes containers to etcd so they can be exposed by the platform :ref:`router`.

Router

The router component uses Nginx to route traffic to application containers.

Store

The store component uses Ceph to store data for Deis components which need to store state, including :ref:`Registry`, :ref:`Database` and :ref:`Logger`.