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

Traefik support #736

Merged
merged 9 commits into from
Dec 6, 2020
Merged

Traefik support #736

merged 9 commits into from
Dec 6, 2020

Conversation

nmlc
Copy link
Contributor

@nmlc nmlc commented Nov 25, 2020

fix: #499

Traefik has a TraefikService crd resource, which enables us to do weighted load balancing between multiple kubernetes services.

The only nuance that I've stumbled upon is that traefik stops to recognize TraefikService if one of the services in it have 0 endpoints, which is the case for promoted canary. So I have to remove canary service from TraefikService when canary weight is set to 0.

What has been done:

  • Added traefik implementation and tests for router interface
  • Added traefik implementation and tests for observer interface. "request-success-rate" and "request-duration" queries are implemented via prometheus metrics provider, by querying metrics exposed by traefik
  • Added e2e tests
  • CircleCI
  • Documentation

Proof

Traffic distribution when canary is successful

successful canary

Traffic distribution when canary failed

failed canary

@nmlc nmlc marked this pull request as ready for review December 1, 2020 00:19
Copy link
Member

@stefanprodan stefanprodan left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Awesome contribution! Thanks @nmlc 🥇

@stefanprodan stefanprodan merged commit 0827622 into fluxcd:master Dec 6, 2020
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

Successfully merging this pull request may close these issues.

Traefik support
2 participants