Release Management and 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.
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 in Weave Cloud also increases visibility of your application and it provides an audit history for your deployments and it allows you to integrate Slack notifications for “ChatOps” style development.
The overall goal of Weave Cloud Release Management is to automate the deployment of services.
A typical workflow pattern is as follows:
- A developer commits changes to a branch where it is tested in a CI system like Circle CI or Jenkins
- Developer merges tested code into a branch and the CI system creates an artifact from that code: a Docker container image
- The release manager daemon detects the presence of a new image and deploys that to an orchestrator (e.g. Kubernetes)
- The new cluster configuration is committed to version control
- 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 remember to commit their configuration changes to version control (which is a common source of accidental failure).
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).
The Release Manager reads a list of running containers from your container cluster. For each image, it queries the container registry to obtain the most recently released tag. You can then observe whether containers are running the most recent version and then update them to a specific or most recent tag.
When services are in an “automated” mode, the service will periodically check to see whether there are any new images. If there are new images, then they are deployed.
In order to access private registries, credentials may be required.
See, Configuring Deploy for more information.
Weave Cloud deploys different images. It will not re-deploy images with the same tag. Once a list of new images have been established, it alters the configuration of the cluster to deploy any new images.
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.
A version control SSH deploy key is required to write back to the repository.
Weave Cloud integrates with Slack. A Slack API endpoint is required for integration.