Commit Graph
159 Commits
Author SHA1 Message Date
stefanprodan c31e9e5a96 Use Linkerd metrics for ingress and kubernetes routers 2019-07-30 13:00:28 +03:00
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 ProdanandGitHub 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