mirror of
https://github.com/fluxcd/flagger.git
synced 2026-02-14 18:10:00 +00:00
0ddb337b66bfc9a1730cc0f4c6c093174b9e76d3
steerer
Istio progressive rollout gated by Prometheus HTTP success rate metric
Usage
Create a test namespace:
kubectl apply -f ./artifacts/namespace/
Create GA and canary deployments, services, hpa and Istio virtual service:
kubectl apply -f ./artifacts/workloads/
Rollout:
Rollout flow:
- scan namespace for deployments marked for rollout
- scan namespace for a corresponding canary deployment (
-canaryprefix) - check Istio virtual service routes are mapped to GA and canary ClusterIP services
- check GA and canary deployments status (halt rollout if a rolling update is underway or if pods are unhealthy)
- increase canary traffic weight percentage by 10%
- check canary HTTP success rate (halt rollout if percentage is under the specified threshold)
- advance canary traffic wight by 10% till it reaches 100%
- halt rollout while canary success rate is under the threshold
- halt rollout if the GA or canary deployment becomes unhealthy
- halt rollout while canary deployment is being scaled up/down by HPA
- promote canary to GA (copy canary deployment spec template over GA)
- wait for GA rolling update to finish
- route all traffic to GA
- scale to zero the canary deployment
- mark rollout deployment as finished
- wait for the canary deployment to be updated (revision bump) and start over
HTTP success rate query:
sum(
rate(
istio_requests_total{
reporter="destination",
destination_workload_namespace=~"$namespace",
destination_workload=~"$workload",
response_code!~"5.*"
}[$interval]
)
)
/
sum(
rate(
istio_requests_total{
reporter="destination",
destination_workload_namespace=~"$namespace",
destination_workload=~"$workload"
}[$interval]
)
)
Description
Progressive delivery Kubernetes operator (Canary, A/B Testing and Blue/Green deployments)
Readme
Apache-2.0
72 MiB
Languages
Go
91.7%
Shell
7.9%
Smarty
0.3%
