Commit Graph
393 Commits
Author SHA1 Message Date
stefanprodan 206c3e6d7a Implement App Mesh A/B testing 2019-10-15 16:39:54 +03:00
stefanprodan 7d4c3c5814 Implement App Mesh HTTP retry policy 2019-10-14 20:27:48 +03:00
stefanprodan 9b36794c9d Update App Mesh CRD 2019-10-14 20:26:46 +03:00
stefanprodan 9982dc9c83 Generate unique names for App Mesh virtual routers and routes 2019-10-14 19:07:10 +03:00
stefanprodan 673b6102a7 Add the name label to ClusterIP services and primary deployment 2019-10-09 13:01:15 +03:00
stefanprodan dfb4b35e6c Release v0.19.0 2019-10-08 12:02:37 +03:00
stefanprodan 45df96ff3c Format imports 2019-10-06 12:54:01 +03:00
stefanprodan 2d9098e43c Add target port number and name tests 2019-10-06 10:31:50 +03:00
stefanprodan 7581b396b2 Implement service target port 2019-10-06 10:21:34 +03:00
stefanprodan 67a6366906 Add service.targetPort field to Canary CRD 2019-10-06 10:04:21 +03:00
stefanprodan 625eed0840 Enforce blue/green when using kubernetes networking
Use blue/green with ten iterations and warn that progressive traffic shifting and HTTP headers routing are not compatible with Kubernetes L4 networking.
2019-10-05 17:59:34 +03:00
stefanprodan 37f9151de3 Add traffic mirroring documentation 2019-10-05 16:23:43 +03:00
stefanprodan 298d8c2d65 Allow gPRC protocol for App Mesh
Use the canary service port name to set http or grpc protocol on App Mesh virtual nodes and virtual routers
2019-10-05 11:21:43 +03:00
stefanprodan e8a2d4be2e Fix port discovery diff
Sort service ports by port number before comparing slices
2019-10-05 10:42:01 +03:00
Stefan ProdanandGitHub 9a9baadf0e Merge pull request #311 from andrewjjenkins/mirror
Add traffic mirroring for Istio service mesh
2019-10-05 10:34:25 +03:00
Andrew Jenkins 61f8aea7d8 add Traffic Mirroring to Blue/Green deployments
Traffic mirroring for blue/green will mirror traffic for the entire
canary analysis phase of the blue/green deployment.
2019-10-03 14:33:49 -06: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 268fa9999f Release v0.18.6 2019-10-03 15:00:12 +03:00
stefanprodan 4da6c1b6e4 Create canary virtual service during App Mesh reconciliation
Allows the canary pods to be accessed from inside the mesh during the canary analysis for conformance and load testing
2019-10-03 11:43:47 +03:00
Stefan ProdanandGitHub fff03b170f Merge pull request #320 from bvwells/json-tag
Fix JSON tag on virtual node condition
2019-10-03 11:07:05 +03:00
Ben WellsandGitHub 01962c32cd Fix JSON tag on virtual node condition 2019-10-03 08:46:39 +01:00
Ben Wells fc68635098 Fix slack/teams notification of fields 2019-10-02 22:35:16 +01:00
stefanprodan 54b8257c60 Release v0.18.5 2019-10-02 16:51:08 +03:00
nilscan 0734773993 Skip primary check for appmesh 2019-10-02 14:29:48 +13:00
Andrew Jenkins 655df36913 Extend test SetupMocks() to take arbitrary Canary resources
SetupMocks() currently takes a bool switch that tells it to configure
against either a shifting canary or an A-B canary.  I'll need a third
canary that has mirroring turned on so I changed this to an interface
that just takes the canary to configure (and configs the default
shifting canary if you pass nil).
2019-09-24 16:15:45 -06:00
Andrew Jenkins 2e079ba7a1 Add mirror to router interface and implement for istio router
The mirror option will be used to tell routers to configure traffic
mirroring.  Implement mirror for GetRoutes and SetRoutes for Istio.  For
other routers, GetRoutes always returns mirror == false, and SetRoutes
ignores mirror.

After this change there is no behavior change because no code sets
mirror true (yet).

Enhanced TestIstioRouter_SetRoutes and TestIstioRouter_GetRoutes.
2019-09-24 16:15:45 -06:00
stefanprodan 2ff86fa56e Fix canary weight max value 2019-09-24 10:16:22 +03:00
stefanprodan 1b2e0481b9 Add promoting phase to status condition 2019-09-24 09:57:42 +03:00
stefanprodan fe96af64e9 Add canary phases tests 2019-09-23 22:24:40 +03:00
stefanprodan 77d8e4e4d3 Use the promotion phase in A/B testing and Blue/Green 2019-09-23 22:14:44 +03:00
stefanprodan 800b0475ee Run the canary promotion on a separate stage
After the analysis finishes, Flagger will do the promotion and wait for the primary rollout to finish before routing all the traffic back to it. This ensures a smooth transition to the new version avoiding dropping in-flight requests.
2019-09-23 21:57:24 +03: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 a6d86f2e81 Skip mesh routers for B/G when provider is kubernetes 2019-09-22 00:48:42 +03:00
stefanprodan 9d856a4f96 Implement B/G for service mesh providers
Blue/Green steps:
- scale up green
- run conformance tests on green
- run load tests and metric checks on green
- route traffic to green
- promote green spec over blue
- wait for blue rollout
- route traffic to blue
2019-09-21 21:21:33 +03:00
stefanprodan f7513b33a6 Release v0.18.4 2019-09-08 11:21:16 +03:00
stefanprodan 507075920c Implement Helm v3 tester 2019-09-08 09:33:34 +03:00
Anton Kislitcyn f56b6dd6a7 Add annotations prefix for ingresses 2019-09-06 11:36:06 +02:00
Jeff WenzbauerandGitHub 0421b32834 Enhanced error logging
Updated the formatting of the `out` to be logged as a string rather than a bunch of bytes.
2019-08-28 12:43:08 -06:00
stefanprodan 2cfe2a105a Release Flagger v0.18.3 2019-08-22 18:30:46 +03:00
stefanprodan 0a418eb88a Add notifier tests 2019-08-12 09:47:11 +03:00
stefanprodan 040dbb8d03 Add http listener to virtual router reconciliation 2019-08-10 11:04:15 +03:00
stefanprodan 64f2288bdd Add listeners to AppMesh virtual router 2019-08-10 10:58:20 +03:00
stefanprodan a305a0b705 Release v0.18.2 2019-08-05 18:43:57 +03:00
Félix Cantournet 0ca48d77be Fix Port discovery with multiple port services
This fixes issue https://github.com/weaveworks/flagger/issues/263

We actually don't need to specify any ports in the VirtualService
and DestinationRules.
Istio will create clusters/listerners for each named port we have declared in
the kubernetes services and the router can be shared as it operates only on L7 criterias

Also contains a tiny clean-up of imports
2019-08-02 10:07:00 +02:00
stefanprodan e8d91a0375 Release v0.18.1 2019-07-30 13:22:51 +03:00
stefanprodan c31e9e5a96 Use Linkerd metrics for ingress and kubernetes routers 2019-07-30 13:00:28 +03:00
stefanprodan 11d84bf35d Enable kubernetes metric provider 2019-07-30 12:27:53 +03:00
stefanprodan fc676e3cb7 Release v0.18.0 2019-07-29 15:06:30 +03:00
stefanprodan c463b6b231 Add finalising state tests 2019-07-29 14:02:16 +03:00