github.com/technosophos/deis@v1.7.1-0.20150915173815-f9005256004b/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 component is an optional instance of `Redis`_. If the cache is running,
    33  it will be used by the :ref:`registry`.
    34  
    35  Caching can cause problems for ``deis pull``, but may speed up access to small
    36  files when using a remote storage backend such as S3. The ``deisctl`` provisioning
    37  tool does not install or start the cache by default.
    38  
    39  .. _builder:
    40  
    41  Builder
    42  -------
    43  The builder component uses a `Git`_ server to process
    44  :ref:`Application` builds. The builder:
    45  
    46   #. Receives incoming ``git push`` requests over SSH
    47   #. Authenticates the user via SSH key fingerprint
    48   #. Authorizes the user's access to write to the Git repository
    49   #. Builds a new `Docker` image from the updated git repository
    50   #. Adds the latest :ref:`Config` to the resulting Docker image
    51   #. Pushes the new Docker image to the platform's :ref:`Registry`
    52   #. Triggers a new :ref:`Release` through the :ref:`Controller`
    53  
    54  .. note::
    55  
    56      The builder component does not incorporate :ref:`Config` directly into the
    57      images it produces.   A :ref:`Release` is a pairing of an application image
    58      with application configuration maintained separately in the Deis
    59      :ref:`Database`.
    60  
    61      Once a new :ref:`Release` is generated, a new set of containers
    62      is deployed across the platform automatically.
    63  
    64  .. _registry:
    65  
    66  Registry
    67  --------
    68  The registry component hosts `Docker`_ images on behalf of the platform.
    69  Image data is stored by :ref:`Store`.
    70  
    71  .. _logspout:
    72  
    73  Logspout
    74  --------
    75  The logspout component is a customized version of `progrium's logspout`_ that runs
    76  on all CoreOS hosts in the cluster and collects logs from running containers.
    77  It sends the logs to the :ref:`logger` component.
    78  
    79  .. _logger:
    80  
    81  Logger
    82  ------
    83  The logger component is a syslog server that collects logs from :ref:`logspout`
    84  components spread across the platform.
    85  This data can then be queried by the :ref:`Controller`.
    86  
    87  .. _publisher:
    88  
    89  Publisher
    90  ---------
    91  The publisher component is a microservice written in Go that publishes
    92  containers to etcd so they can be exposed by the platform :ref:`router`.
    93  
    94  .. _router:
    95  
    96  Router
    97  ------
    98  The router component uses `Nginx`_ to route traffic to application containers.
    99  
   100  .. _store:
   101  
   102  Store
   103  ------
   104  The store component uses `Ceph`_ to store data for Deis components
   105  which need to store state, including :ref:`Registry`, :ref:`Database`
   106  and :ref:`Logger`.
   107  
   108  .. _`Amazon S3`: http://aws.amazon.com/s3/
   109  .. _`Celery`: http://www.celeryproject.org/
   110  .. _`Ceph`: http://ceph.com
   111  .. _`Docker`: http://docker.io/
   112  .. _`etcd`: https://github.com/coreos/etcd
   113  .. _`Git`: http://git-scm.com/
   114  .. _`Nginx`: http://nginx.org/
   115  .. _`OpenStack Storage`: http://www.openstack.org/software/openstack-storage/
   116  .. _`PostgreSQL`: http://www.postgresql.org/
   117  .. _`progrium's logspout`: https://github.com/progrium/logspout
   118  .. _`Redis`: http://redis.io/