Cloud Foundry Support for Canaries


Shane Gannon
 

I've evaluating Cloud Foundry to determine whether it supports Canary Releases for my apps.

https://martinfowler.com/bliki/CanaryRelease.html

So far I've found references to BOSH supporting canaries. But this appears to be an internal mechanism that cloud foundry uses when re-deploying its own servers.

I've also had a look at

https://github.com/cloudfoundry-incubator/cf_canaries

but this appears to be for testing the infrastructure / overall system. e.g. Canaries to warn about memory/cpu/disk/network etc usage.

Are there any common approaches to supporting Canary Deploys with Cloud Foundry? I imagine it would need to relate to the GoRouter somehow.

The closest I've come to finding a solution is the documentation from Cloud Foundry on Blue-Green Deployments.

https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html

But this technic would not let me control the percentage of, or which, traffic is routed to the Canary.


Christian Brinker
 

Hi Shane,

please do not mix up BOSH with CF. With BOSH you deploy virtual machines.
It is used for example to deploy Cloud Foundry. The canaries support here
is for example used for changing the Cloud Foundry platform deployment.
Your apps pushed to Cloud Foundry have no direct connection to it.
https://github.com/cloudfoundry-incubator/cf_canaries#instances-canary would
be more the canary solution you need. I am not that involved with that
project. So I am not sure it works. This should be answered by one other
here out of the community. But there are also exist other approaches like
https://github.com/cloudfoundry/diegocanaryapp and a discussion about
zero-downtime deployments was there some time ago. But I did not follow the
actual outcome.

If you want a more active influence to the routing, you can use routing
services. See https://docs.cloudfoundry.org/services/route-services.html for
it. There is also an example limiting the rate of traffic to an
application. It is not exactly your problem, but may present you some hints
for your problem.

Greets
Christian

On Fri, 19 May 2017 at 12:10 Shane Gannon <sgannon200(a)gmail.com> wrote:

I've evaluating Cloud Foundry to determine whether it supports Canary
Releases for my apps.

https://martinfowler.com/bliki/CanaryRelease.html

So far I've found references to BOSH supporting canaries. But this appears
to be an internal mechanism that cloud foundry uses when re-deploying its
own servers.

I've also had a look at

https://github.com/cloudfoundry-incubator/cf_canaries

but this appears to be for testing the infrastructure / overall system.
e.g. Canaries to warn about memory/cpu/disk/network etc usage.

Are there any common approaches to supporting Canary Deploys with Cloud
Foundry? I imagine it would need to relate to the GoRouter somehow.

The closest I've come to finding a solution is the documentation from
Cloud Foundry on Blue-Green Deployments.

https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html

But this technic would not let me control the percentage of, or which,
traffic is routed to the Canary.
--
E-Mail: cbrinker(a)evoila.de

evoila GmbH
Wilhelm-Theodor-Römheld-Str. 34
55130 Mainz
Germany

Geschäftsführer: Johannes Hiemer

Amtsgericht Mainz HRB 42719

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Mail ist nicht gestattet.

This e-mail may contain confidential and/or privileged information. If You
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorised copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.


Sean Keery <skeery@...>
 

A simple timed canary strategy could use something like
https://github.com/krujos/scaleover-plugin. More complex application
canary scenarios have been created with CD systems such as Jenkins or
Concourse. Finally, you could use a third party tool such as Spinnaker,
which specializes in complex application deployments.

Sean

On Fri, May 19, 2017 at 4:42 AM Christian Brinker <cbrinker(a)evoila.de>
wrote:

Hi Shane,

please do not mix up BOSH with CF. With BOSH you deploy virtual machines.
It is used for example to deploy Cloud Foundry. The canaries support here
is for example used for changing the Cloud Foundry platform deployment.
Your apps pushed to Cloud Foundry have no direct connection to it.
https://github.com/cloudfoundry-incubator/cf_canaries#instances-canary would
be more the canary solution you need. I am not that involved with that
project. So I am not sure it works. This should be answered by one other
here out of the community. But there are also exist other approaches like
https://github.com/cloudfoundry/diegocanaryapp and a discussion about
zero-downtime deployments was there some time ago. But I did not follow the
actual outcome.

If you want a more active influence to the routing, you can use routing
services. See https://docs.cloudfoundry.org/services/route-services.html for
it. There is also an example limiting the rate of traffic to an
application. It is not exactly your problem, but may present you some hints
for your problem.

Greets
Christian

On Fri, 19 May 2017 at 12:10 Shane Gannon <sgannon200(a)gmail.com> wrote:

I've evaluating Cloud Foundry to determine whether it supports Canary
Releases for my apps.

https://martinfowler.com/bliki/CanaryRelease.html

So far I've found references to BOSH supporting canaries. But this
appears to be an internal mechanism that cloud foundry uses when
re-deploying its own servers.

I've also had a look at

https://github.com/cloudfoundry-incubator/cf_canaries

but this appears to be for testing the infrastructure / overall system.
e.g. Canaries to warn about memory/cpu/disk/network etc usage.

Are there any common approaches to supporting Canary Deploys with Cloud
Foundry? I imagine it would need to relate to the GoRouter somehow.

The closest I've come to finding a solution is the documentation from
Cloud Foundry on Blue-Green Deployments.

https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html

But this technic would not let me control the percentage of, or which,
traffic is routed to the Canary.
--
E-Mail: cbrinker(a)evoila.de

evoila GmbH
Wilhelm-Theodor-Römheld-Str. 34
55130 Mainz
Germany

Geschäftsführer: Johannes Hiemer

Amtsgericht Mainz HRB 42719

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Mail ist nicht gestattet.

This e-mail may contain confidential and/or privileged information. If You
are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorised copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.
--

*Sean Keery | Minister of Chaos | Pivotal Cloud Foundry Solutions*
Mobile: 970.274.1285 | skeery(a)pivotal.io
LinkedIn: @zgrinch <http://www.linkedin.com/in/zgrinch> | Twitter: @zgrinch
<https://twitter.com/zgrinch> | Github: @skibum55
<https://github.com/skibum55>


Adopt the Silicon Valley state of mind


Stephen Peggs
 

Have you read about blue green deploys?
https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html. I think
it covers the same sort of space, ensuring the development version is good
before rolling production users in to it.

On Fri, 19 May 2017 at 21:37, Sean Keery <skeery(a)pivotal.io> wrote:

A simple timed canary strategy could use something like
https://github.com/krujos/scaleover-plugin. More complex application
canary scenarios have been created with CD systems such as Jenkins or
Concourse. Finally, you could use a third party tool such as Spinnaker,
which specializes in complex application deployments.

Sean

On Fri, May 19, 2017 at 4:42 AM Christian Brinker <cbrinker(a)evoila.de>
wrote:

Hi Shane,

please do not mix up BOSH with CF. With BOSH you deploy virtual machines.
It is used for example to deploy Cloud Foundry. The canaries support here
is for example used for changing the Cloud Foundry platform deployment.
Your apps pushed to Cloud Foundry have no direct connection to it.
https://github.com/cloudfoundry-incubator/cf_canaries#instances-canary would
be more the canary solution you need. I am not that involved with that
project. So I am not sure it works. This should be answered by one other
here out of the community. But there are also exist other approaches like
https://github.com/cloudfoundry/diegocanaryapp and a discussion about
zero-downtime deployments was there some time ago. But I did not follow the
actual outcome.

If you want a more active influence to the routing, you can use routing
services. See https://docs.cloudfoundry.org/services/route-services.html for
it. There is also an example limiting the rate of traffic to an
application. It is not exactly your problem, but may present you some hints
for your problem.

Greets
Christian

On Fri, 19 May 2017 at 12:10 Shane Gannon <sgannon200(a)gmail.com> wrote:

I've evaluating Cloud Foundry to determine whether it supports Canary
Releases for my apps.

https://martinfowler.com/bliki/CanaryRelease.html

So far I've found references to BOSH supporting canaries. But this
appears to be an internal mechanism that cloud foundry uses when
re-deploying its own servers.

I've also had a look at

https://github.com/cloudfoundry-incubator/cf_canaries

but this appears to be for testing the infrastructure / overall system.
e.g. Canaries to warn about memory/cpu/disk/network etc usage.

Are there any common approaches to supporting Canary Deploys with Cloud
Foundry? I imagine it would need to relate to the GoRouter somehow.

The closest I've come to finding a solution is the documentation from
Cloud Foundry on Blue-Green Deployments.

https://docs.cloudfoundry.org/devguide/deploy-apps/blue-green.html

But this technic would not let me control the percentage of, or which,
traffic is routed to the Canary.
--
E-Mail: cbrinker(a)evoila.de

evoila GmbH
Wilhelm-Theodor-Römheld-Str. 34
55130 Mainz
Germany

Geschäftsführer: Johannes Hiemer

Amtsgericht Mainz HRB 42719

Diese E-Mail enthält vertrauliche und/oder rechtlich geschützte
Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail
irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und
vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte
Weitergabe dieser Mail ist nicht gestattet.

This e-mail may contain confidential and/or privileged information. If
You are not the intended recipient (or have received this e-mail in error)
please notify the sender immediately and destroy this e-mail. Any
unauthorised copying, disclosure or distribution of the material in this
e-mail is strictly forbidden.
--

*Sean Keery | Minister of Chaos | Pivotal Cloud Foundry Solutions*
Mobile: 970.274.1285 | skeery(a)pivotal.io
LinkedIn: @zgrinch <http://www.linkedin.com/in/zgrinch> | Twitter:
@zgrinch <https://twitter.com/zgrinch> | Github: @skibum55
<https://github.com/skibum55>


Adopt the Silicon Valley state of mind