-
Notifications
You must be signed in to change notification settings - Fork 740
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
Skipper Ingress Controller support #670
Conversation
cc64ed6
to
42bb59a
Compare
6c5a3ce
to
f0a6b0d
Compare
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
f0a6b0d
to
2f44f98
Compare
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
e19fbd1
to
831d4a5
Compare
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
From my side it looks good, but of course I have not much idea about flagger.
I am not 100% sure if the Marshal/Unmarshal with string() will work in Go1.15. Please check that.
I Just added some comments, which are no blockers.
@szuecs thanks for reviewing! |
@universam1 it’s fine if you checked. I just remembered “something changed in that area”, so please ignore my comment. 😊 |
Router implementation for zalan.do/Skipper Ingress - An HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress https://github.com/zalando/skipper/ * The concept is to define routes with specific weights via the skipper specific annotation predicate of "zalando.org/backend-weights". * A new "canary ingress" is created that has higher "weight" thus receiving all traffic, which distributes progressively * After the canary process is finished, this ingress is disabled via the "False()" annotation predicate to route traffic again back to the apex Ingress. There are certain Skipper principles which are taken into account: ``` Skipper Principles: * if only one backend has a weight, only one backend will get 100% traffic * if two of three or more backends have a weight, only those two should get traffic. * if two backends don't have any weight, it's undefined and right now they get equal amount of traffic. * weights can be int or float, but always treated as a ratio. Implementation: * apex Ingress is immutable * new canary Ingress contains two paths for primary and canary service * canary Ingress manages weights on primary & canary service, hence no traffic to apex service ```
Te be able to distinct Skipper routes we need to combine the Canary data to generate the Skipper metric label. "request-success-rate" and "request-duration" queries are implemented and tested that provide those obersvations from Skipper metrics * Takes into account how Skipper renders the paths accordingly and reformats the quieries.
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
2263f40
to
1e8baa6
Compare
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
1e8baa6
to
df371a2
Compare
@stefanprodan I think this PR is now ready for merge. Please note the added tutorial for Skipper |
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
df371a2
to
05ded30
Compare
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
05ded30
to
a946809
Compare
Add e2e-skipper* files for test setup It does the following things: * install Skipper ingress with Kustomize * load Flagger image onto the local cluster * install Flagger and Prometheus in the flagger-system namespace
Skipper Ingress Controller support is added with fluxcd#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
a946809
to
e09f44d
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Awesome work Samuel and David 🏅
Looking forward to the A/B testing implementation if you want to tackle that.
Skipper Ingress Controller support is added with fluxcd/flagger#670. This commit add the documentation and links to mention Skipper is now an available option. Currently only Canary deployments are supported.
fix: #452
✨ zalan.do/Skipper Router Implementation
An HTTP router and reverse proxy for service composition, including use cases like Kubernetes Ingress
https://github.com/zalando/skipper/
zalando.org/backend-weights
.False()
annotation predicate to route traffic again back to the apex Ingress.Skipper Principles:
There are certain Skipper principles which are taken into account:
📈 Prometheus Metrics Observer
Tests
Proof
Successful progress
Failed checks
Prometheus graphs
http://localhost:9090/graph?g0.range_input=5m&g0.moment_input=2020-08-13%2004%3A25%3A27&g0.expr=sum(rate(skipper_response_duration_seconds_bucket%7Broute%3D~%22kube(ew)%3F_test__podinfo_ingress_canary__.*__podinfo_service_canary(_%5B0-9%5D%2B)%3F%22%2Ccode!~%225..%22%2Cle%3D%22%2BInf%22%7D%5B15s%5D))%20%2F%20%0Asum(rate(skipper_response_duration_seconds_bucket%7Broute%3D~%22kube(ew)%3F_test__podinfo_ingress_canary__.*__podinfo_service_canary(_%5B0-9%5D%2B)%3F%22%2Cle%3D%22%2BInf%22%7D%5B15s%5D))%20*%20100%0A&g0.tab=0&g1.range_input=5m&g1.expr=sum(rate(skipper_serve_route_duration_seconds_sum%7Broute%3D~%22kube(ew)%3F_test__podinfo_ingress_canary__.*__podinfo_service_canary(_%5B0-9%5D%2B)%3F%22%7D%5B15s%5D))%20%2F%20%0Asum(rate(skipper_serve_route_duration_seconds_count%7Broute%3D~%22kube(ew)%3F_test__podinfo_ingress_canary__.*__podinfo_service_canary(_%5B0-9%5D%2B)%3F%22%7D%5B15s%5D))%20*%201000&g1.tab=0