You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Is your feature request related to a problem or unsupported use case? Please describe.
Arnold supports blue/green deployments by deploying complete stacks of services, pods, jobs, endpoints, etc. and switching the current route to the service of the new stack.
To do this, services include a deployment stamp in their name. This has raised several issues because it is not possible to use service names in the settings of another app because the name will change as soon as the service is redeployed.
Concrete cases when this is a problem:
to run FUN's dogwood.3-fun image, we use the elasticsearch cluster from the forum app. The problem was solved temporarily by retrieving dynamically the host name of elasticsearch:
This is very brittle because the connection will break if we redeploy the forum, and it can only be repaired by subsequently redeploying edxapp with a downtime >30 minutes for the forum.
the edxapp application needs to connect to the forum application which is in a separate app, both being deployed with blue/green. In order to have a stable address for the forum, we had to expose the forum on a route. This would not be necessary if we could connect to the forum service directly. The above trick used to connect to elasticsearch could also be used here, but it would be brittle and could only be temporary.
Describe the solution you'd like
We should take services out of the blue/green dance.
Services would be created at project initialization, with a fixed name (e.g. edxapp-lms). Routes would be connected to their services once for all.
The switch playbook would patch each service's selector instead of patching the target service in the route.
Thanks to the selector, it should be possible to make the switch in 2 steps:
add the next (green) stack to the selector. After this step, the traffic would go both to the current and to the next stacks.
remove the current (blue) stack from the selector. After this step, all the traffic would go to the new stack.
This two-steps switch presents to advantages:
zero downtime (note that switching the target service on the route was creating a small interruption)
possibility to do canary deployments
The text was updated successfully, but these errors were encountered:
Feature Request
Is your feature request related to a problem or unsupported use case? Please describe.
Arnold supports blue/green deployments by deploying complete stacks of services, pods, jobs, endpoints, etc. and switching the current route to the service of the new stack.
To do this, services include a deployment stamp in their name. This has raised several issues because it is not possible to use service names in the settings of another app because the name will change as soon as the service is redeployed.
Concrete cases when this is a problem:
dogwood.3-fun
image, we use theelasticsearch
cluster from theforum
app. The problem was solved temporarily by retrieving dynamically the host name ofelasticsearch
:forum
, and it can only be repaired by subsequently redeployingedxapp
with a downtime >30 minutes for theforum
.edxapp
application needs to connect to theforum
application which is in a separate app, both being deployed with blue/green. In order to have a stable address for theforum
, we had to expose the forum on a route. This would not be necessary if we could connect to theforum
service directly. The above trick used to connect toelasticsearch
could also be used here, but it would be brittle and could only be temporary.Describe the solution you'd like
We should take services out of the blue/green dance.
Services would be created at project initialization, with a fixed name (e.g.
edxapp-lms
). Routes would be connected to their services once for all.The switch playbook would patch each service's selector instead of patching the target service in the route.
Thanks to the selector, it should be possible to make the switch in 2 steps:
This two-steps switch presents to advantages:
The text was updated successfully, but these errors were encountered: