github.com/chasestarr/deis@v1.13.5-0.20170519182049-1d9e59fbdbfc/docs/understanding_deis/components.rst (about)

     1  :title: Components
     2  :description: Components of the Deis application platform (PaaS)
     3  
     4  .. _components:
     5  
     6  Components
     7  ==========
     8  
     9  Deis consists of a number of components that combine to create a distributed PaaS.
    10  Each Deis component is deployed as a container or set of containers.
    11  
    12  .. _comp_controller:
    13  
    14  Controller
    15  ----------
    16  The controller component is an HTTP API server. Among other functions, the
    17  controller contains :ref:`the scheduler <scheduler>`, which decides
    18  where to run app containers.
    19  The ``deis`` command-line client interacts with this component.
    20  
    21  .. _database:
    22  
    23  Database
    24  --------
    25  The database component is a `PostgreSQL`_ server used to store durable
    26  platform state. Backups and WAL logs are pushed to :ref:`Store`.
    27  
    28  .. _builder:
    29  
    30  Builder
    31  -------
    32  The builder component uses a `Git`_ server to process
    33  :ref:`Application` builds. The builder:
    34  
    35   #. Receives incoming ``git push`` requests over SSH
    36   #. Authenticates the user via SSH key fingerprint
    37   #. Authorizes the user's access to write to the Git repository
    38   #. Builds a new `Docker` image from the updated git repository
    39   #. Adds the latest :ref:`Config` to the resulting Docker image
    40   #. Pushes the new Docker image to the platform's :ref:`Registry`
    41   #. Triggers a new :ref:`Release` through the :ref:`Controller`
    42  
    43  .. note::
    44  
    45      The builder component does not incorporate :ref:`Config` directly into the
    46      images it produces.   A :ref:`Release` is a pairing of an application image
    47      with application configuration maintained separately in the Deis
    48      :ref:`Database`.
    49  
    50      Once a new :ref:`Release` is generated, a new set of containers
    51      is deployed across the platform automatically.
    52  
    53  .. _registry:
    54  
    55  Registry
    56  --------
    57  The registry component hosts `Docker`_ images on behalf of the platform.
    58  Image data is stored by :ref:`Store`.
    59  
    60  .. _logspout:
    61  
    62  Logspout
    63  --------
    64  The logspout component is a customized version of `progrium's logspout`_ that runs
    65  on all CoreOS hosts in the cluster and collects logs from running containers.
    66  It sends the logs to the :ref:`logger` component.
    67  
    68  .. _logger:
    69  
    70  Logger
    71  ------
    72  The logger component is a syslog server that collects logs from :ref:`logspout`
    73  components spread across the platform.
    74  This data can then be queried by the :ref:`Controller`.
    75  
    76  .. _publisher:
    77  
    78  Publisher
    79  ---------
    80  The publisher component is a microservice written in Go that publishes
    81  containers to etcd so they can be exposed by the platform :ref:`router`.
    82  
    83  .. _router:
    84  
    85  Router
    86  ------
    87  The router component uses `Nginx`_ to route traffic to application containers.
    88  
    89  .. _store:
    90  
    91  Store
    92  ------
    93  The store component uses `Ceph`_ to store data for Deis components
    94  which need to store state, including :ref:`Registry`, :ref:`Database`
    95  and :ref:`Logger`.
    96  
    97  .. _`Amazon S3`: http://aws.amazon.com/s3/
    98  .. _`Celery`: http://www.celeryproject.org/
    99  .. _`Ceph`: http://ceph.com
   100  .. _`Docker`: http://docker.io/
   101  .. _`etcd`: https://github.com/coreos/etcd
   102  .. _`Git`: http://git-scm.com/
   103  .. _`Nginx`: http://nginx.org/
   104  .. _`OpenStack Storage`: http://www.openstack.org/software/openstack-storage/
   105  .. _`PostgreSQL`: http://www.postgresql.org/
   106  .. _`progrium's logspout`: https://github.com/progrium/logspout
   107  .. _`Redis`: http://redis.io/