Deis v1, the CoreOS and Docker PaaS: Your PaaS. Your Rules.

Overview
This repository (deis/deis) is no longer developed or maintained. The Deis v1 PaaS based on CoreOS Container Linux and Fleet has been replaced by Deis Workflow which is based on Kubernetes.

Deis v1 PaaS

Deis (pronounced DAY-iss) is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

Build Status Current Release Latest Docs

New to Deis? Learn more about Deis Concepts, Architecture and how to Deploy an Application.

Installing Deis v1

Deis is a set of Docker containers that can be deployed anywhere including public cloud, private cloud, bare metal or your workstation. Decide where you'd like to deploy Deis, then follow the provider-specific documentation for provisioning.

Trying out Deis? Please follow the documentation on getting set up with Vagrant. Upgrading from a previous Deis release? See Upgrading Deis for additional information.

Troubleshooting

See the Troubleshooting Deis documentation for assistance with common issues.

Contributing

Interested in contributing to Deis? Check out our Open Roadmap and Planning Process or jump right into hacking on Deis and testing your Deis cluster.

License

Copyright 2013, 2014 Engine Yard, Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Comments
  • deis router requests hang after about an hour

    deis router requests hang after about an hour

    Slightly different from a recently reported error.

    After about an hour, all connections to Deis' router hang in v1.5.0. Once I restart each router, everything goes back to working fine...

    $ curl -v http://172.17.100.29/health-check
    * About to connect() to 172.17.100.29 port 80 (#0)
    *   Trying 172.17.100.29...
    * Adding handle: conn: 0x7fa212000000
    * Adding handle: send: 0
    * Adding handle: recv: 0
    * Curl_addHandleToPipeline: length: 1
    * - Conn 0 (0x7fa212000000) send_pipe: 1, recv_pipe: 0
    * Connected to 172.17.100.29 (172.17.100.29) port 80 (#0)
    > GET /health-check HTTP/1.1
    > User-Agent: curl/7.30.0
    > Host: 172.17.100.29
    > Accept: */*
    >
    ^C (more than 30s hang, so interrupted)
    
    $ deisctl restart router@1 && deisctl restart router@2 && deisctl restart router@3
    - [email protected]: inactive/dead
    - [email protected]: active/running
    - [email protected]: inactive/dead
    - [email protected]: active/running
    - [email protected]: inactive/dead
    - [email protected]: active/running
    
    $ curl -v http://172.17.100.29/health-check
    * About to connect() to 172.17.100.29 port 80 (#0)
    *   Trying 172.17.100.29...
    * Adding handle: conn: 0x7ff96480aa00
    * Adding handle: send: 0
    * Adding handle: recv: 0
    * Curl_addHandleToPipeline: length: 1
    * - Conn 0 (0x7ff96480aa00) send_pipe: 1, recv_pipe: 0
    * Connected to 172.17.100.29 (172.17.100.29) port 80 (#0)
    > GET /health-check HTTP/1.1
    > User-Agent: curl/7.30.0
    > Host: 172.17.100.29
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    * Server nginx/1.7.10 is not blacklisted
    < Server: nginx/1.7.10
    < Date: Fri, 10 Apr 2015 01:46:58 GMT
    < Content-Type: text/plain
    < Content-Length: 0
    < Connection: keep-alive
    <
    * Connection #0 to host 172.17.100.29 left intact
    

    Nothing out of the ordinary in the global journalctl, or the router logs.

    Going to try and revert the routers to v1.4.1 and see if it is a CoreOS issue or a v1.5.0 issue.

    router 
    opened by azurewraith 109
  • Make store component optional by allowing external database, registry, and log collector

    Make store component optional by allowing external database, registry, and log collector

    Related to #2252 and #2295.

    It seems to me like the store and Ceph add a lot of complexity to the Deis cluster. The store component is obviously useful, maybe necessary for applications that require everything to be self-contained in the cluster. However, for someone like me with little Devops experience, it would be nice to have the option to offload some of this complexity to other services that require little or no management on my part.

    For example, from an AWS perspective I could ideally replace the database component with RDS, remove the logger component and have the logspouts post logs to a service like Loggly or Papertrail, and have the the registry use S3 as storage. If I'm correct, then no components would rely on the store and deis-store-daemon, deis-store-gateway, deis-store-metdata, and deis-store-monitor could all be removed from the cluster.

    Some benefits that I could see from my perspective:

    1. No need for Ceph experience to debug issues with the store. (I took down a node in the cluster without fully removing it from Ceph, and managed to leave my cluster in an unrecoverable state.)
    2. Nodes are stateless - which make it much easier to scale down the cluster. No need to go through the process of tearing-down Ceph - just shut down the server.
    3. Core components use less of the cluster's resources.

    This could potentially make upgrading the Deis platform easier as well, but I'm not sure.

    I just wanted to throw out this idea to see what the potential downsides are for this strategy, and what the Deis team's opinion is on supporting something like this.

    all-components open-roadmap 
    opened by mgartner 94
  • /home/git/project.git/hooks/pre-receive: No such file or directory

    /home/git/project.git/hooks/pre-receive: No such file or directory

    Uh. I tried to push a new version to Deis. Mid-push my computer shut down, and when I returned I could not push again because a push was in progress.

    I read in the issue tracker that you could a) delete the lock file or b) restart the builder. I didn't find any lockfile, so I restarted the builder.

    Now it seems like nothing works.

    I get this error when pushing

    onbjerg at AIR in ~/Projects/wallz on develop
    $ git push deis develop:master
    /usr/local/bin/gitreceive: line 33: /home/git/wallz.git/hooks/pre-receive: No such file or directory
    fatal: Could not read from remote repository.
    
    Please make sure you have the correct access rights
    and the repository exists.```
    
    bug builder production-team 
    opened by onbjerg 64
  • Use Real CoreOS on DigitalOcean

    Use Real CoreOS on DigitalOcean

    Note: this won't work. DigitalOceans CoreOS is too new for current deis version...

    Howto Test Provisioning:

    • edit contrib/coreos/user-data as usual to include your new discovery URL
    • gem install docl
    • cd contrib/digitalocean
    • Create a personal Access Token on DO (https://cloud.digitalocean.com/settings/applications)
    • Copy the token a new file to do-access-token (in contrib/digitalocean)
    • exectue ./provision-do-cluster.sh lon1 230790 2GB Replace the middle value with your SSH ID The first value is identifier for the region (valid values are sfo1 lon1 ny3). Last value is the size identifier in the form of NGB (eg 8GB which used to be the default)
    • Wait & look for the IP on the DO website in your droplet list
    • ssh core@$PUBLICIP
    • This show show welcome to DEIS $ `fleetctl list-machines Should list the 3 machines provided (or more if you modified DEIS_NUM_INSTANCES)

    TDOO:

    • [x] Update Documentation
    • [x] Update DEIS itself so it works with this newer version of CoreOS
    • [x] Squash commits
    • [x] Show progress for creating the Droplets
    • [x] Handle errors in creating the droplets
    • [x] Decide if we want users to install 2 depencencies (barge DO Library, and tugboat command line), or convert everything to barge (meaning scripts for all possible actions need to be written).

    Earlier TODO

    • [ ] Start using the Beta channel as soon as possible. Apparantly we rely on the alpha channel for all other providers as well, so this todo is discarded now
    opened by nathansamson 58
  • feat(platform): support placement options for each plane and router mesh

    feat(platform): support placement options for each plane and router mesh

    Addresses #3023

    Documentation to follow if the approach is satisfactory.

    This updates units (and code that generates units) such that Deis platform components belonging to the control plane can be scheduled only where machine metadata includes controlPlane=true. Similarly, data plane components (including applications) can be scheduled only where machine metadata includes dataPlane=true and router mesh components can be scheduled only whrere machine metadata includes routerMesh=true.

    user-data.example is modified such that machines configured from that cloud-config are eligible to host both planes and the router mesh. This permits small clusters composed entirely of general purpose nodes to be constructed as easily as ever before and permits the platform to be installed to such a cluster without complication, but it additionally creates the the ability for advanced operators using custom cloud-config to easily partition the nodes of a larger cluster by role without needing to modify/customize unit files. This is especially useful for anyone wishing to implement CoreOS' own recommended large / production-worthy cluster architecture documented here:

    https://coreos.com/docs/cluster-management/setup/cluster-architectures/#production-cluster-with-central-services

    ~~BREAKING CHANGE: Requires that all machines hosting Deis components be assigned one or more of controlPlane=true, dataPlane=true, or routerMesh=true via cloud-config. This represents a breaking change for anyone upgrading an existing clutser.~~

    requires-manual-testing deisctl contrib and provisioning Code LGTM1 Code LGTM2 
    opened by krancour 57
  • store-volume fails after update to v0.15.0

    store-volume fails after update to v0.15.0

    Following the upgrade instructions didn't work for me on 3-node vagrant.

    $ git checkout v0.14.1
    $ make -C deisctl/ build
    $ deisctl --version
    0.14.1
    $ deisctl refresh-units
    $ deisctl config platform set domain=local3.deisapp.com
    $ deisctl install platform
    $ deisctl start platform
    $ deisctl uninstall platform
    $ git checkout v0.15.0
    $ make -C deisctl/ build
    $ deisctl --version
    0.15.0
    $ deisctl refresh-units
    $ deisctl config platform set version=v0.15.0
    $ deisctl install platform
    $ deisctl start platform
    ● ▴ ■
    ■ ● ▴ Starting Deis...
    ▴ ■ ●
    
    Storage subsystem...
    deis-store-monitor.service: activating/start-pre                                 
    deis-store-monitor.service: active/running                                 
    deis-store-daemon.service: activating/start-pre                                 
    deis-store-daemon.service: active/running                                 
    deis-store-metadata.service: activating/start-pre                                 
    deis-store-metadata.service: active/running                                 
    deis-store-volume.service: activating/start-pre                                 
    deis-store-gateway.service: activating/start-pre                                 
    deis-store-gateway.service: active/running                                 
    deis-store-volume.service: activating/auto-restart                                 
    deis-store-volume.service: activating/start-pre                                 
    deis-store-volume.service: activating/auto-restart                                 
    deis-store-volume.service: activating/start-pre                                 
    deis-store-volume.service: activating/auto-restart                                 
    deis-store-volume.service: activating/start-pre                                 
    deis-store-volume.service: activating/auto-restart                                 
    deis-store-volume.service: activating/start-pre 
    ...
    
    bug 
    opened by mboersma 52
  • feat(controller): Adding LDAP/AD auth support

    feat(controller): Adding LDAP/AD auth support

    This is the Pull Request for the Proposal that we discussed at #3135 using the PoC in the gist.

    I didn't write any test because I imagine that it's not good have specific tests for auth with ldap, so my opinion is that if the actual auth tests pass its good enough.

    If sounds good I will make a doc with the README content and create another PR.

    enhancement controller 
    opened by phspagiari 51
  • getting an error during scaling for 2nd app

    getting an error during scaling for 2nd app

    getting the below from 'docker logs controller':

    2014-07-24 15:50:58 [98] [DEBUG] POST /api/apps/engine/scale
    ERROR Internal Server Error: /api/apps/engine/scale
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 112, in get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py", line 78, in view
        return self.dispatch(request, *args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
        return view_func(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 400, in dispatch
        response = self.handle_exception(exc)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 397, in dispatch
        response = handler(request, *args, **kwargs)
      File "/app/api/views.py", line 290, in scale
        app.scale()
      File "/app/api/models.py", line 211, in scale
        group(*subtasks).apply_async().join()
      File "/usr/local/lib/python2.7/dist-packages/celery/canvas.py", line 486, in apply_async
        add_to_parent=add_to_parent)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/task.py", line 420, in __call__
        return self.run(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/builtins.py", line 165, in run
        add_to_parent=False) for stask in taskit]
      File "/usr/local/lib/python2.7/dist-packages/celery/canvas.py", line 241, in apply_async
        return _apply(args, kwargs, **options)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/task.py", line 555, in apply_async
        **dict(self._get_exec_options(), **options)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 351, in send_task
        reply_to=reply_to or self.oid, **options
      File "/usr/local/lib/python2.7/dist-packages/celery/app/amqp.py", line 305, in publish_task
        **kwargs
      File "/usr/local/lib/python2.7/dist-packages/kombu/messaging.py", line 168, in publish
        routing_key, mandatory, immediate, exchange, declare)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 457, in _ensured
        interval_max)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 369, in ensure_connection
        interval_start, interval_step, interval_max, callback)
      File "/usr/local/lib/python2.7/dist-packages/kombu/utils/__init__.py", line 243, in retry_over_time
        return fun(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 237, in connect
        return self.connection
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 741, in connection
        self._connection = self._establish_connection()
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 696, in _establish_connection
        conn = self.transport.establish_connection()
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/__init__.py", line 809, in establish_connection
        self._avail_channels.append(self.create_channel(self))
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/__init__.py", line 791, in create_channel
        channel = self.Channel(connection)
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 440, in __init__
        self.client.info()
      File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 547, in info
        return self.execute_command('INFO')
      File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 464, in execute_command
        connection.send_command(*args)
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 334, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 316, in send_packed_command
        self.connect()
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 253, in connect
        raise ConnectionError(self._error_message(e))
    ConnectionError: Error 111 connecting 172.31.47.113:6379. Connection refused.
    2014-07-24 15:51:37 [98] [DEBUG] POST /api/apps/engine/scale
    ERROR Internal Server Error: /api/apps/engine/scale
    Traceback (most recent call last):
      File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 112, in get_response
        response = wrapped_callback(request, *callback_args, **callback_kwargs)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/viewsets.py", line 78, in view
        return self.dispatch(request, *args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/csrf.py", line 57, in wrapped_view
        return view_func(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 400, in dispatch
        response = self.handle_exception(exc)
      File "/usr/local/lib/python2.7/dist-packages/rest_framework/views.py", line 397, in dispatch
        response = handler(request, *args, **kwargs)
      File "/app/api/views.py", line 290, in scale
        app.scale()
      File "/app/api/models.py", line 211, in scale
        group(*subtasks).apply_async().join()
      File "/usr/local/lib/python2.7/dist-packages/celery/canvas.py", line 486, in apply_async
        add_to_parent=add_to_parent)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/task.py", line 420, in __call__
        return self.run(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/builtins.py", line 165, in run
        add_to_parent=False) for stask in taskit]
      File "/usr/local/lib/python2.7/dist-packages/celery/canvas.py", line 241, in apply_async
        return _apply(args, kwargs, **options)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/task.py", line 555, in apply_async
        **dict(self._get_exec_options(), **options)
      File "/usr/local/lib/python2.7/dist-packages/celery/app/base.py", line 351, in send_task
        reply_to=reply_to or self.oid, **options
      File "/usr/local/lib/python2.7/dist-packages/celery/app/amqp.py", line 305, in publish_task
        **kwargs
      File "/usr/local/lib/python2.7/dist-packages/kombu/messaging.py", line 168, in publish
        routing_key, mandatory, immediate, exchange, declare)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 457, in _ensured
        interval_max)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 369, in ensure_connection
        interval_start, interval_step, interval_max, callback)
      File "/usr/local/lib/python2.7/dist-packages/kombu/utils/__init__.py", line 243, in retry_over_time
        return fun(*args, **kwargs)
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 237, in connect
        return self.connection
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 741, in connection
        self._connection = self._establish_connection()
      File "/usr/local/lib/python2.7/dist-packages/kombu/connection.py", line 696, in _establish_connection
        conn = self.transport.establish_connection()
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/__init__.py", line 809, in establish_connection
        self._avail_channels.append(self.create_channel(self))
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/virtual/__init__.py", line 791, in create_channel
        channel = self.Channel(connection)
      File "/usr/local/lib/python2.7/dist-packages/kombu/transport/redis.py", line 440, in __init__
        self.client.info()
      File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 547, in info
        return self.execute_command('INFO')
      File "/usr/local/lib/python2.7/dist-packages/redis/client.py", line 464, in execute_command
        connection.send_command(*args)
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 334, in send_command
        self.send_packed_command(self.pack_command(*args))
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 316, in send_packed_command
        self.connect()
      File "/usr/local/lib/python2.7/dist-packages/redis/connection.py", line 253, in connect
        raise ConnectionError(self._error_message(e))
    ConnectionError: Error 111 connecting 172.31.47.113:6379. Connection refused.
    
    
    opened by developerinlondon 50
  • chore(logger): refactor-- also includes new features

    chore(logger): refactor-- also includes new features

    Fixes #4000; replaces #4435

    TL;DR: A complete rewrite of deis-logger aimed at easier extensibility and maintenance. Some bug fixes and new features are included as well, as are many new unit tests.

    Motivations

    • #4000 called for the implementation of an in-memory ring buffer as an alternative to file-based log storage (which doesn't work out so well for those running stateless / without Ceph).
    • The possibility that in-memory storage is used as an alternative to file-based storage means deis-controller can no longer mount a volume in common with deis-logger to get logs. deis-logger needed to evolve to serve logs to deis-controller over HTTP.
    • deis-logger was not originally written to read logs; only to write them.
    • The implementation offered by the community in #4083 was welcome, but fell short in a few keys areas:
      • Introduced the concept of a "handler" for storing and reading logs, but clashed with deis-logger's existing notion of what a "handler" is. (Overloaded term.)
      • Introduced some undesired complexity-- e.g. deis-controller only read logs from deis-logger over HTTP if the in-memory storage option was in use. (deis-controller shouldn't have to know how logs are being stored and shouldn't have to adjust its behavior based on that. Logs could/should always be retrieved from the deis-logger over HTTP.)
      • Only checked the "handler" type to use at startup; couldn't dynamically reconfigure itself.
      • Didn't adequately address failure cases.
    • Despite those few problems, #4083 actually worked great! Big shout out to @rvadim and @aj-may for their efforts on this. Unfortunately, since the implementation was layered on top of existing code that was in rough shape to begin with, this didn't bode well for future maintenance and extension. deis-logger as it stood prior to this PR:
      • Was based on a library that hasn't been updated in three years.
      • Had lots of dead, untested, and hard-to-follow code.
      • Existing support for writing logs to files and draining logs was a hack to begin with.
      • Only supported UDP-based drains. (TCP needed for use with TLS-- future feature.)

    Issues such as #4280 are also considerations that informed the approach.

    Weighing the myriad concerns, a scorched earth re-design seemed the way to go.

    Design

    Here's a brief overview of the design. (I'll see about adding a use case diagram tomorrow to help make this easier for reviewers.)

    Logger

    main.go handles startup including flag parsing. It supports all the same flags as the old implementation for complete backwards compatibility. It initializes and starts four components:

    1. A syslogish.Server: reads and writes logs. For writing, it implements a loop that receives logs (1 per packet) over UDP. A non-blocking write immediately puts these into an internal queue. This is exactly the same as before. Another loop ranges over the queue and processes log messages. It delegates their storage to an underlying storage.Adapter (file-based or in-memory) and delegates draining to an underlying drain.LogDrain (UDP-based or TCP-based :new:; SSL not supported yet). For reading, reads are also delegated to the underlying storage.Adapter. A key improvement is that storage write failures (rare) and failures to dial the drain (could happen if Papertrail went down, for instance) are handled silently. This sounds bad, but it helps avoid a logging death spiral that happens when the logger can't handle its own error messages. (All other failures that won't start the death spiral are logged, of course.)
    2. A weblog.Server: handles HTTP GET and DELETE requests. Delegates all actual work to the syslogish.Server.
    3. A Configurer: uses a ticker and watches etcd for changes to /deis/logs/storageAdapterType and /deis/logs/drain. When changes are detected, it uses factories that take the values of those keys to construct appropriate storage.Adapter and drain.LogDrain instances, respectively. These are then injected into the syslogish.Server.
    4. A Publisher: uses a ticker and periodically writes the logger's host and port to etcd using the /deis/logs/host and /deis/logs/port, respectively.

    Apart from these four primary components, there are also two implementations each of storage.Adapter and drain.LogDrain. These are unit tested rather thoroughly. (Which is the reason this PR is a net addition of lines to the code base.)

    One other notable improvement is that complex cleanup logic has been removed. It is not needed AFAICT.

    The Fleet unit for deis-logger no longer Requires deis-store-volume, but merely Wants it. This allows it to start up in the absence of Ceph.

    Controller

    The modifications to deis-controller are more modest. confd is used to look up the deis-logger host now. Combining that with a hard-coded port 8088 permits discovery of the deis-logger component's new weblog.Server. The RESTful interface it exposes allows the controller to read and destroy logs. Failure cases are all accounted for and tests have been added to simulate the failure scenarios and assert that they are handled properly.

    The Fleet unit for deis-controller no longer expresses a dependency on deis-store-volume, nor does it mount the volumes from that container on the deis-controller container. (Let's hear it for decoupling.)

    deisctl

    deisctl has been modified to now install deis-logger with the stateless platform (previously omitted) and to also start that component during stateless platform start or restart.

    logger Code LGTM1 Code LGTM2 
    opened by krancour 49
  • Design Doc: HTTP Healthcheck on Deploy

    Design Doc: HTTP Healthcheck on Deploy

    refs the new proposal in #4019. All input/feedback on the doc is welcome. refs #3813

    Please note that this document is being maintained at https://gist.github.com/bacongobbler/d2f0ef2311d1e3e28997 to keep a living history of any changes made.

    During a typical deployment of an application release, the controller performs a status check from Fleet after it has been deployed to ensure that it is running. However, Fleet is a glorified systemd wrapper, which means that it only checks systemd if the process is running (in this case, docker run). If a container's web process takes some time to boot, this may cause a false positive status check from the user's perspective. This proposal introduces a new concept into Deis known as a health check, which will make the controller check Deis' Publisher component for real-time stats on the app to ensure the container is running before recycling the old release.

    Goals

    The main goals of this proposal is to

    • ensure a zero-downtime deployment between deployments of new releases
    • allow the user to configure the URL path, the health check delay, and the health check request timeout value.

    Code Changes

    In order for this change to occur, there needs to be a way for users to configure both the expected health check URL as well as the initial delay and timeout value of the request. Since the Config object currently exists and the health checks are considered part of an application's configuration, the code changes in the controller is fairly minimal:

    • deis config:set HEALTHCHECK_URL=/ will configure a health check URL for the application
    • the expected status code from the health check is a 200 OK. This is non-configurable.
    • deis config:set HEALTHCHECK_PORT=5432 will configure a health check port for the application (default: 5000)
    • deis config:set HEALTHCHECK_INITIAL_DELAY=10 will tell Deis' Publisher to wait 10 seconds before performing a health check (default: 0)
    • deis config:set HEALTHCHECK_TIMEOUT=10 will tell Deis' Publisher that the request may take up to 10 seconds before the app is considered "down" (default: 5).

    These keys will be exposed to Etcd at /Deis/config/appname/health check_URL=/ so deis's Publisher can retrieve these values to perform its job.

    Once HEALTHCHECK_URL is set, the controller will do the typical application release workflow. However, once the controller is notified by Fleet that the new version of the application is "up", the controller will wait a minimum of x+y seconds, where x is equal to the value of HEALTHCHECK_INITIAL_DELAY, and y is equal to the value of HEALTHCHECK_TIMEOUT. By default this is 5 seconds. Once the waiting is over, the controller will then perform an API request against the Publisher to inspect the container's health (more on that below).

    On the Publisher's side, before it publishes a container to Etcd, it will check Etcd for these keys. If health check_URL is set, then it will perform the health check. It will also expose an API which the controller can now ping. The API will be very simple:

    Example request:

    GET /up
    

    Example Response:

    [
        "foo_v2.web.1",
        "foo_v2.web.3",
        "bar_v3.cmd.1"
    ]
    

    This response is a list of all containers which Publisher has exposed to Etcd and are considered "up". It will be the responsibility of the controller to parse this response to check if the containers deployed are up based on the container ID. If the health check passes, the rest of the deployment workflow will then continue, recycling old containers and returning a successful response to the client. If only a few are down (few being anything less than all of the new containers), a warning will be raised, but the operation will be considered "passed". However, if health check failed, the controller will respond with an appropriate error and roll back to the old version of the application.

    Issues to Note

    With this approach, We have some legacy code in the Publisher which will only publish the latest version of the container at any given time (see #2413 for a history lesson). This was put in place to prevent two existing versions of the same app to be published to the router. We'll have to be extra careful not to break this functionality, but we also have to make sure that we're still publishing the older version of the controller to the load balancer (Deis-router) before the new container passes the health check. For example, if the user has set an initial delay that is higher than the TTL of the Etcd keys, this could cause the old version of the containers to come down, causing downtime. This can be mitigated with proper unit tests within Publisher to ensure that an older version of the container is still getting published at this time.

    Testing

    In order for this proposal to work, we need to ensure a zero-downtime deployment, as well as proper errors to be returned when an application fails to respond in time or with an incorrect status code. Since the controller has a great suite for unit tests, most of the workflow for the client will be covered by unit tests to ensure that the proper errors are propagated when certain cases occur. However, the zero-downtime approach will be covered by a combination of unit tests in Deis-Publisher as well as some comprehensive integration tests. How this will be accomplished is by invoking a goroutine that will continuously ping the app URL. If a 404 response shows up (due to #3774), then the deployment failed as a zero-downtime deployment.

    controller 
    opened by bacongobbler 48
  • `deis pull` as alternative to `git push` workflow

    `deis pull` as alternative to `git push` workflow

    The new deis pull command is an alternative to the git push workflow that allows promotion of existing Docker images, bit-for-bit, into a Deis application. It pulls the image from your repository and merges it with existing config to create a new release.

    Overview of Changes

    • Refactored logic for creating new releases
    • Client now uses the git remote for backwards-compat, falling back to the name of the current directory as the app name (this is necessary for git-less deis pull process)
    • Controller uses a registry-to-registry transfer hack to speed up deis pull by 33%, which can be seen and reviewed at https://github.com/deis/docker-registry/compare/repository-import

    How to Test

    Test backwards-compat for existing applications

    Install a Fresh Cluster from Master

    1. Create a Deis cluster on the master branch
    2. Register a user with deis register
    3. Create a cluster with deis clusters:create
    4. Add keys with deis keys:add

    Create an Application

    1. Create an application from a git repository (e.g. example-ruby-sinatra)
    2. Deploy the application using git push
    3. Commit a minor change (git commit --allow-empty) and git push a new v3
    4. Use curl or deis open to test that the app is up

    Perform an in-place Upgrade

    1. Uninstall Deis with make uninstall (should retain database data and application units)
    2. Checkout deis-build
    3. Install upgraded Deis with make build run
    4. Use deis login to re-establish a session with the controller

    Check Backwards Compatibility

    1. Change directory back into your application
    2. Use deis info and deis open to check the health of the application
    3. Make a minor change (git commit --allow-empty) and use git push deis master to deploy it
    4. Use deis open to confirm it works
    5. Use deis rollback v2 to roll back to an image created on the old code
    6. Use deis open to confirm it works
    7. Create a new application and use git push deis master to ensure the initial build works

    Test New Functionality

    1. Create a new directory to hold an application definition: mkdir /tmp/example-go && cd /tmp/example-go
    2. Use deis create to create "example-go"
    3. Use deis pull gabrtv/example-go to deploy from the public Docker Index
    4. Use deis open to confirm the app is working
    5. Use deis config:set POWERED_BY=blah to confirm config layers are set correctly
    6. Use deis rollback v2 to confirm rollback works
    7. Use deis pull registry.bacongobbler.com/helloworld to deploy from an in-house Docker index
    8. Use deis open to confirm the app is working
    9. Use deis run env to verify that the changes to the run command works
    requires-manual-testing 
    opened by gabrtv 44
Releases(v1.13.4)
  • v1.13.4(Jan 19, 2017)

    Note: support for Deis v1 LTS ends on February 13, 2017. Please see Deis Workflow for the next-generation PaaS.

    v1.13.3 -> v1.13.4

    Fixes

    • c63ade6 Godeps,deisctl: serialize a unit test and fix a package import
    • 7fd534c models: prune old containers before deploy
    • 49b008c contrib/azure: update template to current API and images
    • d5d51cd client: do not add top level command to cmdArgs
    • 4ade016 perms: user-only settings file permissions
    • 2381530 database/build.sh: refer to stable pv package location

    Documentation

    • 68fb9b4 layout: Update notice with URL for published v2 docs

    Maintenance

    • 9b83d00 buildpacks: update several buildpacks
    • b5a1c38 community: add latest community meeting
    • e5f349d community: september 2016 community meeting
    • 3ce03a4 router: upgrade nginx to 1.10.1 stable
    • 014ba61 buildpacks: update heroku-buildpack-go to v46
    Source code(tar.gz)
    Source code(zip)
    deis-1.13.4-SHA256SUMS(392 bytes)
    deis-cli-1.13.4-darwin-amd64.run(2.32 MB)
    deis-cli-1.13.4-linux-amd64.run(1.69 MB)
    deisctl-1.13.4-darwin-amd64.run(3.23 MB)
    deisctl-1.13.4-linux-amd64.run(2.33 MB)
  • v1.13.3(Aug 22, 2016)

    v1.13.2 -> v1.13.3

    Features

    • d369fd7 contrib: Add script to restart all apps.
    • ef80d81 client: Sort listings
    • 968c48c router: Add server_tokens option

    Fixes

    • d143b4b logspout: Ignore events with short ID

    Documentation

    • 6da7204 dockerfiles: Make Bash requirement explicit in the documentation

    Maintenance

    • e30db13 buildpacks: update go, scala, and php buildpacks
    • fc1518a (all): update base to alpine:3.4
    • fd35c66 planning: add July and August, up next, September
    • 3ef983f (all): bump CoreOS to 1068.8.0
    • 167a44a buildpacks: update go, php, nodejs, python, and scala buildpacks
    • 8342efc roadmap: clarify Deis v1 roadmap status
    Source code(tar.gz)
    Source code(zip)
    deis-1.13.3-SHA256SUMS(392 bytes)
    deis-cli-1.13.3-darwin-amd64.run(2.32 MB)
    deis-cli-1.13.3-linux-amd64.run(1.76 MB)
    deisctl-1.13.3-darwin-amd64.run(3.23 MB)
    deisctl-1.13.3-linux-amd64.run(2.54 MB)
  • v1.13.2(Jun 17, 2016)

    v1.13.1 -> v1.13.2

    Fixes

    • 5888a46 deisctl: replace -c with --cpu-shares
    • bd827ce Makefile: remove old "go vet" install command

    Documentation

    • 62f1696 upgrading: clarify AWS-specific instructions

    Maintenance

    • b795d8d planning: update for june/july community meetings
    • 6ca0414 buildpacks: update heroku-buildpack-scala to v70
    • 1d89269 buildpacks: update heroku-buildpack-php to v105
    • 750e5e9 buildpacks: update heroku-buildpack-go to v41
    • db9542a Revert (all): bump CoreOS to 1010.5.0
    • c89e903 (all): bump CoreOS to 1010.5.0
    • 885d7ef buildpacks: update heroku-buildpack-python to v80
    • 955dcea planning: updates for May planning
    Source code(tar.gz)
    Source code(zip)
  • v1.13.1(May 6, 2016)

    v1.13.0 -> v1.13.1

    Fixes

    • 2a4b9ff controller: only load latest config

    Maintenance

    • eb32fb2 buildpacks: update heroku-buildpack-ruby to v146
    • 297f885 buildpacks: update heroku-buildpack-php to v102
    • b53d38c buildpacks: update heroku-buildpack-nodejs to v90
    • cfff045 tests: update test-etcd to v2.2.3
    • 8257291 buildpacks: update heroku-buildpack-go to v34
    • c8957fc (all): bump CoreOS to 899.17.0
    • 705f736 roadmap: update for May planning meeting
    • fc65359 (all): bump CoreOS to 899.15.0
    Source code(tar.gz)
    Source code(zip)
    deis-1.13.1-SHA256SUMS(392 bytes)
    deis-cli-1.13.1-darwin-amd64.run(2.55 MB)
    deis-cli-1.13.1-linux-amd64.run(1.76 MB)
    deisctl-1.13.1-darwin-amd64.run(3.63 MB)
    deisctl-1.13.1-linux-amd64.run(2.54 MB)
  • v1.13.0(Apr 6, 2016)

    Deis v1.13.0 is the final feature release for Deis. It is a Long Term Support (LTS) release, which means we will continue to patch bugs and accept pull requests, however any new features should be applied to Deis Workflow, the successor to Deis.

    Deis v1.13.0 bumps CoreOS to 899.13.0, updates the system's containers to Alpine 3.3, removes the scheduler technology previews, bumps the Heroku buildpacks to the latest stable versions, adds a healthcheck url /healthz to the controller, and allows logspout to re-discover the logger when it jumps to another control plane node.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    v1.13.0 Summary

    New Features

    • deis-client responds to deis version, deis -v, deis --version and deis help version
    • deis-controller now has a health check view at /healthz
    • There are graceful shutdown scripts for Ceph and Ceph-less nodes. See more here
    • deis-controller returns a 409 when cancelling a user account that has applications

    Improvements

    • deis-router now makes vhost_traffic_status_zone configurable
    • deis-logspout now continuously re-discovers the logger's connection information, should it be re-scheduled onto another host
    • deis-controller prevents overlapping config:set operations
    • deis-client only deletes ~/.deis/client.json if you're cancelling your own account
    • deis-controller fixed a bug where single quotes could not be used in an environment variable
    • deis-builder can be used from within a proxied environment
    • deis-database exits if it is unable to check for existing backups in Ceph
    • Linode's provisioning script now allows for cluster expansion

    Under the Hood

    • deis-controller removed all the scheduler technology previews, including Kubernetes, Swarm and Mesos
    • CoreOS was updated to 899.13.0
    • deis-controller bumped docker-py to 1.7.2
    • Most components upgraded their Docker base image to Alpine 3.3
    • All Heroku buildpacks were updated to their current release versions

    For more details, please see CHANGELOG.md.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @ainux4mrvce: Quartz.net
    • @arkkanoid: Limit max containers per node, deis scale omits environment tags, Set SSL on Application, application migration to another node, Deis builder container removed
    • @arschles: [Meta] Object Storage Configuration for RC1
    • @CloudSide: docs(contrib): add link to deis-phppgadmin
    • @davidcelis: App process died at one point, no longer logs to deis logs
    • @dhilipsiva: Minor doc updates for GCE
    • @GautierT: Unable to register to the controller after a successful install
    • @glenwong: Problem bringing up stateless platform
    • @iangcarroll: Are repositories meant to be frequently lost?
    • @jamescw: How to view deis users and/or reset passwords, Use the cluster url as an app url
    • @jillson: tar command fails inside docker for Java buildpack
    • @jwaldrip: Broken Deploys, Router does not get updated config of builder on machine change, You cannot attach to a stopped container, start it first
    • @monaka: CLI doesn't report error on pushing image.
    • @mooyah: deisctl: Add more keys for access, Deis git push fails
    • @mrardon: Using heroku-buildpack-php provides no nginx/apache/php logs
    • @n1rvana: Dockerfile based apps not working for me, Best way to support multiple versions of the same app. (eg: DEV, QA, PROD), Unable to install deis to newly configured Azure cluster
    • @naphatkrit: git push builder error, nginx 502 on apps that take too long to return HTTP responses, fix(vagrant): fix Vagrantfile to handle spaces
    • @obmarg: Applications with many web workers frequently fail healthchecks, Config in etcd not rolled back on healthcheck failure., Healthcheck failure on deploy not reported.
    • @olalonde: Feature request: support for deploying directly from a git remote, Health checks persist after successful deployment, Question: does Deis drain HTTP connections before stopping containers?, [controller] When deleting a user, its apps are deleted from the database but keep running
    • @omykuji: Deploy an existing app when upgrading
    • @rosstimson: Support ssh keys larger than 4096 on Workflow (v2)
    • @rstacruz: Instructions for using graceful-etcd-shutdown, Stateless without logging?, Question: is stateless Deis still supported on v2?, deis-builder "key does not exist" errors, Low disk space, How do we enable graceful-etcd-shutdown?, Docs: document ceph mon remove in removing hosts, Docs: running without ceph issue with store set gateway, docs(Add/Remove hosts): fix wrong filepath to user-data.example
    • @spinus: persistant storage 2
    • @thypon: digitalocean deploy: can't reach volume quorum
    • @udragon: Running DEIS in a standalone network
    • @zhaohanweng: router-nginx-status currently is public accessible if enabled

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
    deis-1.13.0-SHA256SUMS(392 bytes)
    deis-cli-1.13.0-darwin-amd64.run(2.30 MB)
    deis-cli-1.13.0-linux-amd64.run(1.75 MB)
    deisctl-1.13.0-darwin-amd64.run(3.38 MB)
    deisctl-1.13.0-linux-amd64.run(2.54 MB)
  • v1.12.2(Dec 1, 2015)

    Deis v1.12.2 fixes HTTPS support for deis-database's wal-e in stateless mode, ensures that flannel starts before docker, prevents deis-builder from possibly not recognizing a git repo after restarting, and includes other minor improvements.

    v1.12.1 -> v1.12.2

    Fixes

    • 0738c13 database: supports HTTPs as S3 endpoint
    • 3498099 router: fix router common prefix app publishing
    • 27eab71 contrib: Add drop-in to make docker require flannel
    • 42d00af deisctl: don't panic when config key/value is malformed
    • 7410fb7 builder: Fix problem with missed git repos after builder restart

    Documentation

    • a19caaf managing_deis: change swift3 link.
    • 82732b4 hacking: add docs to show how to use the docker-machine env

    Maintenance

    • 0f96abe contrib/coreos: remove debug-etcd service
    • e1e3927 MAINTAINERS: don't enumerate maintainers
    Source code(tar.gz)
    Source code(zip)
    deis-1.12.2-SHA256SUMS(393 bytes)
    deis-cli-1.12.2-darwin-amd64.run(2.30 MB)
    deis-cli-1.12.2-linux-amd64.run(1.75 MB)
    deisctl-1.12.2-darwin-amd64.run(3.38 MB)
    deisctl-1.12.2-linux-amd64.run(2.54 MB)
  • v1.12.1(Nov 10, 2015)

    Deis v1.12.1 fixes problems with the create_bucket script on S3 storage, ensures that flanneld starts on boot, mounts a separate data directory for etcd2 on AWS, and updates CoreOS stable to 766.5.0.

    v1.12.0 -> v1.12.1

    Fixes

    • 293d657 registry: fix create_bucket s3 compatability
    • b07db69 user-data: always start flannel on boot
    • d9ef023 contrib: re-introduce data dir mapping for etcd
    • 070d081 create_bucket: check for existence of None

    Maintenance

    • 3eb277a (all): bump CoreOS to 766.5.0
    Source code(tar.gz)
    Source code(zip)
    deis-1.12.1-SHA256SUMS(392 bytes)
    deis-cli-1.12.1-darwin-amd64.run(2.30 MB)
    deis-cli-1.12.1-linux-amd64.run(1.75 MB)
    deisctl-1.12.1-darwin-amd64.run(3.38 MB)
    deisctl-1.12.1-linux-amd64.run(2.54 MB)
  • v1.12.0(Nov 4, 2015)

    The Deis project is happy to announce v1.12.0, featuring changes to deis-builder and deis-controller to ensure future compatibility with Docker. deis pull finally works with current Docker images, and the new deisctl list-machines command helps you survey your Deis cluster.

    NOTE: Docker Hub will disable access for docker versions 1.5 and earlier on December 7, 2015. Releases of Deis prior to v1.12.0 relied on docker 1.5.0 and will experience problems after that date. As a result, all users are encouraged to provision a new v1.12.0 cluster which does not rely on a specific docker version.

    Join the fun: new contributors to Deis can get free DigitalOcean credits!

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.12.0 Summary

    New Features

    • deis-controller uses the host's Docker engine for app config, no longer requiring Docker 1.5.0
    • deis pull now works with images built by Docker 1.6.2 and later
    • deisctl list-machines shows details of the nodes in your cluster
    • deis-logger has new drains that are more performant and resilient
    • deis-builder makes $SOURCE_VERSION available to buildpacks for Heroku compatibility
    • deis-controller disables swap usage when a memory limit is set
    • deis-registry logs more information during its startup process

    Improvements

    • deis pull can use a Procfile provided on the command line
    • deis-builder will continue to update etcd after transient errors
    • deis-builder updated its Docker-in-Docker wrapper to work with upcoming versions
    • DigitalOcean provisioning workflow is smoother and simpler when using rigger
    • Provisioning on Azure, GCE, and Linode handles discovery URL replacement better
    • AWS AutoScaling Groups won't be replaced thanks to CloudFormation template changes
    • Azure provisioning uses premium storage for etcd reliability
    • Linode provisioning benefits from network and DHCP configuration tweaks
    • Documentation has been updated to mention stateless graceful upgrade, Deis release criteria, and dev pre-requisites
    • deis-database and deis-registry don't require "ListAllMyBuckets" permissions for S3 storage
    • deis-builder increased its timeout to fetch third-party buildpacks

    Under the Hood

    • deis-builder uses Docker 1.8.3 internally for future compatibility
    • Deis CI systems use Docker 1.8.3 for building and testing
    • Heroku-compatible buildpacks were updated to current release versions
    • deisctl revised its fleet API code to v0.10.2
    • Ceph was updated to Hammer v0.94.5
    • Azure and Vagrant source their CoreOS version from one location: utils.sh
    • Most components updated their Docker base image to alpine:3.2
    • deis-router updated nginx to 1.9.6, including HTTP/2 support

    For more details, please see CHANGELOG.md.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @aespinosa: stale discovery URL when adding hosts
    • @arkkanoid: Deis omits tag environment when a limit is set, Error pulling image deis/slugbuilder
    • @clayzermk1: panic while getting logs for an app
    • @CloudSide: Could not find some docker images (tag: v1.11.1)
    • @crigor: New nodes should be members, not proxies, on the etcd cluster
    • @croemmich: fix(contrib/linode): fix discovery url issues in deployment scripts, fix(contrib/linode): fix issues with DHCP on Linode
    • @dmcnaught: Running without Ceph: deis-registry create_bucket looks for keys that aren't set:
    • @dustinrc: feat(contrib): vagrantfile sources utils.sh
    • @foxycoder: Deis controller flipping
    • @gahissy: deis/contrib/gce/gce-user-data generates an invalid cloud-config
    • @geeksoul-me: Logger is not draining logs in 1.11.1, Coreos user-data file uses public ip for fleet, firewall script brings fleet down
    • @gred7: Issue with stateless setup, how long [email protected]: activating/start-post should take?, getting application logs out of containers, disable adding of users
    • @helloravi: Cluster Provisioning question(~azure)
    • @jacobo: Increase timeout for fetching buildpacks
    • @jannispl: custom-firewall.sh: jump to firewall is appended rather than prepended
    • @jeff-lee: Improving ability to work with multiple deis clusters, Cross zone load balancing disabled, Units failing to start with overlay errors v1.11.0
    • @jgmize: Non-zero-downtime deploys with healthcheck enabled, ref(aws): prevent replacement of ASG in CF update, add flocks to additional services
    • @Joshua-Anderson: Ceph Build GPG Verification Error, feat(deisctl): bump fleet api to v0.10.2, fix(client): read procfile from PWD when pulling, fix(client): add newline for usage message
    • @karthequian: Common spelling error fixes
    • @kenaniah: deis client breaks when enforceHTTPS is enabled
    • @landonclark: Integrate letsencrypt into the app provisioning / installation process
    • @leshik: DO provider isn't working with latest terraform
    • @LoicMahieu: docs(upgrading-deis): graceful upgrade in stateless mode
    • @myyk: Feature request - HTTP/2 support, docs(contributing): update where build instructions are, docs(contributing): add optional pre-reqs, Cleanup dead config
    • @nathansamson: Disk cleaning does not remove all old images..., Investigate floating IPs for DigitalOcean, missing install instructions for deis client for windows, ceph warns about clock skew on DO, contrib/util/firewall.sh breaks cluster
    • @ngauthier: Panic on deis create following tutorial, fix(client): catch and propagate client errors
    • @olalonde: HTTP 413 (entity too large) error after setting bodySize to "10000M", feat(client) support pipes with deis config:push and deis:config pull, Proxying some apps through mashape/kong API gateway, bug(client/controller): deis logs replaces " with ", feat(builder): make SOURCE_VERSION env variable
    • @pdaniel-frk: problems running deis installer azure
    • @philippwiendl: app container failed to start
    • @pmclanahan: Deis should send host header with health checks.
    • @ritazh: Bug (contrib/azure) - unable to add new discovery URL to azure-user-data, fix(contrib/azure)-replace discovery url
    • @robeferre: Deis is losing a node every time., Cant start the platform in 1.11.1, Cannot perform, deis info, deis create
    • @rvaralda: Deis Registry miss /deis/store/gateway key while use S3 as storage, ref(registry/database): change the create_bucket script to avoid allow 'ListAllMyBuckets' on S3 Policy
    • @rvm2015: etcd2 setup fails on 2 of 3 nodes, expand installation docs on DNS setup, expand installation docs on public/private ip space, bare-metal docs, move the hostname 'known issue' above the installation, deisctl install platform hangs on deis-router/router mesh
    • @sbuss: Encrypt the router<->container link, bug(client): New deis go client does not read Procfiles from current directory during deis pull
    • @shingara: add pre/post deploy hook
    • @stuszynski: Admin can't see application certificates added by another admin.
    • @synaptics: Urgent help! deis-controller not starting, seems caught in a loop, HELP! deis-store-daemon high memory utilisation
    • @taxido: deis builder doesn't start because of deis registry gunicorn worker restart Error: 100: Key not found (/deis/registry/masterLock)
    • @thiver: heroku buildpack fails, but commits gets accepted
    • @vinilios: custom-firewall.sh with k8s scheduler issues

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
    deis-1.12.0-SHA256SUMS(392 bytes)
    deis-cli-1.12.0-darwin-amd64.run(2.30 MB)
    deis-cli-1.12.0-linux-amd64.run(1.75 MB)
    deisctl-1.12.0-darwin-amd64.run(3.38 MB)
    deisctl-1.12.0-linux-amd64.run(2.54 MB)
  • v1.11.2(Oct 21, 2015)

    Deis v1.11.2 further works around a bug in simultaneous docker pull by serializing all relevant commands in systemd units. This patch release also reverts the fleet service to $private_ipv4, allowing the DigitalOcean firewall script to work again for new cluster provisioning.

    v1.11.1 -> v1.11.2

    Fixes

    • abe3fa0 fix(user-data): use $private_ipv4 for fleet
    • c55d9c8 fix(*) add flocks to additional services
    • 6dc0da4 fix(*) add flocks to -data pulls for db & builder
    Source code(tar.gz)
    Source code(zip)
    deis-1.11.2-SHA256SUMS(392 bytes)
    deis-cli-1.11.2-darwin-amd64.run(2.30 MB)
    deis-cli-1.11.2-linux-amd64.run(1.75 MB)
    deisctl-1.11.2-darwin-amd64.run(3.38 MB)
    deisctl-1.11.2-linux-amd64.run(2.54 MB)
  • v1.11.1(Oct 11, 2015)

  • v1.11.0(Oct 6, 2015)

    The Deis project is proud to announce v1.11.0, featuring a rewritten deis-logger component with settings that allow in-memory storage and TCP forwarding. Stateless Deis clusters now include deis-logger and support the deis logs command.

    Join the fun: new contributors to Deis can get free DigitalOcean credits!

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.11.0 Summary

    New Features

    • deis-logger is rewritten for stability and extensibility
    • deis-registry allows IAM role authentication for S3
    • deis apps:transfer lets a user hand off ownership of an app to another user
    • deis-builder checks out submodules in custom buildpacks as needed
    • deis-router on AWS has improved Kubernetes-aware ELB healthchecks
    • deis-router can enforce whitelisting of IP addresses for apps or for deis-controller
    • New AWS clusters prevent CloudFormation from replacing instances on AMI changes
    • $DEISCTL_TUNNEL is automatically discovered on vagrant provisioning
    • deis-controller can write app event logs via logspout

    Improvements

    • Scripts in contrib/ support rigger, the new deployment tool for Deis
    • deis-controller healthchecks properly ignore non-web processes
    • Graceful upgrades fixed several issues found in the wild
    • Documentation is more detailed about Azure provisioning and when deisctl is needed
    • Docs have an architecture diagram and detail about the deis-router mesh
    • Docs give an example of backing deis-registry with OpenStack Swift
    • deis config:set handles multi-line environment variables
    • The deis client suggests help if deis create fails on the git remote
    • deis correctly displays unexpected non-JSON error messages and malformed logs
    • deis prints all error messages to stderr
    • The route53-wildcard contrib script handles its --zone argument correctly
    • deis register returns a better error if registration is disabled
    • deisctl status is listed in the main help message
    • deis-controller more thoroughly validates config keys
    • contrib/ firewall scripts check that etcd is running

    Under the Hood

    • CoreOS is updated to 766.4.0, the current stable channel version
    • New clusters use CoreOS' default etcd2 and flannel services
    • Azure provisioning uses new ARM templates
    • DigitalOcean provisioning uses terraform
    • The optional deis-cache component is removed, but deis-registry still uses it if it is present in an upgraded cluster
    • The shellcheck script linter tool was updated to 0.4.1

    For more details, please see CHANGELOG.md.

    What's Next

    Docker v2 Registry

    The Deis registry must be upgraded to the new v2 API to ensure forward-compatibility with Docker. This has a number of added benefits including performance and trust. Great progress has been made in detaching deis-controller from depending on a specific Docker version and in reimplementing deis pull to work with any standard registry container. Work remains to migrate existing v1 registry data to v2.

    Rigger

    Rigger is a new tool designed to make it easier to provision and test Deis clusters. With rigger, you can stand up and test a Deis cluster on any provider with just a handful of simple commands. The Deis core team is already using rigger internally, but we are looking for feedback. Please provide your thoughts and requirements on the design document.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @aj-may: Prototyping and discussion that led directly to the new deis-logger and its in-memory ringbuffer
    • @benbarclay: Builder incorrectly sources proxy env vars
    • @benwilber: bug(builder): Procfile should not be parsed as YAML, fix(deisctl): default stdout and stderr are reversed, fix(tests): binaries are installed in the wrong directories, fix(controller): validate config keys at the api level, fix(controller): state property can't be used in a list_filter in the Django web admin
    • @clayzermk1: builder will not come up after updating CoreOS on a v1.10.1 cluster, logspout death looping on deis v1.8.0
    • @CloudSide: How do I proxy the deisctl to Restful-API use https?
    • @crigor: Graceful Upgrade: Restart the routers once
    • @Crispy1975: enforceHTTPS causes unwanted redirect.
    • @duanhongyi: deis-builder can't start, docs(managing_deis): add OpenStack Swift store example
    • @dustinrc: fix(contrib): urlopen call hangs
    • @eroubal: 'deis pull' gives me constant 404 NOT FOUND
    • @Footjy: Support for self-signed certificates
    • @franquis: deis-builder v1.10.1 stays in state Activating/start-post
    • @geeksoul-me: Deisctl start stateless-platform hangs at builder after upgrade from 1.9.1 to 1.10.0
    • @gred7: trying to provision a cluster on amazon aws
    • @helloravi: Cluster Provisioning question(~azure)
    • @iartem: Deis logs "panic: runtime error: index out of range"
    • @ineu: Instructions on creating external database from scratch, All database contents is lost when database is rescheduled to another machine, Backup/restore documentation is not precise
    • @jfchevrette: Fix awk field separator not working on non-GNU awk
    • @jgmize: Proposal feat(k8s): docker-compose.yml syntax support via compose2kube
    • @Joshua-Anderson: fix(client): accept multi line config vars., feat(client): print error messages to stderr, fix(Makefile): silence docker-machine warning when it isn't installed, feat(controller): allow users to transfer app ownership.
    • @jwaldrip: Issues with Controller v1.6.1
    • @laurrentt: feat(Registry): add support for IAM role authentication, feat(Router): IP whitelisting for apps and controller, fix(controller): healthcheck no longer check non-web processes
    • @LoicMahieu: Can not use official nginx docker image on port 80, Stateless Install: deis-router continually logs signal process started, Stateless install: graceful upgrade re-install Deis in stateful mode, Can add multiple ssh keys with the same name and remove throws an exception
    • @mariusmarais: Router and application tagging
    • @msull92: Builder 400 error, Platform SSL certificate alongside application certificate, Issue removing ssl cert from application with spaces in common name
    • @nasali: CoreOS Configuration
    • @nathansamson: Protect pushes from wrong branch
    • @nsmith: Add https log drain type
    • @olalonde: fatal: 'somerepo.git' does not appear to be a git repository, Builder: Make git sha hash available during build, Router scheduled on machine with metadata routerMesh=false, docker: "pull" requires 1 argument. See 'docker pull --help', Stateless install: recommended RDS settings for database?
    • @robeferre: Cannot perform, deis info, deis create
    • @rvadim: Prototyping and discussion that led directly to the new deis-logger and its in-memory ringbuffer, Builder problem: ssh_exchange_identification: Connection closed by remote host.
    • @rvaralda: Deis Registry miss /deis/store/gateway key while use S3 as storage
    • @slash-: ceph mon down
    • @sstarcher: Graceful Shutdown does not remove from Discovery URL, Graceful Shutdown requires Ceph, config:push with .env does not support multline, fix(contrib): Zone argument not supported for aws
    • @szymonpk: proposal: atomic cert update

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
    deis-1.11.0-SHA256SUMS(392 bytes)
    deis-cli-1.11.0-darwin-amd64.run(2.30 MB)
    deis-cli-1.11.0-linux-amd64.run(1.75 MB)
    deisctl-1.11.0-darwin-amd64.run(3.38 MB)
    deisctl-1.11.0-linux-amd64.run(2.54 MB)
  • v1.10.1(Sep 22, 2015)

    Deis v1.10.1 fixes a problem with components not stopping cleanly, improves database boot to avoid startup issues, and rectifies deisctl output streams.

    v1.10.0 -> v1.10.1

    Fixes

    • 04a9306 deisctl: default stdout and stderr are reversed
    • 5878b8f (all): ensure component containers stop
    • 9ef640f database: improve postgres ready checks
    • fb44cbc database: fix db init file perms
    Source code(tar.gz)
    Source code(zip)
    deis-cli-1.10.1-darwin-amd64.run(2.30 MB)
    deis-cli-1.10.1-linux-amd64.run(1.75 MB)
    deisctl-1.10.1-darwin-amd64.run(3.38 MB)
    deisctl-1.10.1-linux-amd64.run(2.54 MB)
  • v1.10.0(Sep 4, 2015)

    The Deis project is proud to announce v1.10.0, which speeds up the deis command-line client and deis-builder.

    Join the fun: new contributors to Deis can get free DigitalOcean credits!

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.10.0 Summary

    New Features

    • The deis command-line tool has been rewritten in Go and is much faster
    • The deis-builder component has been rewritten in Go and is faster and more reliable
    • All buildpacks in deis-builder have been updated to the most recent versions tagged by Heroku
    • deis-logspout can optionally deliver logs via TCP
    • deis-router gained an informative traffic status page
    • deis respects the --limit= flag for commands which list results
    • Automated provision and upgrade acceptance tests now live under tests/bin/accept

    Improvements

    • Various fixes to AWS, Azure, bare metal, Linode, and OpenStack provisioning
    • Optional swarm scheduler components aren't built by default now; use make -C swarm/ build
    • NewRelic contrib docs updated now that container CPU and memory usage are available
    • deis-logger logs a unique id for each app name, helping Kubernetes scheduler usage
    • deis-logger now allows underscores in container names
    • deis-logspout fixes a potential deadlock when attaching to containers
    • Integration tests fail if deis prints any warning
    • Collaborators on apps can no longer manage others' permissions without being admins
    • Users can revoke their own app access, and some permissions checks were fixed
    • deisctl install and similar commands group k8s, mesos, and swarm components logically
    • deisctl dock and deisctl ssh show help and handle arguments more consistently

    Under the Hood

    • All components and clients are built with Go 1.5, which speeds garbage collection and enables concurrent execution
    • nginx is updated to 1.9.4
    • deis-store components are updated to Ceph 0.94.3

    For more details, please see CHANGELOG.md.

    What's Next

    Docker Engine Upgrade

    Due to critical bugs in recent Docker engines related to parallel layer pulls and v1/v2 registry compatibility, we've been forced to pin Deis clusters to Docker 1.5.0. We now believe these issues have been resolved and are eager to move to the newer version of Docker that ships with the latest CoreOS stable release.

    Docker v2 Registry

    The Deis registry must be upgraded to the new v2 API to ensure forward-compatibility with Docker. This has a number of added benefits including performance and trust. However, this will be a tricky migration given the v1 registry data we currently store, as well as the deis pull hooks in our fork of the Docker registry.

    Rigger

    Rigger is a new tool designed to make it easier to provision and test Deis clusters. With rigger, you can stand up and test a Deis cluster on any provider with just a handful of simple commands. The Deis core team is already using rigger internally, but we are looking for feedback. Please provide your thoughts and requirements on the design document.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @adrianmoya: Error trying to install
    • @aendrew: Builder not coming up after 1.9 upgrade
    • @afterthought: Restore from backup: expected state of services, Fleet failover fail
    • @alex: style(contrib/aws): Ensure that files are closed and use yaml.safe_load, chore(docs): Fixed rendering of a few code snippets
    • @anissrelicum: run commande "play evolutions --%prod" [ play framework 1.3.1]
    • @apps4u: AWS Elastic File System
    • @arkkanoid: Use cache in deployed Apps
    • @bf4: logging issues and etcd failures on Deis 1.7.3, getting OpenSSL.SSL.ZeroReturnError in failure set env variable
    • @cchamilt: natdnshostresolver1 in Vagrantfile needs to be "on" for VirtualBox on OSX now?
    • @cheshirecatalyst: config push / set 500's
    • @cimnine: Freshly set up deis cluster does not work [bare-metal]
    • @clayzermk1: fix(builder): always configure SSH key
    • @clescot: documentation does not mention incompatibility between deis and coreos shipping buggy docker versions
    • @Crispy1975: Fresh AWS Install: Docs should say to install deisctl first
    • @croemmich: feat(router): enable ssl caching and expose ssl_protocols for configuration, fix(contrib/linode): Install CoreOS from the stable channel
    • @daanemanz: Builder fails to start in stateless platform
    • @geeksoul-me: Deis publisher throwing error after 1.8 to 1.9 upgrade of stateless-platform
    • @glogiotatidis: fix(docs): update NewRelic section.
    • @gvilarino: Google: configuring DNS managed outside of Google DNS service? , Azure: unable to create apps on newly created cluster
    • @ineu: Cluster recreation: git push gives weird errors, Better error message when registration is disabled, OSD doesn't join cluster after node reboot, Deploys stop to work, /deis/platform/version missing in new installation, Log size limit settings?, Docker won't start in new cluster, deis-controller fails with CannotSendRequest
    • @JeanMertz: Deis using existing Kubernetes cluster
    • @kalbasit: Confd is sub-matching applications leading to non-existing application, Kubernetes leaving behind old releases running, docs(managing_deis): remove a space from a bash substitution
    • @klaussilveira: "Global" environment variables for all applications
    • @laurrentt: Request feat(controller): Specify custom user in docker run, feat(logspout): support sending log via tcp, docs(isolating-etcd): add link to user-data.example, feat(Makefile): option to disable store components
    • @LoicMahieu: Stateless install: deis-builder don't start
    • @MaxenceAdnot: Mesos fails to start, Controller error : 'remaining connection slots are reserved for non-replication superuser connections'
    • @mdolian: Problems cloning a public repository using NPM in builder, Azure nodes should be launched into an availability set
    • @nathansamson: can not bootstrap v1.9.0 cluster
    • @olalonde: Error pulling image ... ApplyLayer fork/exec ... /usr/bin/docker: cannot allocate memory, Atomically switch over DNS for blue-green deployment
    • @paulczar: fix(contrib/openstack/provision-openstack-cluster.sh): fix openstack …
    • @rimusz: deis 1.9.0 does not “decorate” the Fleet units, Proposal isolating etcd/planes/router mesh
    • @rvadim: Failed to pull logspout image from docker hub
    • @sbuss: Provide SHA256 hashes of deis and deisctl binaries, fix(contrib) AWS instances may only have a private IP
    • @sitya: Question about Kubernetes, Deis and etcd
    • @SomeoneWeird: Issue pulling docker images from local registry.
    • @sstarcher: Restrict Router application set, Router ERROR Missing template , AWS Deis Cluster - Flannel on ASG Event
    • @szymonpk: is cloud formation template is on the edge of size?
    • @vesmi: Healthcheck problem
    • @Xowap: Insecure etcd by default, Attach volume to app
    • @yebyen: contrib/util/custom-firewall.sh throws increasingly disconcerting messages
    • @zapient: Add ability to define separate cluster network

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
    deis-cli-1.10.0-darwin-amd64.run(2.30 MB)
    deis-cli-1.10.0-linux-amd64.run(1.75 MB)
    deisctl-1.10.0-darwin-amd64.run(3.38 MB)
    deisctl-1.10.0-linux-amd64.run(2.54 MB)
  • v1.9.1(Aug 24, 2015)

    Deis v1.9.1 fixes an error that could prevent etcd2 from starting properly on AWS clusters, a problem that hampered flannel on DigitalOcean, and several other issues. Any user who has had trouble provisioning Deis on AWS or DigitalOcean is encouraged to re-provision using Deis v1.9.1.

    v1.9.0 -> v1.9.1

    Fixes

    • d9a09b0 contrib: fix etcd2 data directory on AWS
    • 8f50e70 publisher: ignore healthcheck values if unset
    • 70867aa controller: require fleet.socket
    • 1f2264c flannel: use default iface for starting flannel except vagrant
    • ee15c14 deisctl/units: stop k8s services without errors
    • e92e2db contrib: fix debug-etcd
    • 837ef9d mesos-marathon: change instances to zero instead of scale to zero

    Maintenance

    • 76571aa (all): bump etcd to 2.1.2
    Source code(tar.gz)
    Source code(zip)
    deis-cli-1.9.1-darwin-amd64.run(6.78 MB)
    deis-cli-1.9.1-linux-amd64.run(6.88 MB)
    deisctl-1.9.1-darwin-amd64.run(2.91 MB)
    deisctl-1.9.1-linux-amd64.run(2.25 MB)
  • v1.9.0(Aug 5, 2015)

    The Deis project is happy to announce v1.9.0, which introduces Kubernetes and Mesos tech preview schedulers, provides custom health checks for your apps, and lays groundwork for the future with graceful upgrade tools.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.9.0 Summary

    New Features

    • Kubernetes scheduler tech preview!
    • Mesos with Marathon scheduler tech preview!
    • deis config:set HEALTHCHECK_URL=/ enables liveness and readiness app health checks
    • Tools for a graceful upgrade to future versions of Deis are in place
    • deisctl dock opens a shell or runs commands on a running container
    • deisctl ssh can also run commands directly on a node
    • deisctl install can specify the router mesh size (default is 3)
    • A faster, more portable deis CLI written in Go is ready for your testing and feedback!
    • make commit-hook installs a helper to warn about git commit style

    Improvements

    • deisctl exits with an error if stop or start fails
    • deis-controller enforces correct types for CPU, mem, and tags config
    • deis-controller allows non-superusers to manage their keys
    • deis-controller ignores setting gunicorn workers < 1
    • deis-database backs up the DB on unit stop
    • deis-logger uses only one Ticker for time-related operations
    • deis-publisher displays the HTTP error on connection failure
    • deis-router builds the set-misc module for nginx set_random
    • Makefiles install go tools from golang.org, not code.google.com

    Under the Hood

    • Shell scripts throughout the project are validated with shellcheck
    • The flannel overlay network is active on newly provisioned clusters
    • etcd v2.1.1 runs in a container on newly provisioned clusters
    • Updated vendored fleet code for deisctl to 0.9.2
    • Updated vendored Docker code for tests to 1.5.0
    • deis-router verifies the downloaded nginx archive

    For more details, please see CHANGELOG.md.

    What's Next

    Builder in Go

    The deis-builder component consists of a variety of shell scripts and binary tools which has proved difficult to maintain over time. Rewriting the builder as a set of Go packages will make it easier to test, improve, and extend this core component.

    This work is nearly completed. See PR 4010 for more detail.

    Deis CLI in Go

    The deis CLI is a one-file python app that has served the project well, but its PyInstaller-based binary packaging is inefficient, and it sometimes runs into incompatibilities with specific platforms. Rewriting the deis CLI as a Go binary has already proved to be faster and more portable.

    This work is nearly completed. See PR 4015 for more detail.

    TTY Broker

    Today Deis cannot provide bi-directional streams needed for log tailing and interactive batch processes. By having the Controller drive a TTY Broker component, Deis can securely open WebSockets through the routing mesh.

    See TTY Broker at the Deis Roadmap for more detail.

    Teams / Fine-Grained Permissions

    Deis uses a simple permissions model currently, involving only two roles: admin and user. Features such as sharing applications, modifying certs, and changing config could be implemented with more specific permissions.

    Work is underway on gathering community feedback and implementing teams and more refined permissions. See issue 4150 and issue 4173 for details.

    Community Shout-Outs

    The Deis project would like to extend our profound gratitude to 2015 interns Joshua Anderson (@Joshua-Anderson) and Keerthan Mala (@kmala). Joshua attacked the controller, client, and project infrastructure and made myriad improvements while rewriting our world in Go. Keerthan applied his domain expertise and owned Kubernetes (k8s), giving Deis a scheduler for the future. We have all enjoyed working with Joshua and Keerthan more than we can say, and the Deis project is much richer because of them. Thank you!

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @altitude: [question] Why should I maintain an odd number of servers ?
    • @arkkanoid: Logstash doesn't receive logs from Logspout
    • @arv1989: Deis cluster on Microsoft Azure script fails
    • @bladealslayer: Add verification of downloaded nginx archive.
    • @clayzermk1: SSH_KEY is ignored when not specifying BUILDPACK_URL, deis pull registry returns error "Tag not found" on 1.8.0
    • @Crispy1975: Vagrant: error: failed to push some refs
    • @croemmich: SSL Session Ticket Rotation, fix(contrib/linode): Install CoreOS from the stable channel
    • @fabiob: fix(router): add set-misc module to nginx build
    • @gabeio: /docs/managing_deis/configure-dns.rst is in the middle of a merge conflict
    • @ineu: deis config and releases are inconsistent, Containers are out of sync with releases
    • @jacopofar: Let the admin delete a user from the CLI
    • @JeanMertz: Deis on top of Mesosphere's DCOS
    • @jeff-lee: deisctl should warn when unit files have errors
    • @jorihardman: Non-admin users cannot remove ssh keys
    • @jwaldrip: Feature Request: Cluster-Wide ENV vars
    • @laurrentt: feat(deisctl): specify # of routers to install
    • @LoicMahieu: deis logs not showing application logs when use of Dockerfile
    • @mdolian: docs(managing_deis): add section for registrationMode
    • @molisoft: can't run created linodes
    • @msull92: deis run "interactive console"
    • @mxk1235: Not sure how to kill run.N processes, Cannot execute 'deis run ls'
    • @nasali: Deis in-place upgrade to 1.8.0 made my apps invisible , Deis Controller API
    • @nathansamson: Running docker registry results in out of disk space error, Virtualbox requirements are wrong
    • @nilnullzip: Security concern: controller and app data paths mixed together
    • @olalonde: 503 service unavailable when running deis pull drone/drone:latest, Possible to pass custom docker flags to Deis app?, deis-builder won't start after 1.6.1 -> 1.7.3 upgrade, deis config:push -a someappname doesn't work
    • @paulczar: fix(contrib/openstack/provision-openstack-cluster.sh): fix openstack …
    • @rochacon: fix(controller): allow non superusers to manage their keys
    • @sstarcher: Connection Draining
    • @szymonpk: aws elb instances ip addresses mismatch, Sanitize/filter config variables from client, no output from deis run while using ruby's puts or pp
    • @tscheepers: fix(contrib/gce): updated GCE docs with new cloud dns config and commas
    • @woopstar: stop-update-engine.service results in degraded status, Launching the sample app on a new deis cloud is failing, Wrong path to link deisctl into $PWD

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
    deis-cli-1.9.0-darwin-amd64.run(6.78 MB)
    deis-cli-1.9.0-linux-amd64.run(6.87 MB)
    deisctl-1.9.0-darwin-amd64.run(2.91 MB)
    deisctl-1.9.0-linux-amd64.run(2.25 MB)
  • v1.8.0(Jul 13, 2015)

    The Deis project is proud to announce v1.8.0, which makes installation of store, database, and logger optional when running external backing stores, adds deisctl ssh and deis auth:regenerate commands, and unleashes Deis onto Linode.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.8.0 Summary

    New Features

    • Deis can be provisioned without Ceph by using an external backing store
    • deis-router uses new nginx reuseport socket sharding
    • Deis can be provisioned on Linode, thanks to community support!
    • deisctl ssh <component> opens a shell directly to the node running the specified Deis component
    • deis-router features security configuration for DHE ciphersuites, SSL ciphers, and HSTS
    • deis auth:regenerate creates a new authentication token
    • deis-controller will properly roll back a release if some containers weren't created

    Improvements

    • Source code for deisctl is substantially refactored, with beefier, parallelized test coverage
    • Numerous enhancements to API reference documentation and generated code docs
    • Fixed "invalid tar magic" error when pushing without a Procfile
    • Fixed JSON decoding errors in test suite due to premature SSH close
    • deis-builder generates SSH keys on boot when needed
    • Doc updates to upgrade procedure, EC2 PROXY protocol, and cluster sizing for etcd
    • Contrib README.md mentions new community tools for monitoring and backup/restore
    • Added Engine Yard provisioning and Deis Pro to docs
    • deisctl won't hang forever waiting for a missing service
    • deis-builder only builds slugrunner/slugbuilder if they're missing
    • Amazon EC2 m4 instance types are now supported in provisioning
    • DigitalOcean support added a couple of eligible regions
    • DEIS_DRINK_OF_CHOICE=slurm won't break integration tests now
    • deis-registry will SIGHUP its processes correctly on restart
    • deis-builder won't log etcdctl watch output periodically
    • integration tests will retry docker push on Docker Hub errors

    Under the Hood

    • deis-router updated nginx to 1.9.2
    • deis-registry incorporates some upstream fixes to the "classic" V1 registry
    • deis-database updated wal-e to 0.8.1
    • deis-controller updated psycopg2 to 2.6.1
    • Several components updated to confd 0.10.0

    For more details, please see CHANGELOG.md.

    What's Next

    Configurable Healthchecks

    To enable publishing of new app releases with zero downtime, Deis needs a more strict, configurable HTTP healthcheck facility. Substantial progress has been made, but more coding and testing remains. Look forward to true zero-downtime deploys in the next release!

    TTY Broker

    Today Deis cannot provide bi-directional streams needed for log tailing and interactive batch processes. By having the Controller drive a TTY Broker component, Deis can securely open WebSockets through the routing mesh.

    See TTY Broker at the Deis Roadmap for more detail.

    Scheduling and Orchestration

    Today Deis uses Fleet for scheduling. Unfortunately, Fleet does not support resource-based scheduling, which results in poor cluster utilization at scale.

    Fortunately, Deis is composable and can easily hot-swap orchestration APIs. Because the most promising container orchestration solutions are under heavy development, the Deis project is focused on releasing "technology previews".

    These technology previews will help the community try different orchestration solutions easily, report their findings and help guide the future direction of Deis.

    See Scheduling and Orchestration at the Deis Roadmap for more detail.

    Etcd 2

    A CP database like etcd is central to Deis, which requires a distributed lock service and key/value store. As problems with etcd directly impact platform stability, Deis must move to the more stable etcd2.

    See Etcd 2 at the Deis Roadmap for more detail.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @adrianandreias: Feature: rkt (rocket) support
    • @aendrew: 404 after upgrading to 1.7.0
    • @ainux4mrvce: deis create issue, dockerfile, not able to push on deis master , deis login error
    • @bastilian: deisctl seems to ignore options
    • @crigor: Don't exclude .git on the slug, Update Installing SSL on a Load Balancer Doc, Admins should be able to delete users
    • @Crispy1975: Vagrant: error: failed to push some refs, Cannot deploy using Heroku buildpack and private repositories.
    • @croemmich: Can't start builder on 1.7.2., docs(backing_up_data): Add community tools for reference, docs(contrib): add link to Deis Backup and Restore, feat(contrib/linode): add Linode provision scripts and docs
    • @dpanelli: Deploy of a new version fails with: "tar: invalid tar magic " after Deis update 1.5 to 1.7
    • @etcinit: Client may break if enforceHTTPS=true and the client config points to http
    • @fabiob: AffinityArg hangs router on 1.7.3, docs(*): update references to the new base image, alpine
    • @glenwong: Multiple clusters for dev, staging, and production?
    • @glogiotatidis: App users should be able to add/edit/delete domains for app
    • @ineu: deisctl installation script output is not colorized in bash or zsh, Pull new versions of deis in advance?
    • @kalbasit: fix(deisctl): avoid blocking if output is empty
    • @krancour: API / controller logging should be via logspout, bug(docs): Inaccurate description of builder responsibilities, fix(docs): Correct and clarify description of builder component, fix(tests): fix assertions on default beverage
    • @linki: fix(router): fix markdown table rendering
    • @liuyang1204: Gateway Key not found (/deis/store/gateway/masterLock) [8462114]
    • @lorieri: deis domains doesn't check for existing apps, restarting builder requires app destroy
    • @megastef: docs(manage_deis) - add SPM Performance Monitoring
    • @mikepack: already don't -> don't already, ot -> to
    • @nathansamson: Use flocker to replace Ceph for database & builder & ..., fix(client): Fix attribute errors on windows
    • @ngerakines: Errors in logs, possibly from store.
    • @olalonde: deis-builder won't start after 1.6.1 -> 1.7.3 upgrade, deis config:push -a someappname doesn't work, "Welcome to nginx!" page after git push, journalctl shows "[WARNING] - 501: All the given peers are not reachable (Tried to connect to each peer twice and failed) [0]" on a machine, Auto restart app when it crashes?, Can't push to deis after deisctl restart builder, deis logs doesn't show log with Procfile based deployment, Weird deis ps output after running deis config:set ... and git push at the "same" time, "Welcome to NGINX" after switching from Dockerfile based deployment to Procfile, HTTPS 504 GATEWAY_TIMEOUT after setting AWS ELB https
    • @phspagiari: Deis scale isnt respecting the cluster.
    • @s20691033: store daemon is giving errors, deis run writes output to logs, and not to the client, noise in logs on non-ipv6 hosts
    • @sbuss: Starting platform hangs on the builder, can't find an image
    • @scottrobertson: deis run throws 500 error, /home/git/repo.git/build not being cleaned up, Idea: Deployment Keys, After upgrade to 1.7, sites are 404'ing and cannot push
    • @sockeye44: Go build failed, Play framework build failed
    • @sstarcher: Connection Draining, deisctl --version returns exit code of 1
    • @szymonpk: Sanitize/filter config variables from client, no output from deis run while using ruby's puts or pp, create_bucket should use secure transport if external s3 is used and it should respect s3 region, proposal feat(client) allow for custom git hostname, deis client can't setup ssl connection via cloudflare, deis-logger is eating whole cpu
    • @wenzowski: HPKP Public-Key-Pins Header, feat(router): add Diffie-Hellman parameter for DHE ciphersuites, feat(router): read list of preferred ciphers, feat(router): enable HSTS when enforceHTTPS is set, fix(router): set_random belongs in a location block
    • @wgrrrr: chore(contrib/ec2): add m4 instance types
    • @woopstar: Installator hanged, but platform is up and running
    • @zag2art: Builder can't start after upgrade 1.5.2 -> 1.7.3

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
  • v1.7.3(Jun 15, 2015)

    Deis v1.7.3 fixes an issue where the deis/slugrunner image could be inadvertently removed, preventing deis/builder from starting up.

    v1.7.2 -> v1.7.3

    Fixes

    • 87d2ba3 builder: call ls rather than using a wildcard
    Source code(tar.gz)
    Source code(zip)
  • v1.7.2(Jun 11, 2015)

    Deis v1.7.1 fixes an issue with deis-logger publishing keys to etcd too frequently, causing high CPU load. All Deis users are encouraged to upgrade to this release.

    v1.7.1 -> v1.7.2

    Fixes

    • c73c8f7 logger: adjust publish and ttl times to seconds
    Source code(tar.gz)
    Source code(zip)
  • v1.7.1(Jun 10, 2015)

    Deis v1.7.1 fixes an issue in deisctl where refresh-units was not appending .service to the refreshed unit files, causing users to deploy older unit files when upgrading.

    v1.7.0 -> v1.7.1

    Fixes

    • e8df401 deisctl: Add extension when refreshing units
    Source code(tar.gz)
    Source code(zip)
  • v1.7.0(Jun 8, 2015)

    NOTE: Some users have reported seeing 404s when accessing running applications after upgrading to v1.7. We have been unable to reliably recreate this, and are hoping our users can provide more context to aid in debugging. As always, please upgrade non-production clusters first whenever possible, and please report any issues so that we can investigate and address them.

    The Deis project is excited to announce v1.7.0, featuring automatic host removal, smaller Docker images, and fixes for platform hardening. The leading open source PaaS is now yours to steer: read the Deis Open Roadmap and participate in release planning!

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.7.0 Summary

    New Features

    • Deis has adopted an Open Roadmap and planning process
    • Most components use alpine:3.1 as a base, making Docker images smaller
    • Optional scripts allow for automatic host removal
    • All Heroku-compatible buildpacks were updated to recent versions
    • Deis example apps have been updated to current languages and frameworks
    • Randomly-generated app names won't collide with existing ones, and the vocabulary is expanded
    • deisctl config rm removes an existing deis configuration key
    • deis-controller can be customized to appear at a subdomain other than deis.
    • deis auth:passwd accepts a --username flag to allow an admin to update a user's password
    • deis-publisher can be profiled with Go's pprof package
    • EC2 provisioning supports custom volume sizes
    • deis-publisher exposes its config as flags
    • deis-controller doesn't use deprecated HTTP X- headers
    • Azure clusters automatically create a new discovery URL during provisioning

    Improvements

    • deis-builder removes the git repo and related Docker images after deis destroy
    • deis-router won't keep hashing on an empty string
    • some etcd errors which were hidden are now properly raised at component start
    • deis logs -n won't raise an IOError when piped to head
    • deis builds:create requires an explicit Docker image tag
    • EC2 clusters use an EBS volume to store etcd data
    • docker.service now depends on its mount to exist before starting
    • better documentation for Deis backup/restore and for CoreOS upgrades
    • deisctl list no longer lists an app named deis-demo, for example
    • deis-swarm unit files are now fetched with deisctl refresh-units
    • deis config:push and config:pull validate the .env file syntax

    Under the Hood

    • updated CoreOS to 647.2.0
    • deis honors requests' environment variables such as REQUESTS_CA_BUNDLE
    • Ceph uses a lower, more appropriate number of placement groups
    • deis-logger won't query etcd for every log line
    • deis-database runs backups in the background
    • deis-builder was reorganized around Docker image best practices
    • deis-controller's webEnabled key uses a safer numeric default of 0
    • custom clock sync logic in user-data was unneeded and was removed
    • $PORT logic was unused and removed from fleet
    • deis-builder silenced some benign pipefail errors on boot
    • deis-router returns a 404 for a non-existent app

    For more details, please see CHANGELOG.md.

    What's Next

    Pluggable Storage Subsystem

    Deis uses Ceph to provide a highly-available storage subsystem for stateful control plane components. While Ceph is the right default storage subsystem, it is tricky to operate and can result in control plane instability. Ceph should be optional, especially for users on AWS with direct access to services like S3.

    See Pluggable Storage Subsystem at the Deis Roadmap for more detail.

    TTY Broker

    Today Deis cannot provide bi-directional streams needed for log tailing and interactive batch processes. By having the :ref:Controller drive a TTY Broker component, Deis can securely open WebSockets through the routing mesh.

    See TTY Broker at the Deis Roadmap for more detail.

    Scheduling and Orchestration

    Today Deis uses Fleet for scheduling. Unfortunately, Fleet does not support resource-based scheduling, which results in poor cluster utilization at scale.

    Fortunately, Deis is composable and can easily hot-swap orchestration APIs. Because the most promising container orchestration solutions are under heavy development, the Deis project is focused on releasing "technology previews".

    These technology previews will help the community try different orchestration solutions easily, report their findings and help guide the future direction of Deis.

    See Scheduling and Orchestration at the Deis Roadmap for more detail.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @ainux4mrvce: deisctl start platform stuck at [email protected] : activating/start-post, deisctl fail to start at control plane builder.service, not able to start deisctl platform , unable to set deisctl config platform sshPrivateKey, not able to install deisctl platform , fail to install deisctl
    • @aledbf: Proposal ref(*): use alpine as replacement of ubuntu-debootstrap as base image, fix(builder): remove warning when docker uses the aufs driver, fix(database): remove postgres pid error from log, feat(publisher): add pprof to enable profiling, fix(router): check if there is certificates to generate, ref(test): update go version to 1.4.2
    • @bfosberry: deis controller throws 500 with badly padded key
    • @cddr: deisctl start platform takes very long time to complete
    • @chrisgeo: Deis Database lost relations
    • @cimnine: deis config:pull and config:push fail on empty lines
    • @cleblanc87: feat(contrib): AWS cli profile param
    • @colleen1: deis login - fix "bad request" message to be user readable
    • @croemmich: Ceph Issues After Upgrade to 1.6.0
    • @djmitche: fix(nonstring-default) numeric default for webEnabled, Suggest checking out a tag when getting the source
    • @ghostbar: One container didn't got an update of the configuration
    • @glenwong: config:push with .env doesn't handle export or double quotes
    • @glogiotatidis: Discussion: app unit publishing timeouts between publisher and router, Fleet unit reports active/running but still pulls image from registry
    • @haf: deis create fails on remote non-atomically, Installing swarm is taking too long/seems to fail, 'stateless plx' option
    • @iancoffey: feat(contrib): optional graceful shutdown
    • @ineu: Cached repo is not removed from builder when app is deleted, deis commands throw errors when being piped to head, Python errors unreadable in non-english locale, deis utility warnings should go to stderr
    • @jarcas-cdmon: Error in Deis REgister
    • @jbeard4: deis builder often leaves stale node modules for nodejs Heroku buildpack
    • @josephwinston: ssh-cert.key and password on Azure, Using DNS and Azure, azure-coreos-cluster fails with "socket.error: [Errno 61] Connection refused", deisctl start platform hangs at deis-store-monitor.service: activating/start-pre
    • @Joshua-Anderson: feat(deisctl): add config rm, feat(controller): Deprecate X prefixed headers, fix(controller): force uniqueness for default app name., docs(customizing_deis): clarify usage of registrationMode
    • @jwaldrip: Feature Request: Configurable Upchecks, Feature Request: Maintenance Mode, Display Error Page when no containers are available., docker.service needs to depend on the mount.
    • @kalbasit: Not able to install deis on Travis., fix(logger): gracefully handle a nil return from etcd watch, fix(logger): avoid hitting etcd for each log line, feat(publisher): expose config as flags, fix(deis): validate the syntax of the environment file
    • @nathansamson: Deis should have a (pliggbable) deploy hooks config method per app, deis-logger stopped working
    • @ngpestelos: deis-builder fails to set keys to etcd, fix(router): return 404 for non-existing app
    • @olalonde: deisctl stop platform stops at "could not find unit: deis-cache.service", deis run doesn't output anything, git push hangs at Launching..., Fixes issue #3764. Dont throw IOError when pipe closes.
    • @r4wr: Deis on Opennebula?
    • @sbuss: fix(client): let requests read env vars, s/deis push/deis pull/
    • @scottrobertson: Idea: update config on push, Are there any docs on how Deis handles servers going down?, Low disk space results in builder restart loop
    • @sedouard: feat(contrib/azure/azure-coreos-cluster): automatically create discovery url, fix(contrib/azure/azure-coreos-cluster): extend load balancer timeout
    • @simpsora: Provide container/unit name in journal, Unable to deploy when a config entry contains a space
    • @slack: high load + logger causes excessive traffic to etcd
    • @sstarcher: Ceph recovery slow, Unable to login to Deis Controller v1.6.0
    • @szymonpk: Does deis have disk self-cleaning mechanism?, Controler couldn't connect to database after node crash
    • @wenzowski: fix(router): avoid consistently hashing on empty string

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
  • v1.6.1(May 15, 2015)

    Deis v1.6.1 fixes problems with pip install deis, repairs a potential templating error in deis-router, and improves ntpd time sync for new clusters.

    v1.6.0 -> v1.6.1

    Fixes

    • 13bd5f2 client: pin cryptography library at 0.8.2
    • 5e09bff store: fix shared etcd key defaults
    • 8349d06 router: check if there are certificates to generate
    • 5dd03e8 contrib/coreos: remove custom clock sync logic
    • 7c8c60b client: add requirements.txt to pypi distribution
    • 575f68d store: lower number of placement groups
    Source code(tar.gz)
    Source code(zip)
  • v1.6.0(May 7, 2015)

    The Deis project is excited to announce v1.6.0 with a technology preview of a Docker Swarm-based app scheduler and new deis ps:restart and deis users:list commands.

    Deis is now supported by Engine Yard!

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.6.0 Summary

    New Features

    • Docker Swarm is available for preview as an alternative to Fleet for scheduling application units
    • EC2 provisioning supports the Proxy Protocol, allowing WebSocket support for apps through an Elastic Load Balancer
    • SSL certificates in SAN format are now supported
    • deis users:list allows an admin to see all registered Deis users
    • deis ps:restart stops and starts all containers, all those of a process type, or a single container
    • deis config:push allows a --path argument to the .env file
    • deis logs accepts -n to limit the number of lines displayed
    • user registration can be enabled, disabled, or set to adminOnly
    • logging level in router can be customized
    • the number of worker processes in controller can be scaled

    Improvements

    • deis register checks for a valid controller URL before continuing
    • logger exposes its config as feature flags, and is more extensible
    • Azure provisioning creates a load-balanced HTTPS endpoint
    • EC2 provisioning shows a countdown timer and reports any CloudFormation errors
    • git push errors are handled and reported more reliably
    • deis keys:add uses SSH fingerprints to determine uniqueness
    • registry determines S3 bucket name dynamically from etcd
    • moved route53-wildcard.py script to contrib/ec2 to help with DNS setup
    • make -C controller/ postgres creates a DB container for running unit tests

    Under the Hood

    • bumped CoreOS to 633.1.0
    • updated Ceph to "Hammer" release
    • bumped confd to v0.9.0 in all components
    • builder now uses the official heroku/cedar:14 image
    • router updated to nginx 1.9 for stream module TCP support
    • added new C4 instance types to EC2 provisioning
    • added sfo1 and ams2 data centers to DigitalOcean provisioning

    For more details, please see CHANGELOG.md.

    What's Next

    New Container Schedulers

    Application containers require a resource-aware scheduler to improve cluster efficiency at scale and to alleviate issues with cluster balancing after the loss of a node. In addition to the Swarm technology preview in this release, prototyping is underway with Kubernetes and Mesos.

    Deis will default to using fleet for both control plane and data plane scheduling for the foreseeable future.

    Improved Test Infrastructure

    We need to speed up test suites and increase test coverage to include operational aspects such as upgrades and HA. Hard work behind the scenes and invaluable community support are steadily improving the Deis test infrastructure.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @ainux4mrvce: deisctl install platform
    • @aledbf: fix(test): obtain logs from deis-registry, ref(router): update confd to 0.90, feat(router): nginx 1.9.0. Remove third party tcp module, fix(store): change template to return ip address instead of :6789, fix(store): install lsb-release package
    • @ashaffer: Affinity arg is not working correctly
    • @azurewraith: enforceHTTPS=true causes client side issues
    • @babarinde: Deis controller Crashing, Deis domains:remove removing all domains, Deis application access and error logs not showing in v1.5, fix(controller) : remove domain
    • @bastilian: deisctl install platform hangs when < 3 nodes
    • @Blystad: deis-router error_log should have etcd configurable error level, fix(router): Unify timeout values, feat(router): customize error_log level via etcd
    • @chrisgeo: Azure: Investigate Router "[emerg] 16#0: bind() to 0.0.0.0:2222 failed (98: Address already in use)", Exception in logs on store-volume startup
    • @cleblanc87: Add profile parameter to provision-ec2-cluster.sh
    • @crigor: docs(troubleshooting_deis): use private key on ssh -i
    • @croemmich: Request: no downtime for apps during Deis platform upgrade, docs(contrib): add link to Docker S3 Cleaner
    • @daanemanz: chore(contrib/ec2): introducing c4 instance types
    • @davidcelis: Deis no longer produces app logs after an in-place upgrade
    • @davidlmorton: Expose nginx 'gunzip' configuration via etcd key (for Deis Router)
    • @dshafik: fix(client): Fix spacing of releases list
    • @econnell: bug(contrib): check for cloudfront errors on stack creation
    • @ecylmz: docs(managing_deis): add upgrade Deis clients for in-place upgrade
    • @eMxyzptlk: refactor(publisher): Refactor the publisher to be more idiomatic, The builder is leaving behind files.
    • @FreakinaBox: is running without wildcard sub domain possible?, Feature request: customize controller host name
    • @fretboarder: deis pull from local/private docker registry fails
    • @glogiotatidis: Apps built on Docker 1.6 -- Cannot deis pull: Invalid image ID, Cannot deploy, registry timeout, Add http check in addition to the port open check
    • @haf: Q: safe way to re-run cloud-init on existing machine?, config:set k=v with self-signed certs looks ugly, Errors from platform, Deis store - misc errors from prod, deis ps:scale cmd=3 spawns all on same node, motd error in my log, Pushing large app crashes host / platform
    • @hivearts: 'deis logs' not catching all app logs from docker containers
    • @ineu: masterLock and updating logic, CoreOS update docs are inexact, Add deis whoami to the help screen., deis:perms is not working in fresh installation, SSL is broken after upgrade to 1.5.1
    • @jannispl: deis-logger log drain format, deis-publisher should be less verbose -- add log_level setting
    • @johanneswuerbach: WebSockets on EC2, chore(router): update nginx to 1.8
    • @joshrtay: Minimum install of deis consumes a lot of disk space
    • @Joshua-Anderson: feat(Makefile): Add a command to start a local postgresql container for running unit tests, feat(controller): add a option to limit the number of log lines, feat(controller): Allow adminOnly registration, feat(controller): add users:list endpoint, feat(client): check controller before attempting to register. Fixes #3224
    • @jwaldrip: Registry Should be URL based, not IP, ec2: Consider using EBS volume for etcd, Feature Request: tail output of deis run, Cannot get application SSL to function, Error with deis certs:remove, Client warning of wrong version with latest cluster, Unable to register with https, deis run is not attaching stdin
    • @kingdonb: deis domains:add does not work and other problems "Welcome to nginx!"
    • @krancour: Proposal: Make Deis compatible with large-scale, production cluster architecture, get_image script doesn't work properly when dependent upon remote etcd, bug(router): remote etcd hosts not properly configurable, Clarification: how scalable is deis-registry?, bug(deisctl): are some services started twice?, documentation(registry): dependency on certain etcd keys is undocumented, Request: do not store domains in etcd:/deis/domains, Request: do not store user keys in etcd:/deis/builder/users, fix(registry): retrieve bucket name from etcd, docs(logger): change incorrect ref to db component
    • @nathansamson: Non existing app returns http 200, After upgrading to 1.5.1 deis uses lot more resources, Application SSL is not working when using multiple certs, Deis Builder resets key after upgrade / restart
    • @ngpestelos: Unable to push a new app in vagrant, HOST_IPADDR: parameter null or not set, deis-database: create_bucket failed after upgrading platform, deis-store-metadata won't start (missing ceph-mds), logs.papertrailapp.com drain type is not implemented, Unable to login to controller after upgrading to 1.6.0-dev, Unable to build 1.6.0-dev
    • @olalonde: /usr/bin/dock cannot allocate memory
    • @onbjerg: Post http://*:8000/v1/hooks/build: EOF, /home/git/project.git/hooks/pre-receive: No such file or directory, feat(client): add optional path to config:push
    • @payomdousti: Apache Aurora Support
    • @pdhar-tibco: deisctl start platform stuck at [email protected]: activating/start-post, INFO client.go:291: Failed getting response from http://localhost:4001/: unexpected EOF, fleet.service not starting on virtual box Non Vagrant Deis installation, Not able to run Deis::etcd on Amazon EC2, Error: 501: All the given peers are not reachable (Tried to connect to each peer twice and failed) [0]
    • @pmelmon: fix(controller) : fix regex for deis limits
    • @raphaelluchini: deis config:set numbers as string error
    • @rogerleite: deisctl tries to destroy app named "registry" when uninstalling platform
    • @sedouard: feat(contrib/azure/azure-coreos-cluster): add an https enddpoint on c… …reation, fix('contrib/azure/azure-coreos-cluster'): make this not found error more user friendly
    • @simpsora: Deploying app hangs at "Launching..."
    • @sitya: Deis elements should use etcd2's permission resources
    • @szymonpk: all routers stopped responding, can't execute apps:run
    • @tiaz: fix(contrib/ec2): improve timeout handling
    • @wenzowski: upgrade-fleet-091.service does not run after reboot
    • @zxcvbn97: Deis installation fails at [email protected]

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
  • v1.5.2(Apr 22, 2015)

    Deis v1.5.2 fixes SSL problems, reverts to confd polling to reduce server load, allows deletion of certificates with wildcard domains, and repairs deis domains:remove to delete only the requested domain.

    v1.5.1 -> v1.5.2

    Fixes

    • a4bf040 router: include deis.conf if no match with an SSL cert
    • 1df8eea controller: allow "*" wildcard in cert REST URLs
    • 7f6099c controller: return the correct domain from get_object
    • 02b78a2 router: write out only if cert matches the path
    • 8e960ca (all): use "confd --interval 5" instead of "--watch"
    Source code(tar.gz)
    Source code(zip)
  • v1.5.1(Apr 12, 2015)

  • v1.5.0(Apr 8, 2015)

    The Deis project is stoked to announce v1.5.0, with application SSL support, a platform-wide log drain, the ability to use buildpacks from private repositories, and more.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.5.0 Summary

    New Features

    Improvements

    • our test infrastructure now deploys on EC2, providing test functionality to EC2 changes
    • the integration tests can now run in parallel on https://ci.deis.io
    • the database now commences a recovery if it is started with stale data
    • cleaned up some errors in the builder
    • the client now properly reads the response from deis auth:cancel
    • the EC2 contrib scripts now loop until all instances have passed their health checks
    • CORS whitelisted headers have been updated
    • btrfs has been replaced with overlayfs in the latest version of CoreOS
    • the controller now ignores etcd "key missing" errors when deleting resources

    Under the Hood

    • bumped CoreOS to 607.0.0
    • bumped Docker to 1.5.0
    • bumped confd to v0.8.0 in components to use the new --watch flag
    • bumped heroku-buildpack-ruby to v134
    • bumped fleet to v0.9.2
    • bumped python requests lib to 2.5.1
    • bumped gunicorn to 19.3.0
    • bumped python-dateutil to 2.4.1
    • bumped Sphinx to 1.3.1
    • bumped Django to 1.6.11 security release

    For more details, please see CHANGELOG.md.

    What's Next

    Improved Test Infrastructure

    We need to speed up test suites, eliminate the PR build queue, and increase test coverage to include operational aspects such as upgrades and HA. Hard work behind the scenes and invaluable community support are steadily improving the Deis test infrastructure.

    New Container Scheduler

    Application containers require a resource-aware scheduler to improve cluster efficiency at scale and to alleviate issues with cluster balancing after the loss of a node. Prototyping is well underway with Swarm and Kubernetes.

    Deis will continue to support fleet for both control plane and data plane scheduling for the foreseeable future.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @a-saad: Command 'run' fails when using a non-standard SSH port, feat(client): Add multiple profile support to the client
    • @aledbf: bug(controller): If is not possible to access etcd it should fail with an error, Proposal ref(builder): do not build slugbuilder and slugrunner locally, bug(test): during the test if the user app is stopped it continues running, Proposal chore(scripts): use shellcheck to verify shell scripts, Proposal feat(controller): allow deis pull from deis-registry, Proposal feat(controller): add fine-grain scheduling policy, bug(database): wal-e rewrote backup, Proposal ref(database): remove data container, bug(deisctl): list should not show apps with the pattern name ^deis-*, Proposal feat(cli): check the specified url before any command, Proposal ref(store): make ceph optional if the node is running in aws or azure, fix(publisher): use TTL in services application etcd directories, Proposal ref(Makefile): remove verbose golang compilation flag, fix(builder): return error message as string, feat(controller): disable swap usage if there is a memory limit, feat(test): remove hardcoded names. Extract journal logs from each app, feat(cloud-init): temporal fix for ntpd error and clock skew, Proposal ref(store): remove apache2 from ceph gateway, feat(setup-node.sh): remove user intervention setting up new nodes, feat(publisher): remove application when is stopped, feat(makefile): check that generated go binaries are statically linked, fix(router): allow customization of connection limits, fix(store): abort build in case of any error
    • @apps4u: multi tenancy proposal
    • @azurewraith: deis tags per process type, deis limits:set not persistent after upgrade
    • @chrisgeo: Azure Deployment Script Error: "WindowsAzureMissingResourceError"
    • @CptJason: Error response from daemon: No such container: deis-logspout
    • @croemmich: (builder) Can't set task name /dev/mapper/docker-202:25-3667816-pool, feat(router): set additional X-Forwarded headers
    • @daanemanz: feat(contrib/ec2/gen-json.py): split private and public subnets
    • @diddeb: Private key file is encrypted
    • @dylanz: Orphaned bridge interfaces w/ Docker, Customizing Controller domain, ELB healthchecks failing, Gateway & Builder restarts: All the given peers are not reachable, 503's from nginx
    • @elepedus: Docs: revise deisctl installation instructions
    • @gahissy: Domain name validation: w3.domain.com
    • @ghostbar: Save into a different remote name when deis remote already exists
    • @glogiotatidis: Controller Web: NoReverseMatch: u'rest_framework' is not a registered namespace, Controller: Domain remove, removes always the latest domain, fix(docs): Fix heroku-buildpack-php url, docs(contrib): Add deis-backup-service, fix(client): Older dates are incorrectly parsed as today and yesterday., fix(docs): Starting store-gateway needs @1.
    • @gvilarino: bug(services) deis apps:destroy doesn't delete root directory, database silently failing, killing controller, fix(azure): add support for Azure affinity groups
    • @haf: Failed retrieving config from controller (nodejs), Consider adding mono sample, How to handle large images?, Deis detects albacore as ruby app, Different behaviour between plain docker and git+Dockerfile, Deis cmd-line util: using SSL for self-signed certs --verify-ssl=false for all, Router: Serve content on example.com?, Security: open port for PostgreSQL with default script, Can't start a failed unit easily, Error from Etcd on full disk (crash and burn-mode), Docs on bootstrapping clusters?, Docs on using Deis to locally develop dockerfiles?, How to interact with the storage layer?, Can I extract time-series data easily from the platform?, Docs on etcd interaction?, How do I deploy a "resource" in 12-FA vocab?, Update docs' debugging of ceph in vagrant, fixes #3221 - service file surviving hard resets
    • @hellojustin: deis-store-* stuck in auto-restart loop after EC2 AutoScaling (Deis 1.3.0)
    • @hhff: Best Practices for Staging Environment
    • @ianblenke: PV clock drift causes more ceph havok, Unresponsive CoreOS 607 instance, Spontaneous kernel reboot, btrfs panics on 557.2.0, Submodules support without .git, Request: deis auth:passwd takes --user argument for admins to change user passwords, ssh key issue when using travis-ci/dpl deis deploy
    • @ineu: deis run should escape commands, deis run: Authentication failed, login and register hangs, ref(security): REJECT target uses port-unreachable
    • @joshmackey: If buildpack crashes, deis-builder won't accept any new pushes.
    • @Joshua-Anderson: deisctl not installing cache, fix(controller): Update CORS whitelisted request headers.
    • @jwaldrip: Unable to Delete Application
    • @kgk: change domain name and gateway fails to restart
    • @klaussilveira: Add command to rebuild app
    • @krancour: docs(logger): change incorrect ref to db component
    • @lorieri: naxsi rules included twice
    • @mikkoc: adding VMs to GCE cluster
    • @nathansamson: Deis builder should do best effort to keep git checkout, Deis limits isn't as forgiving as it could be
    • @Natsuke: deis-store-daemon: auto-restart, Builder: waiting for confd
    • @ngerakines: Setting a configuration value prevents further application pushes
    • @ngpestelos: deis-builder: git repositories persistence, chore(Makefile): bump dev-registry to use 0.9.1
    • @olalonde: Follow logs with deis logs?, 'Container type {} does not exist in application'.format(container_type)), Deis: minimal installation to reduce AWS cost, Docs: comparison with Flynn?, EC2 install: what are the volumes used for?, "Convenience DNS" to SSH into CoreOS cluster?, "failed retrieving config from controller" when pushing new Node.js project, Failed getting response from http://127.0.0.1:4001/: ssh: rejected: connect failed (Connection refused), ec2 setup cluster error: ImportError: No module named yaml, Question: going from docker-compose (fig) to deis?
    • @onbjerg: Cannot register (controller not found), Installing Deis on DigitalOcean prompts password
    • @phspagiari: feat(controller): Adding LDAP/AD auth support, Docs: Missing note for Vagrant users
    • @PierreKircher: proposal renaming of the clients, fix(contrib): preseed all images
    • @pjvds: feat(controller): add deis ps:stop command
    • @rjocoleman: Proposal: Platform-wide log drain
    • @romansergey: fix(database): Commence recovery if database is started with stale data container
    • @rvaralda: feat(builder): add ssh key variable to support private repositories, feat(deis client): add ssl-verify parameter to deis register command
    • @sitya: Container cannot start if etcd does not listen on 127.0.0.1 address
    • @wenzowski: should ssl endpoint docs explain how to get a signed cert?, Deis apps:destroy does not remove the git repo with the same name, redirect loop when enforceHTTPS is enabled on 1.4.1, feat(router): add optional query string affinity support, feat(docs): gcutil is deprecated; convert all calls to gcloud compute, feat(router): avoid regex-based taxing rewrites, fix(router) enforce HTTPS correctly when not behind an elb, fix(docker): wait for drive formatting to complete before mounting
    • @zyxia: All the given peers are not reachable (Tried to connect to each peer twice and failed)

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
  • v1.4.1(Mar 6, 2015)

  • v1.4.0(Mar 3, 2015)

    The Deis project is proud to announce v1.4.0, with community-driven support for provisioning on Microsoft Azure, improvements to AWS provisioning, and a scalable Ceph store-gateway.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.4.0 Summary

    New Features

    • You can now provision Deis on Azure! - #2893
    • AWS provisioning scripts support internal Elastic Load Balancers - #3074
    • New AWS clusters use SSD Elastic Block Storage by default - #3065
    • Deis sends SIGTERM to shut down application processes gracefully - #3091
    • builder honors proxy settings in /etc/environment - #2825
    • logspout accepts custom date/time formats - #3037
    • router now logs http_host, upstream and request times - #2869
    • router allows optional HTTPS redirect - #3075
    • store-gateway can be scaled with deisctl scale - #2929
    • Any scalable component can be started or stopped with deisctl start|stop component@ - #3106
    • New documentation added about disk usage - #3021
    • New links added to Deis community projects! - #3114

    Improvements

    • builder properly escapes backticks in environment variables - #3129
    • builder lets Docker-in-Docker choose its storage driver - #3039
    • controller queries fleet directly for app container state -#2993
    • controller removes timed-out fleet units from deis run - #3127
    • controller kills processes removed from a Procfile - #3068
    • deis domains has improved validation per RFC 1123 - #2991
    • deisctl journal|status are more helpful about global units - #3119
    • router disables SSLv3 (ref: CVE-2014-3566) if SSL is enabled - #3136

    Under the Hood

    • CoreOS updated to 557.2.0 stable - #3048
    • go updated to 1.4.1+ - #3018
    • builder updated gradle and play buildpacks - #2989
    • controller updated djangorestframework to 3.0.5 - #3061
    • controller updated gunicorn to 19.2.1 - #3024
    • controller updated PostgreSQL driver psycopg2 to 2.6 - #3050
    • deisctl updated vendored fleet code to 0.9.0 - #3046
    • registry updated docker-registry code to v0.9.1 - #3109

    For more details, please see CHANGELOG.md.

    What's Next

    Application SSL Support

    Thanks to community discussion and effort, work on application SSL support has begun. What remains is an agreement on the formal specification following Heroku and an updated implementation. Once merged, users will be able to install custom private keys and SSL certificates to expose HTTPS applications using the Deis router.

    Improved Test Infrastructure

    We need to speed up test suites, eliminate the PR build queue, and increase test coverage to include operational aspects such as upgrades and HA. Hard work behind the scenes and invaluable community support are steadily improving the Deis test infrastructure.

    New Container Scheduler

    Application containers require a resource-aware scheduler to improve cluster efficiency at scale and to alleviate issues with cluster balancing after the loss of a node. Prototyping is well underway with Swarm and Kubernetes.

    Deis will continue to support fleet for both control plane and data plane scheduling for the foreseeable future.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @achannarasappa: Invalid registry endpoint error
    • @aledbf: Error in upgrading-deis.rst, question(builder): the published image uses the same ssh keys?, bug(go): some binaries are not static, fix(go): go 1.4 static binaries, docs(contrib): add link to new community project, feat(cloud-init): check if deisctl does not exists before install it
    • @anoopknayak: Customized deis router times out at times, Deis logs not consistent
    • @apps4u: unable to provision AWS ec2 , can not start
    • @ashaffer: List environment variables in alphabetical order, Provide a way to install packages when using the buildpack workflow
    • @Blystad: Proposal: Increase SSL Security in deis-router
    • @cray0000: Out of disk space on machine running deis-builder
    • @croemmich: builder - wrong filesystem?
    • @daemonza: Logout REST api call for the controller feature request
    • @dorkusprime: Getting inconsistent 403 errors from 'deis domains'
    • @glogiotatidis: Deis should check if container's port is accepting connections before adding it to the pool, deis run cannot handle large output, Need a way to stop one-off stale commands
    • @gpolyn: Failed to parse: proxyip:port at 'Register User' step (with Vagrant)
    • @grengojbo: Deis builder is not start
    • @gvilarino: (azure) builder doesn't start
    • @ianblenke: Deis cannot build git submodules , New Dockerfile+Procfile behavior broken, 501: All the given peers are not reachable (Tried to connect to each peer twice and failed) [0]
    • @ineu: Proposal: Bind deis containers to internal IPs, Questions on increase-nf_conntrack-connections.service, "Multipack app" cached?, deis-builder doesn't honor registry protocol, Vagrant problem: direct box file path
    • @jasoncox: Consider datetime format to ISO8601
    • @johanneswuerbach: CI: Docker networking issue?, feat(router): Removed X-Deis-Upstream, feat(deisctl): start / stop all installed units, feat(store): Scalable store-gateway, chore(controller): No sudo for deis, chore(builder): Updated gradle and play buildpack, feat(builder): Try shallow cloning buildpack repos
    • @joshmackey: NPM lock issue.
    • @jwarzech: Installing deis client on OSX 10.7.5
    • @karlo57: fix(publisher): remove unnecessary BUILD_IMAGE variable from Makefile
    • @kinessscu: deis-builder: server.go:110 HTTP Error: statusCode=500 Invalid registry endpoint
    • @lorieri: Update README.md, feat(builder+docker+user-data): proxy settings, feat(router) nginx status; log http_host, upstream and request times
    • @mhahn: Add root domain to an application, a way to pull configs into another application, feat(deis/config): remove "===" when listing configs with --oneline
    • @mvanholsteijn: deis pull fails with No Tag Found
    • @nekrox: How can isolate Control Plane and Router Mesh
    • @ngpestelos: unable to start deis-builder , chore(builder, logger, logspout): remove unused references to BUILD_IMAGE
    • @phspagiari: Proposal: LDAP/AD auth on controller, Problems with Deis in vagrant installation
    • @rjocoleman: Proposal: deis cli discrete git remote command, Proposal: Self updating Deis CLI
    • @simpsora: Unable to start arbitrary Procfile entries
    • @theaboutbox: docs(logspout): Fix remote syslog example
    • @timfpark: Builder is quitting after pushing image to private registry, Proxying web request causes timeout when target is another Deis application, Azure: Client hangs on "Launching app..." but app is successfully launched
    • @wenzowski: Rolling restarts with deis ps:restart, SIGTERM on exceeded memory quota, pass env vars to buildpack, feat(store-admin): add gnu watch, builder re-generating SSH keys when jumping hosts, Nginx 5-tuple microflow affinity load balancing to enable arbitrary TCP, Graceful shutdown with SIGTERM, feat(scheduler): graceful shutdown with SIGTERM, fix(router): disable SSLv3 CVE-2014-3566
    • @withinboredom: Failure in deis registry
    • @yekeqiang: command fails: deisctl config platform set sshPrivateKey=~/.ssh/deis

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
  • v1.3.1(Feb 5, 2015)

  • v1.3.0(Feb 3, 2015)

    The Deis project is proud to announce v1.3.0, which includes more ways to debug your cluster, code quality improvements to the controller and security enhancements to the builder.

    Important: This release includes a CoreOS update for the CVE-2015-0235 glibc fix. All Deis users are encouraged to upgrade their host machines to CoreOS 522.6.0 or later.

    If you are coming from an earlier version of Deis, please read the "Upgrading Deis" documentation for details.

    What is Deis?

    Deis is an open source PaaS that makes it easy to deploy and manage applications on your own servers. Deis builds upon Docker and CoreOS to provide a lightweight PaaS with a Heroku-inspired workflow.

    1.3.0 Summary

    New Features

    • The optional deis-store-admin service helps with Ceph troubleshooting
    • builder disallows simultaneous git push on one app
    • builder runs application builds as a non-root user
    • controller REST views are updated and simplified
    • controller consistently returns errors as JSON
    • controller consistently returns 403 for permission errors

    Improvements

    • Vagrant VMs default to 2GB, since less can lead to docker mem alloc errors
    • Dockerfiles include ENV DEIS_RELEASE to prevent overlap in docker images
    • etcd discovery URL uses the right key on GCE
    • a Procfile can override a buildpack's default_process_types
    • controller tracks create and start separately for better error handling
    • controller validates uploaded key material
    • logger builds with godep, like other Go components
    • router has docs and deisctl fixes for installing SSL

    Under the Hood

    For more details, please see CHANGELOG.md.

    What's Next

    Application SSL Support

    Thanks to community discussion and the efforts of @jparkerCAA in pull request 2570, application SSL support should land in Deis soon. What remains is an agreement on the formal specification following Heroku and an updated implementation. Once merged, users will be able to install custom private keys and SSL certificates to expose HTTPS applications using the Deis router.

    Improved Test Infrastructure

    We are in the process of planning another round of improvements to our test infrastructure. The goals are to speed our test suites, eliminate the build queue and increase coverage to include operational aspects like upgrades and HA.

    New Container Scheduler

    We are evaluating a new, resource-aware scheduler for application containers in the data plane to improve cluster efficiency at scale and to alleviate issues with cluster balancing after the loss of a node. Prototyping is ongoing with Mesos, Kubernetes, and Docker Swarm.

    Deis will continue to support Fleet for both control plane and data plane scheduling for the foreseeable future.

    Community Shout-Outs

    We want to thank the following Deis community members for creating GitHub issues, providing support to others, and working on various Deis branches:

    • @aledbf: user-data error in service debug-etcd.service, Proposal: publish master version every night to docker, Proposal: allow custom log level in components, REST errors question, feat(builder): disable simultaneous push in the same repository, fix(security): increase max conntrack connections, fix(builder): exit if an error occur compiling go, fix(database): update wal-e because error in python-daemon, feat(docker): add env DEIS_RELEASE, feat(slugbuilder): update nodejs buildpack to v64 (yoga release)
    • @babarinde: Push Failure after Restoration of from Backup, CoreOS nodes not connected on GCE, fix (contrib/gce/create-gce-user-data): replace discovery_url with discovery
    • @bfosberry: processes removed from Profile cannot be stopped, builder error - unexpected eof in archive
    • @Blystad: request: Custom 502 error page on per-application basis, ref(builder): Remove use of root in gitreceive, feat(controller): add hostname exposing to units, feat(contrib/ec2): Set ELB timeout to 1200s
    • @daemonza: Cannot pull image - tag not found
    • @glogiotatidis: s3cmd fails to copy registry, docs(managing_deis): Typo fix., feat(client): Add controller to whoami command.
    • @ianblenke: deis-controller generated fleet units should [X-Fleet] Conflicts with the others of the same app
    • @iansmith: surprising effect of changing from go-buildpack to Dockerfile
    • @jannispl: cluster is working, but filling logs with confd errors
    • @jetole: deis blocks domain creation under improper circumstances
    • @jgmize: docs(system-requirements): Fix broken link
    • @Jim-Holmstroem: fix(contrib/coreos) etdcd_request_timeout value type
    • @johanneswuerbach: aws: consider reverting to instance storage
    • @karlo57: Waiting for ceph gateway
    • @marzolfb: All the given peers are not reachable
    • @mcano: feat(client): add flag to disable SSL certificate verification
    • @mgartner: AWS instances being terminated by autoscaling group, ceph-osd using utilizing 20-50% CPU continuously, AWS autoscaler terminated then restarted node - how to get cluster back to normal?
    • @mhahn: config value escaping
    • @mvgijssel: Using deployment keys for private repositories with deis builder
    • @nagliyvred: Unable to add a node to a cluster or restart an existing one (GCE)
    • @nathansamson: Feature: Allow System & Application monitoring based on Graphite
    • @ngpestelos: Key not found (/deis/logs), etcd: inconsistent value for /deis/registry/host, builder: unable to restart builder if cedarish fails to download, deis-controller too many clients, How to handle a host running out of space, git push is rejected after upgrading builder, fix(database): increases max_connections to 250, chore(controller): Fix typo on README.md
    • @prateek121: Deis Registration failed
    • @rjocoleman: Proposal: Self updating Deis CLI
    • @romansergey: fix(controller): adds migration to get rid of dockerfile's u'False' valu...
    • @SkyWriter: Adding process to the Procfile does not create it
    • @suquant: Database service recognition failed (boto timeout)
    • @synaptics: Custom HTTP request headers not being passed in to web app (v1.2.1)
    • @theaboutbox: docs(ec2): Document update_ec2_cluster.sh
    • @timfpark: No Procfile -> obscure failure error
    • @withinboredom: Unable to perform deis push, deis builder service hung in activating/start-post (failure retrieving image), Uninstall Platform leaves [email protected] hanging around, Deis hangs in launching state though launced successfully, Unable to register
    • @xishuixixia: Chinese Version of Deis Documentation

    The Deis community continues to grow, and Deis wouldn't be here without you! If we slighted your contribution to this release, please let us know so we can update.

    How can you help?

    Learn about other ways to get involved on our website.

    Source code(tar.gz)
    Source code(zip)
Owner
Deis
Making Kubernetes easy to use
Deis
A Regex based linter tool that works for any language and works exclusively with custom linting rules.

renag Documentation Available Here Short for Regex (re) Nag (like "one who complains"). Now also PEGs (Parsing Expression Grammars) compatible with py

Ryan Peach 12 Oct 20, 2022
A class to draw curves expressed as L-System production rules

A class to draw curves expressed as L-System production rules

Juna Salviati 6 Sep 9, 2022
Meera 2 May 12, 2022
Python script to autodetect a base set of swiftlint rules.

swiftlint-autodetect Python script to autodetect a base set of swiftlint rules. Installation brew install pipx

Jonathan Wight 24 Sep 20, 2022
Bazel rules to install Python dependencies with Poetry

rules_python_poetry Bazel rules to install Python dependencies from a Poetry project. Works with native Python rules for Bazel. Getting started Add th

Martin Liu 7 Dec 15, 2021
This library attempts to abstract the handling of Sigma rules in Python

This library attempts to abstract the handling of Sigma rules in Python. The rules are parsed using a schema defined with pydantic, and can be easily loaded from YAML files into a structured Python object.

Caleb Stewart 44 Oct 29, 2022
An example using debezium and mysql with docker-compose

debezium-mysql An example using debezium and mysql with docker-compose The docker compose starts the Zookeeper, Kafka, Mysql and Debezium Connect. Aft

Horácio Dias Baptista Neto 4 May 21, 2022
EFB Docker image with efb-telegram-master and efb-wechat-slave

efb-wechat-docker EFB Docker image with efb-telegram-master and efb-wechat-slave Features Container run by non-root user. Support add environment vari

Haukeng 1 Nov 10, 2022
A data engineering project with Kafka, Spark Streaming, dbt, Docker, Airflow, Terraform, GCP and much more!

Streamify A data pipeline with Kafka, Spark Streaming, dbt, Docker, Airflow, Terraform, GCP and much more! Description Objective The project will stre

Ankur Chavda 206 Dec 30, 2022
The docker-based Open edX distribution designed for peace of mind

Tutor: the docker-based Open edX distribution designed for peace of mind Tutor is a docker-based Open edX distribution, both for production and local

Overhang.IO 696 Dec 31, 2022
pydock - Docker-based environment manager for Python

pydock - Docker-based environment manager for Python ⚠️ pydock is still in beta mode, and very unstable. It is not recommended for anything serious. p

Alejandro Piad 16 Sep 18, 2021
Project repository of Apache Airflow, deployed on Docker in Amazon EC2 via GitLab.

Airflow on Docker in EC2 + GitLab's CI/CD Personal project for simple data pipeline using Airflow. Airflow will be installed inside Docker container,

Ammar Chalifah 13 Nov 29, 2022
Like Docker, but for Squeak. You know, for kids.

Squeaker Like Docker, but for Smalltalk images. You know, for kids. It's a small program that helps in automated derivation of configured Smalltalk im

Tony Garnock-Jones 14 Sep 11, 2022
This is a Docker-based pipeline for preparing sextractor-ready multiwavelength images

Pipeline for creating NB422-detected (ODI) catalog The repository contains a Docker-based pipeline for preprocessing observational data. The pipeline

null 1 Sep 1, 2022
SQL centered, docker process running game

REQUIREMENTS Linux Docker Python/bash set up image "docker build -t game ." create db container "run my_whatever/game_docker/pdb create" # creating po

null 1 Jan 11, 2022
Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends.

Quiz Application Its a simple and fun to use application. You can make your own quizes and send the lik of the quiz to your friends. When they would a

Atharva Parkhe 1 Feb 23, 2022
Purge your likes and wall comments from VKontakte. Set yourself free from your digital footprint.

vk_liberator Regain liberty in the cruel social media world. This program assists you with purging your metadata from Russian social network VKontakte

null 20 Jun 11, 2021
🗽 Like yarn outdated/upgrade, but for pip. Upgrade all your pip packages and automate your Python Dependency Management.

pipupgrade The missing command for pip Table of Contents Features Quick Start Usage Basic Usage Docker Environment Variables FAQ License Features Upda

Achilles Rasquinha 529 Dec 31, 2022
Add your recently blog and douban states in your GitHub Profile

Add your recently blog and douban states in your GitHub Profile

Bingjie Yan 4 Dec 12, 2022