github.com/greenboxal/deis@v1.12.1/docs/understanding_deis/architecture.rst (about)

     1  :title: Architecture
     2  :description: Architecture of the Deis application platform (PaaS)
     3  
     4  .. _architecture:
     5  
     6  Architecture
     7  ============
     8  
     9  Deis uses a service oriented architecture with :ref:`components`
    10  grouped into a Control Plane, Data Plane and Router Mesh.
    11  
    12  .. _system-diagram:
    13  
    14  System Diagram
    15  --------------
    16  
    17  .. image:: DeisSystemDiagram.png
    18      :alt: Deis System Diagram
    19  
    20  Operators use the ``Deisctl API`` to stand up the cluster's Control Plane, Data Plane and Router Mesh.
    21  End-users of the platform interact with the Control Plane using the ``Deis API``.
    22  
    23  The Control Plane dispatches work to the Data Plane via a scheduler.
    24  The Router Mesh is used to route traffic to both the Control Plane and Data Plane.
    25  Because the router mesh is usually connected to the public Internet,
    26  it is often connected to a front-end load balancer.
    27  
    28  .. _control-plane:
    29  
    30  Control Plane
    31  -------------
    32  
    33  .. image:: DeisControlPlane.png
    34      :alt: Deis Control Plane Architecture
    35  
    36  The Control Plane performs management functions for the platform.
    37  Control plane components (in blue) are all implemented as Docker containers.
    38  
    39  The :ref:`store` component consists of a number of smaller components that represent a
    40  containerized Ceph cluster which provides a blob storage API and POSIX filesystem API
    41  for the control plane's stateful components:
    42  
    43   * :ref:`registry` - a Docker registry used to hold images and configuration data
    44   * :ref:`database` - a Postgres database used to store platform state
    45   * :ref:`logger` - a syslog log server that holds aggregated logs from the data plane
    46  
    47  End-users interact primarily with the :ref:`comp_controller` which exposes an
    48  HTTP API. They can also interact with the :ref:`builder` via ``git push``.
    49  
    50  .. _data-plane:
    51  
    52  Data Plane
    53  ----------
    54  
    55  .. image:: DeisDataPlane.png
    56      :alt: Deis Data Plane Architecture
    57  
    58  The Data Plane is where :ref:`Containers <container>` (in blue) are run on behalf of end-users.
    59  
    60  The platform scheduler is in charge of placing containers on hosts in the data plane.
    61  Deis also requires a few lightweight components on these hosts:
    62  
    63   * :ref:`publisher` - publishes end-user containers to the :ref:`router`
    64   * :ref:`logspout` - feeds log data to the Control Plane :ref:`logger`
    65  
    66   .. _router-mesh:
    67  
    68  Router Mesh
    69  -----------
    70  
    71  .. image:: DeisRouterMesh.png
    72   :alt: Deis Router Mesh Architecture
    73  
    74  The Router Mesh publishes :ref:`Applications <application>` to consumers.
    75  
    76  Each :ref:`router` in the mesh is a configurable software load balancer designed to expose
    77  :ref:`Containers <container>` running in the data plane.
    78  Routers track healthy containers using a distributed, watchable store like ``etcd``.
    79  
    80  Any changes to router configuration or certificates are applied within seconds.
    81  
    82  .. _topologies:
    83  
    84  Topologies
    85  ----------
    86  
    87  For small deployments you can run the entire platform
    88  -- Control Plane, Data Plane and Router Mesh -- on just 3 servers.
    89  
    90  For larger deployments, you'll want to isolate the Control Plane and Router
    91  Mesh, then scale your Data Plane out to as many servers as you need.
    92  
    93  See :ref:`isolating-planes` for further details.
    94  
    95  The Deis Control Plane, Data Plane, and Router Mesh components all depend on an
    96  etcd cluster for service discovery and configuration. For larger deployments,
    97  you'll want to isolate this as well.
    98  
    99  Those building larger clusters should reference :ref:`isolating-etcd` for
   100  further details.