stefanprodan
c463b6b231
Add finalising state tests
2019-07-29 14:02:16 +03:00
stefanprodan
b2ca0c4c16
Implement finalising state
...
Set the canary status to finalising after routing the traffic back to the primary. Run one final loop before scaling the canary to zero so that the canary has a chance to process all inflight requests.
2019-07-29 13:52:11 +03:00
stefanprodan
163f5292b0
Push a notification when a canary is waiting for approval
2019-07-25 19:13:22 +03:00
stefanprodan
28e7e89047
Pause or resume analysis on confirmation gate toggle
2019-07-24 16:09:13 +03:00
stefanprodan
04cbacb6e0
Implement confirm rollout gate and hook
...
The confirm-rollout hooks are executed before the pre-rollout hooks. Flagger will halt the canary rollout until the confirm webhook returns HTTP status 200.
2019-07-24 12:09:39 +03:00
stefanprodan
9d89e0c83f
Log status update error
2019-07-10 09:55:20 +03:00
stefanprodan
108bf9ca65
Add initializing canary phase/status condition reason
...
Fix HPA reconciliation min replicas diff
2019-07-09 17:10:43 +03:00
stefanprodan
438f952128
Implement status conditions
...
Add Promoted status condition with the following reasons: Initialized, Progressing, Succeeded, Failed
Usage: `kubectl wait canary/app --for=condition=promoted`
Fix : #184
2019-07-09 15:22:56 +03:00
stefanprodan
10c61daee4
Exit when losing leadership
2019-07-07 13:09:05 +03:00
stefanprodan
61d0216c21
Add traffic routing to notifications
2019-07-06 17:13:09 +03:00
stefanprodan
ba4a2406ba
Refactor notifier to allow more implementations
2019-07-06 15:47:12 +03:00
stefanprodan
ad8d02f701
Use Linkerd metrics when NGINX is the mesh ingress
...
Set the metrics provider to Linkerd Prometheus when using NGINX as Linkerd Ingress. This mitigates the lack of canary metrics in the NGINX controller exporter.
2019-06-30 13:03:27 +03:00
stefanprodan
63cb8a5ba5
Lookup the canary provider field during reconciliation
...
Override the global provider if one is specified in the canary spec
2019-06-20 14:52:43 +03:00
stefanprodan
bf7ebc9708
Skip readiness check on init for Istio SMI
2019-06-19 11:16:11 +03:00
stefanprodan
98beb1011e
Skip primary check on init when using Istio
...
The deployment will become ready after the ClusterIP are created
2019-06-19 10:50:55 +03:00
stefanprodan
6d1da5bb45
Use container name in port discovery
...
If the port name is missing, append the container name to the tcp port name
2019-06-17 20:50:21 +03:00
stefanprodan
88c450e3bd
Implement port discovery
...
If port discovery is enabled, Flagger scans the deployment pod template and extracts the container ports excluding the port specified in the canary service spec and Istio proxy ports. All the extra ports will be used when generation the ClusterIP services.
2019-06-15 16:34:32 +03:00
Olga Mirensky
9618d2ea0d
Fix promoting canary when max weight is not a multiple of step
2019-05-23 10:18:19 +10:00
stefanprodan
5b3fd0efca
Set Istio request duration to milliseconds
2019-05-15 20:01:27 +03:00
stefanprodan
0032c14a78
Refactor metrics
...
- add observer interface with builtin metrics functions
- add metrics observer factory
- add prometheus client
- implement the observer interface for istio, envoy and nginx
- remove deprecated istio and app mesh metric aliases (istio_requests_total, istio_request_duration_seconds_bucket, envoy_cluster_upstream_rq, envoy_cluster_upstream_rq_time_bucket)
2019-05-13 17:34:08 +03:00
stefanprodan
f7db0210ea
Add nginx ingress controller checks
2019-05-06 18:43:02 +03:00
Yuval Kohavi
37ebbf14f9
fix compile
2019-04-17 18:44:33 -04:00
Yuval Kohavi
156488c8d5
Merge remote-tracking branch 'origin/master' into supergloo-updated
2019-04-17 18:24:41 -04:00
Yuval Kohavi
868482c240
basics seem working!
2019-04-16 15:10:08 -04:00
stefanprodan
6ef72e2550
Make the pod selector configurable
...
- default labels: app, name and app.kubernetes.io/name
2019-04-15 12:57:25 +03:00
stefanprodan
60f51ad7d5
Move deployer and config tracker to canary package
2019-04-15 11:27:08 +03:00
stefanprodan
edcff9cd15
Execute pre/post rollout webhooks
...
- halt the canary advancement if pre-rollout hooks are failing
- include the canary status (Succeeded/Failed) in the post-rollout webhook payload
- ignore post-rollout webhook failures
- log pre/post rollout webhook response result
2019-04-13 15:43:23 +03:00
stefanprodan
352ed898d4
Add request success rate and duration metrics alias
2019-04-12 17:00:04 +03:00
stefanprodan
f211e0fe31
Use go templates to render the builtin promql queries
2019-03-31 13:55:14 +03:00
stefanprodan
c91a128b65
Fix observer mock init
2019-03-30 11:55:41 +02:00
stefanprodan
6a080f3032
Rename observer and recorder
2019-03-30 11:49:43 +02:00
stefanprodan
b2c12c1131
Move observer to metrics package
2019-03-30 11:45:39 +02:00
stefanprodan
025785389d
Refactor Prometheus recorder
...
- add flagger_info gauge metric
- expose the version and mesh provider as labels
- move the recorder to the metrics package
2019-03-28 11:58:19 +02:00
stefanprodan
48d9a0dede
Ensure the status metric is set after a restart
2019-03-28 11:52:13 +02:00
stefanprodan
ca074ef13f
Rename router sync to reconcile
2019-03-26 17:12:46 +02:00
stefanprodan
d07925d79d
Fix canary status prom metrics
2019-03-25 17:26:22 +02:00
stefanprodan
941be15762
Fix typo in comments
2019-03-23 11:25:31 +02:00
stefanprodan
578ebcf6ed
Use pod name filter in Envoy metrics query
...
Add support for Weave Cloud Prometheus agent
2019-03-23 11:20:51 +02:00
stefanprodan
b4ae060122
Move to weaveworks org
2019-03-20 18:26:04 +02:00
stefanprodan
4b6126dd1a
Add Envoy HTTP success rate metric check
2019-03-19 15:52:26 +02:00
stefanprodan
9d0e38c2e1
Disable primary readiness check in tests
2019-03-17 12:50:48 +02:00
stefanprodan
8b758fd616
Set primary min replicas
2019-03-17 12:30:11 +02:00
stefanprodan
7b4153113e
Fix router tests
2019-03-17 11:14:47 +02:00
stefanprodan
7d340c5e61
Change mesh providers based on cmd flag
2019-03-17 10:52:52 +02:00
stefanprodan
437b1d30c0
Copy labels from canary to primary
2019-03-14 01:49:07 +02:00
Stefan Prodan
1cd0c49872
Merge pull request #88 from stefanprodan/ab-testing
...
A/B testing - canary with session affinity
2019-03-11 13:55:06 +02:00
stefanprodan
86ea172380
Fix weight metric report
2019-03-08 23:28:45 +02:00
Huy Le
6196f69f4d
Create New Job when Canary's Interval changes
...
- Currently whenever the Canary analysis interval changes, flagger does
not reflect this into canary's job.
- This change will make sure the canary analysis interval got updated whenever
the Canary object's interval changes
2019-03-08 10:27:34 -08:00
stefanprodan
d8b847a973
Mention session affinity in docs
2019-03-08 15:05:44 +02:00
stefanprodan
e80a3d3232
Add A/B testing scheduling unit tests
2019-03-08 13:06:39 +02:00