Skip to content

Commit

Permalink
Add initial info on canary deployments
Browse files Browse the repository at this point in the history
Adds new resource description for canary deployments and example documentation for configuring a canary.
  • Loading branch information
zackproser authored Jan 9, 2020
1 parent 89bafa3 commit 1bc62b5
Showing 1 changed file with 15 additions and 0 deletions.
15 changes: 15 additions & 0 deletions charts/k8s-service/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ The following resources will be deployed with this Helm Chart, depending on whic

- `Deployment`: The main `Deployment` controller that will manage the application container image specified in the
`containerImage` input value.
- `CanaryDeployment` An optional `Deployment` controller that will manage a [canary deployment](https://martinfowler.com/bliki/CanaryRelease.html) of the application container image specified in the `canary.containerImage` input value. This is useful for testing a new application tag, in parallel to your stable tag, prior to rolling the new tag out. Created only if you configure the `canary.containerImage` values (and set `canary.enabled = true`).
- `Service`: The `Service` resource providing a stable endpoint that can be used to address to `Pods` created by the
`Deployment` controller. Created only if you configure the `service` input (and set
`service.enabled = true`).
Expand Down Expand Up @@ -965,6 +966,20 @@ Note that certain changes will lead to a replacement of the `Deployment` resourc
`applicationName` will cause the `Deployment` resource to be deleted, and then created. This can lead to down time
because the resources are replaced in an uncontrolled fashion.

## How do I create a canary deployment?

You may optionally configure a [canary deployment](https://martinfowler.com/bliki/CanaryRelease.html) of an arbitrary tag that will run as an individual deployment behind your configured service. This is useful for ensuring a new application tag runs without issues prior to fully rolling it out.

To configure a canary deployment, set `canary.enabled = true` and define the `containerImage` values. Typically, you will want to specify the tag of your next release candidate:

```yaml
canary:
enabled: true
containerImage:
repository: nginx
tag: 1.15.9
```
Once deployed, your service will route traffic across both your stable and canary deployments, allowing you to monitor for and catch any issues early.

## How do I ensure a minimum number of Pods are available across node maintenance?

Expand Down

0 comments on commit 1bc62b5

Please sign in to comment.