stefanprodan
60f6b05397
Refactor scheduler tests
2019-01-18 11:14:27 +02:00
stefanprodan
6d8a7343b7
Add tests for analysis restart and canary promotion
2019-01-18 11:05:40 +02:00
stefanprodan
aff8b117d4
Restart validation if revision changes during analysis
2019-01-17 15:13:59 +02:00
stefanprodan
1d31b5ed90
Add canary name and namespace to controller logs
...
- zap key-value: canary=name.namespace
2019-01-17 13:58:10 +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
9872e6bc16
Skip readiness checks if canary analysis finished
2019-01-16 13:18:53 +02:00
stefanprodan
10c2bdec86
Use deep copy when updating the virtual service routes
2019-01-16 13:13:07 +02:00
stefanprodan
4bf3b70048
Use CRD UpdateStatus for Canary status updated
...
- requires Kubernetes >=1.11
2019-01-16 01:00:39 +02:00
stefanprodan
9232c8647a
Check if multiple canaries have the same target
...
- log an error on target duplication ref #13
2019-01-15 21:43:05 +02:00
stefanprodan
23e8c7d616
Fix for when canary name is different to the target name
...
- use target name consistent at bootstrap
2019-01-15 21:18:46 +02:00
Stefan Prodan
42607fbd64
Merge pull request #26 from carlossg/service-name
...
Fix VirtualService routes
2019-01-15 19:38:38 +01:00
stefanprodan
28781a5f02
Use deep copy when updating the deployment object
...
- fix canary status update logs
2019-01-15 20:37:14 +02:00
Carlos Sanchez
5e880d3942
Wrong VirtualService routes
...
If deployment name is different from canary name
the virtual service routes are created with canary name
but the services are created with deployment name
Note that canary name should match deployment name
2019-01-15 18:44:50 +01:00
Stefan Prodan
3bff2c339b
Merge pull request #20 from stefanprodan/scheduler
...
Add canary analysis schedule interval to CRD
2019-01-11 19:06:17 +01:00
Stefan Prodan
b035c1e7fb
Merge pull request #25 from carlossg/virtualservice-naming
...
Tries to create VirtualService that already exists
2019-01-11 18:03:57 +01:00
Carlos Sanchez
7ae0d49e80
Tries to create VirtualService that already exists
...
When canary name is different than deployment name
VirtualService croc-hunter-jenkinsx.jx-staging create error virtualservices.networking.istio.io "croc-hunter-jenkinsx" already exists
2019-01-11 17:47:52 +01:00
Stefan Prodan
07f66e849d
Merge branch 'master' into scheduler
2019-01-11 15:07:03 +01:00
stefanprodan
83118faeb3
Fix autoscalerRef tests
2019-01-11 13:51:44 +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
Carlos Sanchez
c1bde57c17
Fix bad error message
...
"controller/scheduler.go:217","msg":"deployment . update error Canary.flagger.app \"jx-staging-croc-hunter-jenkinsx\" is invalid: []: Invalid value: map[string]interface {}{\"metadata\":map[string]interface {}{\"name\":\"jx-staging-croc-hunter-jenkinsx\", \"namespace\":\"jx-staging\", \"selfLink\":\"/apis/flagger.app/v1alpha2/namespaces/jx-staging/canaries/jx-staging-croc-hunter-jenkinsx\", \"uid\":\"b248877e-1406-11e9-bf64-42010a8000c6\", \"resourceVersion\":\"30650895\", \"generation\":1, \"creationTimestamp\":\"2019-01-09T12:04:20Z\"}, \"spec\":map[string]interface {}{\"canaryAnalysis\":map[string]interface {}{\"threshold\":5, \"maxWeight\":50, \"stepWeight\":10, \"metrics\":[]interface {}{map[string]interface {}{\"name\":\"istio_requests_total\", \"interval\":\"1m\", \"threshold\":99}, map[string]interface {}{\"name\":\"istio_request_duration_seconds_bucket\", \"interval\":\"30s\"istio-system/flagger-b486d78c8-fkmbr[flagger]: {"level":"info","ts":"2019-01-09T12:14:05.158Z","caller":"controller/deployer.go:228","msg":"Scaling down jx-staging-croc-hunter-jenkinsx.jx-staging"}
2019-01-09 13:17:17 +01:00
stefanprodan
882b4b2d23
Update the control loop interval flag description
2019-01-08 13:15:10 +02:00
stefanprodan
bec96356ec
Bump CRD version to v1alpha3
...
- new field canaryAnalysis.interval
2019-01-07 01:03:31 +02:00
stefanprodan
b5c648ea54
Bump version to 0.3.0-beta.1
2019-01-07 00:30:09 +02:00
stefanprodan
e6e3e500be
Schedule canary analysis based on interval
2019-01-07 00:26:01 +02:00
stefanprodan
b008abd4a7
Fix metrics server offline test
2018-12-27 12:43:43 +02:00
stefanprodan
cbf9e1011d
Add tests for metrics server check
2018-12-27 12:42:12 +02:00
stefanprodan
6ec3d7a76f
Format observer tests
2018-12-27 12:21:33 +02:00
stefanprodan
ab52752d57
Add observer histogram test
2018-12-27 12:16:10 +02:00
stefanprodan
df3951a7ef
Add observer tests
2018-12-27 12:15:16 +02:00
stefanprodan
722d36a8cc
Add webhook tests
2018-12-26 17:58:35 +02:00
stefanprodan
e86c02d600
Implement canary external check
...
- do a HTTP POST for each webhook registered in the canary analysis
- increment the failed checks counter if a webhook returns a non-2xx status code and log the error and the response body if exists
2018-12-26 14:41:35 +02:00
stefanprodan
0d96bedfee
Add webhooks to Canary CRD v1alpha2
2018-12-26 13:42:36 +02:00
Stefan Prodan
03408683c0
Add details to Slack messages
...
- attach canary analysis metadata to init/start messages
- add rollback reason to failed canary messages
2018-12-06 12:51:02 +07:00
stefanprodan
f3904ea099
Use canary state constants in recorder
2018-11-27 17:34:48 +02:00
stefanprodan
8878f15806
Clean up isDeploymentReady
2018-11-27 17:11:35 +02:00
stefanprodan
5977ff9bae
Add rollback test based on failed checks threshold
2018-11-27 17:00:13 +02:00
stefanprodan
c7e7785b06
Fix canary deployer is ready test
2018-11-27 15:55:04 +02:00
stefanprodan
4cb5ceb48b
Rollback canary based on the deployment progress deadline check
...
- determine if the canary deployment is stuck by checking if there is a minimum replicas unavailable condition and if the last update time exceeds the deadline
- set progress deadline default value to 60 seconds
2018-11-27 15:44:15 +02:00
stefanprodan
042d3c1a5b
Set ProgressDeadlineSeconds for primary deployment on init/promote
2018-11-27 12:10:14 +02:00
Stefan Prodan
769aff57cb
Add Slack notifications for canary events
2018-11-25 11:44:45 +02:00
Stefan Prodan
c5930e6f70
Update deployment strategy on promotion
...
- include spec strategy, min ready seconds and revision history limit to initialization and promotion
2018-11-24 20:03:02 +02:00
Stefan Prodan
65bd77c88f
Add last transition time to Canary CRD status
2018-11-24 15:48:35 +02:00
Stefan Prodan
580924e63b
Record canary duration and total
...
- add Prometheus metrics canary_duration_seconds and canary_total
2018-10-29 21:44:43 +02:00
Stefan Prodan
1b2108001f
Add Prometheus registry flag to recorder
...
- fix tests
2018-10-29 14:04:45 +02:00
Stefan Prodan
074e57aa12
Add recorder to revision tests
2018-10-29 13:43:54 +02:00
Stefan Prodan
e16dde809d
Add recorder to mock controller
2018-10-29 13:34:28 +02:00
Stefan Prodan
4a8aa3b547
Add recorder component
...
- records the canary analysis status and current weight as Prometheus metrics
2018-10-29 11:25:36 +02:00
Stefan Prodan
344c7db968
Make golint happy and add codecov
2018-10-23 16:36:48 +03:00
Stefan Prodan
8e2f538e4c
Add scheduler tests for initialization and revision
2018-10-22 20:14:09 +03:00