github.com/misfo/deis@v1.0.1-0.20141111224634-e0eee0392b8a/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.
    17  The ``deis`` command-line client interacts with this component.
    18  
    19  .. _database:
    20  
    21  Database
    22  --------
    23  The database component is a `PostgreSQL`_ server used to store durable
    24  platform state. Backups and WAL logs are pushed to :ref:`Store`.
    25  
    26  .. _cache:
    27  
    28  Cache
    29  -----
    30  The cache is an instance of `Redis`_ used by the controller
    31  and registry.
    32  
    33  .. _builder:
    34  
    35  Builder
    36  -------
    37  The builder component uses a `Git`_ server to process
    38  :ref:`Application` builds. The builder:
    39  
    40   #. Receives incoming ``git push`` requests over SSH
    41   #. Authenticates the user via SSH key fingerprint
    42   #. Authorizes the user's access to write to the Git repository
    43   #. Builds a new `Docker` image from the updated git repository
    44   #. Adds the latest :ref:`Config` to the resulting Docker image
    45   #. Pushes the new Docker image to the platform's :ref:`Registry`
    46   #. Creates a new :ref:`Release` on the :ref:`Controller`
    47  
    48  Once a new :ref:`Release` is generated, a new set of containers
    49  is deployed across the platform automatically.
    50  
    51  .. _registry:
    52  
    53  Registry
    54  --------
    55  The registry component hosts `Docker`_ images on behalf of the platform.
    56  Image data is stored by :ref:`Store`.
    57  
    58  .. _logspout:
    59  
    60  Logspout
    61  --------
    62  The logspout component is a customized version of `progrium's logspout`_ that runs
    63  on all CoreOS hosts in the cluster and collects logs from running containers.
    64  It sends the logs to the :ref:`logger` component.
    65  
    66  .. _logger:
    67  
    68  Logger
    69  ------
    70  The logger component is a syslog server that collects logs from :ref:`logspout`
    71  components spread across the platform.
    72  This data can then be queried by the :ref:`Controller`.
    73  
    74  .. _publisher:
    75  
    76  Publisher
    77  ---------
    78  The publisher component is a microservice written in Go that publishes
    79  containers to etcd so they can be exposed by the platform :ref:`router`.
    80  
    81  .. _router:
    82  
    83  Router
    84  ------
    85  The router component uses `Nginx`_ to route traffic to application containers.
    86  
    87  .. _store:
    88  
    89  Store
    90  ------
    91  The store component uses `Ceph`_ to store data for Deis components
    92  which need to store state, including :ref:`Registry`, :ref:`Database`
    93  and :ref:`Logger`.
    94  
    95  .. _`Amazon S3`: http://aws.amazon.com/s3/
    96  .. _`Celery`: http://www.celeryproject.org/
    97  .. _`Ceph`: http://ceph.com
    98  .. _`Docker`: http://docker.io/
    99  .. _`etcd`: https://github.com/coreos/etcd
   100  .. _`Git`: http://git-scm.com/
   101  .. _`Nginx`: http://nginx.org/
   102  .. _`OpenStack Storage`: http://www.openstack.org/software/openstack-storage/
   103  .. _`PostgreSQL`: http://www.postgresql.org/
   104  .. _`progrium's logspout`: https://github.com/progrium/logspout
   105  .. _`Redis`: http://redis.io/