Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deployment Strategies #1697

Open
dantwining opened this issue Oct 30, 2023 · 3 comments
Open

Deployment Strategies #1697

dantwining opened this issue Oct 30, 2023 · 3 comments

Comments

@dantwining
Copy link
Contributor

HI, I'm trying to understand the Canary Release Deployment Strategy in detail but am finding the documentation confusing, sorry.

I am trying to parse the "Gated canary promotion stages" bullet list, but the structure seems inconsistent.

For example, here...


- check primary and canary deployment status
  - halt advancement if a rolling update is underway
  - halt advancement if pods are unhealthy

...I assume that both "halt advancement" bullet points are evaluated?

But here...


- call pre-rollout webhooks and check results
  - halt advancement if any hook returns a non HTTP 2xx result
  - increment the failed checks counter

...I assume that the failed checks counter isn't always incremented?

Overall, it would be excellent if it were possible to replace the bulleted list with some sort of flow - perhaps a Mermaid diagram or similar that's supported by GitHub? (although I appreciate that you render you docs as hosted pages too so may have other considerations).

I'm also confused by the use of "halt advancement" throughout the stages. Does this mean that the rollout just halts and "hangs" in whatever state it's in? Or does "halt advancement" include scaling the Canary deployment back to zero and/or any other cleanup tasks?

Finally, I am struggling to understand the relationship between a Canary rollout and the testing: config options, but this isn't mentioned at all on this page so I wonder if this is documented somewhere else.

@dantwining
Copy link
Contributor Author

Just for clarity, the specific documentation page I'm talking about is

https://fluxcd.io/flagger/usage/deployment-strategies/

which I think is also published as

https://docs.flagger.app/usage/deployment-strategies

Thanks

@kingdonb
Copy link
Member

does "halt advancement" include scaling the Canary deployment back to zero and/or any other cleanup tasks?

I think the use of "halt advancement" is deliberate, the wording implies nothing beyond what it says. It's especially not meant to signify the cleanup tasks, since iterations can resume the advancement assuming the failure condition abated:

increment the failed checks counter

As long as there are more than 1 configured allowed failed check, the halting of the advancement simply means that the progressive delivery's progress is not incremented. If you have a current canary weight of 0 and the advancement is halted, that might mean simply the canary isn't ready yet, or it might signify an error that results in the termination of the canary rollout. I think until the failed checks counter is exhausted, no termination will happen.

@kingdonb
Copy link
Member

I haven't quite yet evaluated the page you're talking about to understand the docs issue that I think you're really meant to be reporting here. Can you provide a reference to what testing: config options you mean? Flagger supports load testing as well as integration testing with Helm and other tests. https://fluxcd.io/flagger/usage/webhooks/

I think we like Mermaid docs here, I certainly agree with adding more of them throughout the docs since they are easier to keep up to date than the graphically produced diagrams – though they might not be as pretty! If you want to suggest a new diagram, I'd be happy to review and iterate with you. I'm still learning Mermaid syntax but I've found that ChatGPT can often produce a pretty decent diagram when prompted with enough detail and patient reassurance about what the topic should convey.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants