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/