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/