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