Skip to content

Latest commit

 

History

History
100 lines (75 loc) · 2.67 KB

File metadata and controls

100 lines (75 loc) · 2.67 KB
title:Architecture
description:Architecture of the Deis application platform (PaaS)

Architecture

Draft Architectural Diagram

Deis consists of 7 components that combine to create a distributed PaaS. Each Deis component is deployed as a :ref:`Container`.

Controller

The :ref:`controller <Controller>` component is a RESTful API server written with Django and Celery. Command-line clients interact 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 component uses Redis to:

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`.

Log Server

The log server component uses rsyslog to aggregate log data from across the platform. This data can then be queried by the :ref:`Controller`.

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 (namely :ref:`Registry` and :ref:`Database`).