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/