Commit Graph
63 Commits
Author SHA1 Message Date
mathetake 7b6a5f96a1 pkg/metrics/providers: add region filed for MetricTemplate.Provider
and make Address not required
2020-03-02 21:58:58 +09:00
stefanprodan 287977c2b5 Deprecate spec.canaryAnalysis replaced by spec.analysis
- add analysis field to Canary spec
- deprecate canaryAnalysis filed (to be removed in the next API version)
- maintain backwards compatibility with v1alpha3 by using spec.canaryAnalysis if spec.analysis is nil
- set analysis threshold default value to 1
2020-02-28 11:24:38 +02:00
stefanprodan 1a87a9be45 Implement notifications based on alert providers and severity 2020-02-10 15:25:56 +02:00
stefanprodan 898edee67e Refactor Flagger APIs and tests
- add CrossNamespaceObjectReference type
- add informers collection to controller
- use the informer cache to query for metric templates
- rename mock to fixture
- regenerate clientset
2020-02-10 10:36:31 +02:00
stefanprodan 0673b54092 Implement AlertProvider CRD 2020-02-10 10:36:31 +02:00
stefanprodan de03d49f55 Implement metric threshold range
- add CanaryThresholdRange type to Canary API
- add optional thresholdRange field to the analysis metric object
- implement min/max metric result validation
- thresholdRange takes precedence over threshold when both are specified
2020-02-08 15:04:03 +02:00
stefanprodan 3f83f306a5 Upgrade canary resources in-cluster 2020-02-07 12:35:56 +02:00
stefanprodan 448c210324 Release API version v1beta1
- bump Canary and MetricTemplate version to v1beta1
- regenerate clientset and CRD
2020-02-07 12:35:56 +02:00
stefanprodan d9252748d2 Add MetricTemplate CRD and clientset 2020-02-06 15:07:53 +02:00
Tanner Altares fa950e1a48 support gated rollback 2020-01-30 15:11:59 -06:00
stefanprodan e3ecebc9ae Add service name field to Canary CRD 2020-01-26 12:46:08 +02:00
stefanprodan e4dc923299 Add event webhook type to CRD 2020-01-15 14:10:38 +02:00
stefanprodan cdcd97244c Add the metrics server field to CRD 2019-10-17 11:36:25 +03:00
stefanprodan 45df96ff3c Format imports 2019-10-06 12:54:01 +03:00
stefanprodan 67a6366906 Add service.targetPort field to Canary CRD 2019-10-06 10:04:21 +03:00
Andrew Jenkins e384b03d49 Add Traffic Mirroring for Istio Service Mesh
Traffic mirroring is a pre-stage for canary deployments.  When mirroring
is enabled, at the beginning of a canary deployment traffic is mirrored
to the canary instead of shifted for one canary period.  The service
mesh should mirror by copying the request and sending one copy to the
primary and one copy to the canary; only the response from the primary
is sent to the user.  The response from the canary is only used for
collecting metrics.

Once the mirror period is over, the canary proceeds as usual, shifting
traffic from primary to canary until complete.

Added TestScheduler_Mirroring unit test.
2019-10-03 14:33:49 -06:00
stefanprodan b58e13809c Add promoting phase to canary status conditions 2019-09-23 21:48:09 +03:00
stefanprodan 8282f86d9c Implement confirm-promotion hook
The confirm promotion hooks are executed right before the promotion step. The canary promotion is paused until the hooks return HTTP 200. While the promotion is paused, Flagger will continue to run the metrics checks and load tests.
2019-09-22 13:23:19 +03:00
stefanprodan 69875cb3dc Add finalising status phase to CRD 2019-07-29 13:43:30 +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 dfdcfed26e Add Waiting canary status phase
means the canary rollout is paused (waiting for confirmation to proceed)
2019-07-24 12:00:04 +03:00
stefanprodan b26542f38d Do not trigger a canary deployment on manual rollback
Save the primary spec hash and check if it matches the canary spec. If the canary hash is identical with the primary one skip promotion.
2019-07-10 09:08:33 +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 85ee7d17cf Set min analysis interval to 10s 2019-07-01 09:23:05 +03:00
stefanprodan 4a9e3182c6 Add the mesh provider field to canary CRD 2019-06-20 14:50:21 +03:00
stefanprodan 2ebedd185c Add port discovery field to canary service spec 2019-06-15 16:18:54 +03:00
stefanprodan 028933b635 Switch to go mod from dep 2019-06-11 19:37:36 +03:00
stefanprodan 2285bd210e Add traffic policy to canary service spec
Attach traffic policy to canary and primary destination rules
2019-06-07 13:58:59 +03:00
stefanprodan 921ac00383 Add ingress ref to CRD and RBAC 2019-05-06 18:33:00 +03:00
stefanprodan e0fc5ecb39 Add hook type to CRD
- pre-rollout execute webhook before routing traffic to canary
- rollout execute webhook during the canary analysis on each iteration
- post-rollout execute webhook after the canary has been promoted or rolled back
Add canary phase to webhook payload
2019-04-13 15:37:41 +03:00
Trond Nordheim f5b97fbb74 Add support for naming generated service ports 2019-03-21 12:37:02 +01:00
stefanprodan b4ae060122 Move to weaveworks org 2019-03-20 18:26:04 +02:00
stefanprodan 59f5a0654a Add AppMesh fields to Canary CRD 2019-03-16 14:11:24 +02:00
stefanprodan 62b906d30b Add canary HTTP match conditions and iterations 2019-03-08 11:49:32 +02:00
stefanprodan 119c2ff464 Add CORS policy to Canary CRD 2019-03-06 15:33:53 +02:00
stefanprodan 7d0df82861 Add header manipulation rules to Canary CRD 2019-03-06 12:41:53 +02:00
stefanprodan b0b6198ec8 Add Istio virtual service and signal packages 2019-03-06 01:43:09 +02:00
stefanprodan c6e96ff1bb Add append headers field to Canary CRD 2019-03-02 13:33:03 +02:00
stefanprodan 44d7e96e96 Add timeout and retries fields to Canary CRD 2019-02-28 00:02:01 +02:00
stefanprodan 5d81876d07 Make the metric interval optional
- set default value to 1m
2019-02-27 16:03:56 +02:00
stefanprodan d148933ab3 Add metric query field to Canary CRD 2019-02-27 15:46:09 +02:00
stefanprodan b3e7fb3417 Add HTTP match and rewrite to Canary service spec 2019-02-25 00:06:14 +02:00
stefanprodan 9b79af9fcd Add skipAnalysis field to Canary CRD 2019-02-13 15:27:45 +02:00
stefanprodan 3fd039afd1 Add tracked configs checksum to canary status 2019-01-26 12:33:15 +02:00
stefanprodan f7a439274e Go format API types 2019-01-20 14:10:10 +02:00
stefanprodan 02236374d8 Run the wekbooks before the metrics checks
- log warning when no values are found for Istio metric due to lack of traffic
2019-01-20 13:54:44 +02:00
stefanprodan 1ef310f00d Add traffic weight to canary status
- show current weight on kubectl get canaries and kubectl get all
2019-01-16 16:29:59 +02:00
stefanprodan acdd2c46d5 Refactor Canary status
- add status phases (Initialized, Progressing, Succeeded, Failed)
- rename status revision to LastAppliedSpec
2019-01-16 15:06:38 +02:00
stefanprodan aa2c28c733 Make autoscalerRef optional
- use anyOf as a workaround for the openAPI object validation not accepting empty values
- fix #23
2019-01-11 13:42:32 +02:00