mirror of
https://github.com/fluxcd/flagger.git
synced 2026-04-15 06:57:34 +00:00
f756dc247c94f40056e5428c8a05e0ce65cc7c42
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 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 in crash loop)
- 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 if deployments are unhealthy or success rate is under the threshold)
- promote canary to GA (copy canary deployment spec template over GA)
- wait for GA rolling update to finish
- scale to zero the canary deployment
- mark rollout deployment as finished
- wait for 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
74 MiB
Languages
Go
91.7%
Shell
7.9%
Smarty
0.3%
