[ECS:Plugin]: Supporting controller type "ECS"#6674
Open
armistcxy wants to merge 5 commits intopipe-cd:masterfrom
Open
[ECS:Plugin]: Supporting controller type "ECS"#6674armistcxy wants to merge 5 commits intopipe-cd:masterfrom
armistcxy wants to merge 5 commits intopipe-cd:masterfrom
Conversation
Signed-off-by: Hoang Ngo <adlehoang118@gmail.com>
Signed-off-by: Hoang Ngo <adlehoang118@gmail.com>
Signed-off-by: Hoang Ngo <adlehoang118@gmail.com>
Signed-off-by: Hoang Ngo <adlehoang118@gmail.com>
a2f4760 to
55d6cfa
Compare
Signed-off-by: Hoang Ngo <adlehoang118@gmail.com>
a614ac0 to
322bbb0
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this PR does: This PR adds support for the native ECS deployment controller type by introducing a strategy pattern:
providerlayer changes:ForceNewDeploymentmethod added to the ECS interface and client struct, it calls UpdateService with ForceNewDeployment: true and forwards DeploymentConfiguration (with the support of AWS SDK v1.78.0 we can specifyStrategy: ROLLING, BLUE_GREEN, CANARY, LINEAR so AWS-managed deployment strategies are supported).deploymentlayer changes:applyServiceDefinitionnow returns anewlyCreatedbool so callers can distinguish create vs. update.newDeploymentController(serviceDef)factory, and two concrete implementations:Stage comparison
Why we need it: Previously the ECS plugin hard-coded the EXTERNAL deployment controller, this blocks native ECS features such as Service Connect, deployment circuit breakers, and deployment alarms that are only available with the ECS controller type.
Supported features wih ECS controller
EXTERNALcontrollerminimumHealthyPercent/maximumPercentnativelyCanaryPercent) of traffic to the new version first, then completes the rollout afterCanaryBakeTimeInMinutesStepPercent) at fixed intervals (StepBakeTimeInMinutes)desiredCountin sync with the native ECS deployment lifecycle, avoiding race conditions that arise when scaling interacts with the task-set management of theEXTERNALcontrollerCreateService/UpdateServicefor theECScontrollerECScontroller typeECScontrollerWhich issue(s) this PR fixes: Part of #6443