Deis Workflow 2.4 Release

19 Aug 2016

The Deis Workflow team continues to ship great features every two weeks. I am starting to run out of pithy intros for these release announcements. So I'll let DEVO take it from here.

When a feature comes along, you must ship it.

Control Application Routing

Workflow 2.4 now allows developers and operators to deploy applications without making the accessible through the router component. This release introduces two new commands:

  • deis routing:enable
  • deis routing:disable

Applications that are not publicly routeable are removed from the edge-router mesh but keep the internal Kubernetes service. This is a great way to deploy applications that are part of a collection of micro services and should only be available to other applications running in the cluster. For more information, check out the Domains and Routing documentation.

Healthy Processes of All Types

Workflow 2.4 allows you to specify health checks per process type. If your application has background workers, you can now configure a specific health check for that worker. Using the 2.4 CLI, pass --type <type> to the healthchecks:set command, for example:

$ deis healthchecks:set readiness exec -- /bin/echo -n hello --type worker
=== peachy-waxworks Healthchecks

No liveness probe configured.

Initial Delay (seconds): 50
Timeout (seconds): 50
Period (seconds): 10
Success Threshold: 1
Failure Threshold: 3
Exec Probe: Command=[/bin/echo -n hello]
TCP Socket Probe: N/A

Platform Component Limits

Charts for Workflow 2.4 now include hooks for operators to set CPU and memory limits for all platform components. This release also includes a new set of dashboards which focus on CPU and Memory utilization for each Workflow component. These dashboards will help operators better understand the component resource requirements.

Give these dashboards a spin and let us know what you are seeing in the wild!

Deployments Now the Default

Workflow 2.4 now users Kubernetes Deployments to power your applications by default. We recommend that you configure your applications to use Deployments on 2.3 before upgrading to 2.4. To enabled deployments in 2.3 run deis config:set DEIS_KUBERNETES_DEPLOYMENTS=1. Otherwise, Workflow 2.4 will convert your application on first deploy.

Upgrading to Workflow 2.4

Workflow 2.3 migrated many of the platform components to use Deployments and Helm Classic "keep" annotations. This laid the foundation for zero downtime upgrades!

Workflow 2.4 is the first release that can be upgraded in place with no downtime for deployed applications. If you are not configured to use off-cluster Postgres, the Workflow API will be unavailable during the upgrade. Again, applications will continue to serve traffic uninterrupted.

Check out the upgrade instructions and enjoy Workflow 2.4.

Up Next

Our next release is scheduled for August 30th, 2016. You can check out the 2.5 milestone on each of the component repositories, or take a gander at the Workflow Roadmap.

Workflow 2.5 is shooting for application autoscaling, the ability to enforce SSL per-application, and IP whitelisting per-application.

Full Changelog for Workflow 2.4

In addition to the highlight features for this release, there are numerous bug fixes and under-the-hood cleanups. Remember that Workflow ships as a release of independent components, so not every component version was bumped to 2.4!

Builder v2.3.0 -> v2.4.1


  • e292969 *: switch to using controller-sdk-go for controller interactions (#402)


  • d340772 pod: log pod error status and message instead of pod struct
  • 0690f89 _tests: remove out of date functional tests (#406)
  • e791c1d gitreceive: change target name to Workflow

Controller v2.3.1 -> v2.4.0


  • a7cff7e models: add routable flag to Config (#934)
  • cebd736 scheduler: add scheduler tests that do not go through normal api tests (#965)
  • 2a41942 healthcheck: Add support to create healthcheck per proctype Requires workflow-cli#160
  • 3e988ea model: Add new model to store settings


  • 54f0f75 app: adjust async for better usage and to account for asyncio bug
  • 855bb59 scheduler: create application config (env secrets) outside of deploy / scale to reduce k8s thrasing
  • 996be37 mock: mock scheduler could not gracefully handle the concurrent deploy / scale
  • 7da5212 run: return a 400 if command is empty (#952)
  • c91f361 passwd: raise 400 when password is not a parameter (#850)
  • 544f492 scheduler: in scheduler::run check if pod state is an object or a string before acing on it (#957)
  • a4ee5a8 health: Add healthchecks only for routable apps or proctypes
  • 37ea65c Makefile: add deis namespace to make deploy (#969)
  • 7f19c48 scheduler: make app un-routable (#974)
  • 6cfeba0 scheduler: when user asks for limits beyond their allowance then error out faster (#975)
  • 7a152a6 scheduler: allow Deployment "in progress" to be bypassed in case of errors or timeout (#978)
  • bf82529 registry: retry pull/push/tag 3 times - should help with slow networks and slow registries (#979)


  • cc6617e add postgresql prereq


  • e0a3f02 requirements: Django REST Framework 3.4.3
  • 77dbf94 travis: cache pip in travis runs (#944)
  • b66948d requirements: requests update to 2.11.0 (#962)
  • 6e6d257 requirements: update to django-guardian 1.4.5 (#964)
  • 87a92f6 requirements: update backoff 1.3.1 (#963)
  • c6e3eb3 migrations: create a migration for various alterations that do not touch schema (#967)
  • a16aa8c requirements: Update Django REST Framework to 3.4.4 (#976)

Database v2.2.1 -> v2.2.2


  • 022f2c5 Update the postgres version

Dockerbuilder v2.3.0 -> v2.3.1


  • 31065a3 Dockerfile: update deis/base to 0.3.0

Monitoring v2.2.0 -> v2.3.0


  • 527d4dd dashboards: create dashboards for all deis components


  • 3b15224 ini: a stray quote was causing INI parsing to break
  • a21e7e4 start-grafana: Create dashboard directory when starting grafana


  • 2548941 readme: Provide a configuration section in grafana readme

Router v2.3.0 -> v2.4.0


  • 01cf487 *: Update nginx to 1.11.2
  • 571dfea router: Get the annotations from the deployment object instead of RC
  • 59e753c maintenance: Add support for maintenance mode for apps


  • 1769d2d model: Improve regex for SSL ciphers
  • e085023 routable: Use correct label key for routable
  • c00da10 model: Specify a default ssl cipher list


  • 7cbf93e readme: Clarify that routable services must expose port 80


  • 541b19b .gitignore: Update to ignore deis-router-deployment.tmp.yaml

Slugbuilder v2.3.0 -> v2.3.1


  • 815d0a7 buildpacks: update heroku-buildpack-go to v44
  • 7b34cb5 buildpacks: update heroku-buildpack-scala to v72
  • f647afe buildpacks: update php buildpack

Workflow CLI v2.3.0 -> v2.4.0


  • f37432b Jenkinsfile: send COMPONENT_REPO param to e2e job
  • dfe19e0 logging: extract logging to its own package and write tests (#166)
  • 7b4c48d cmd: add deis routing
  • 37cdb52 healthcheck: Add support for healthcheck per proctype
  • 4df89d2 maintenance: Add support for maintenance mode for apps
  • 7a9ebf4 Jenkinsfile: wipe vendor dir if bootstrap fails
  • 47def28 Makefile: add git branch and sha information to the uploaded blob
  • 2103657 *: allow configuration flag (#169)


  • 6745e75 version: move all version logic to git (#167)
  • 4f2d342 healthcheck: Don't fail if there is no healthcheck for a proctype
  • ba9d5d7 CI: don't cache latest binaries (#175)
  • 36df5d4 CI: delete artifacts when cleaning up (#179)

Workflow Documentation v2.3.0 -> v2.4.0


  • af7cf12 healthcheck: Add docs for applying healthchecks per proctype
  • d84c0a1 troubleshooting: add troubleshooting applications
  • 7477ae7 docs: add documentation for limits
  • 4ea0719 CLI: document new behavior of variable (#440)
  • c41f71e maintenance: Add docs for maintenance mode support


  • fde9a81 installing: Add configuring registry docs to doc tree
  • 4480831 applications: use admonition styling
  • d097233 user: supply a kubectl patch function to simplify registration mode setting


  • fb9db75 applications: add deis routing docs
  • 12fd1d7 registration: update registration for 2.3 behavior (#448)
  • 8d271ca upgrading: expand and clarify workflow upgrade instructions (#447)
  • 5fdf2da storage: cleanup storage docs (#454)


  • 88167c5 roadmap: update roadmap for 2.x (#417)
  • 8befc2a docs: update docs to reflect fixed issue (#455)

Posted in Workflow, Release, Announcement

triangle square circle

Did you enjoy this post?