What is Continuous Delivery?

Continuous Delivery describe a set of best practices for building, deploying and monitoring applications with the goal of providing a sustainable model for maintaining and improving an application.

Weave Cloud automates the deployment of new images to container clusters with its Deploy feature. It fills the automation void that exists between the output of your CI system (container images) and your container cluster, while version controlling each change.

One of the main features of Weave Cloud is the managing the releases of containers into a container cluster. It continuously monitors your container registry and deploys new versions where applicable. And it does this from a single convenient dashboard within Weave Cloud.

Weave Cloud Deploy

Version Controlled Cluster Configuration

The cluster configuration is automatically synchronized to a version control system. Version controlling the cluster configuration mitigates against accidental or catastrophic failure of your cluster, giving you a source of truth for what ought to be running on your cluster from which you can recover in the case of a disaster. It also improves visibility (e.g., who did what), improves reproducibility and provides a historical log of events.

Release Management Cycle

Auditing and Alerts

Managing releases in Weave Cloud increases visibility of your application by providing an audit history for your deployments and by integrating with Slack notifications for a “ChatOps” style development.

Continuous Delivery Typical Workflow

The overall goal of Weave Cloud Deploy is to automate the release of services.

A typical workflow is as follows:

  1. A developer commits changes to a branch where it is tested in a CI system like Circle CI or Jenkins
  2. Developer merges tested code into a branch and the CI system creates an artifact from that code: a Docker container image
  3. The release manager daemon detects the presence of a new image and updates configuration, committing the change to version control
  4. The cluster is automatically synchronized with the new configuration, rolling out the new image
  5. Changes are made visible to the team through chat integration

The goal of this workflow is to automate away the need for a developer to interact with an orchestrator, and to commit the resulting configuration changes to version control.

Weave Cloud provides a CLI as well as a GUI to perform manual releases and also set release policy (automating releases for all new images, locking releases etc).

Monitoring For New Images

When a service is in “automated” mode, Weave Cloud will periodically check to see whether there is a new image for that service, and if so, deploy it.

An image is considered new if it has a more recent time stamp and a different tag to the currently running image. This means images pushed to the same tag (e.g., :latest) will not be considered new, and not be deployed.

See Configuring Deploy for more information.

Monitoring for New Images

Integrating with Version Control

Whenever the Release Manager alters the configuration of a cluster it writes the changes back to version control.

The state that the Release Manager reports reflects the state of the cluster.

Monitoring for New Images

A SSH key is usually required to read and write back to the repository. Weave Cloud lets you generate a key, and if you are using Github, install the public key as a “Deploy key” for the repository. The private key does not leave your cluster.

Notifying the Team

Weave Cloud integrates with Slack. A Slack API endpoint is required for integration.

Further Reading