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