【问题标题】:AWS CodeDeploy(Blue/Green) Deployment Group with Two Load balancers具有两个负载均衡器的 AWS CodeDeploy(蓝/绿)部署组
【发布时间】:2020-11-21 23:28:34
【问题描述】:

我的架构是这样的,

Internal ALB -> Target Group 1 
                               \ 
                                 -> Fargate Task (using ECS Service)
                               /
External ALB -> Target Group 2 

此 ECS 服务运行良好。对于内部和外部流量,我可以同时使用负载均衡器来完成任务。

我想创建一个与 CodeDeploy 应用程序对应的蓝/绿 CodeDeploy 部署组,它将在需要时成功部署服务。所有这些我都使用 CLI。

问题在于,由于我使用了两个负载均衡器,因此我无法将它们都关联起来以创建 CodeDeploy 部署组。是否有任何关于如何创建此部署组的指示?

另外,我想使用这个部署组来创建一个管道,以便每次代码更改时都可以部署应用程序。

总体而言,我希望在 VPC 内部使用内部 ALB 访问服务,并在外部使用其公共 ALB。所以我创建了两个 ALB 并为这些 ALB 创建了侦听器,然后将这些目标组附加到 ECS 服务。

【问题讨论】:

    标签: amazon-web-services load-balancing amazon-ecs aws-code-deploy aws-codepipeline


    【解决方案1】:

    目前 CodeDeploy 不支持使用多个目标组,仅在使用滚动更新部署样式1(非蓝绿操作)时才支持:

    仅当服务使用滚动更新 (ECS) 部署控制器类型时,才支持多个目标组。如果您使用 CodeDeploy 或外部部署控制器,则不支持多个目标组。

    如果该服务可能,建议的解决方法是使用滚动 ECS 更新而不是蓝/绿 CodeDeploy。如果这是不可能的,唯一的其他解决方法是将服务分成两个(每个端口一个)或开发一个自定义 Lambda 函数,该函数将作为生命周期挂钩 2 的一部分运行,Lambda 函数必须采用照顾建立额外的目标群体。

    【讨论】:

    • 嘿@shariqmaws,所以我这样做了,它工作得很好。一个问题。我有许多 lambda 函数,做同样的事情,但只是不同的目标组和不同的容器端口。有没有办法使用 lambda 函数可以利用的某种全局变量?
    猜你喜欢
    • 2020-07-23
    • 2020-08-13
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-18
    • 2019-08-15
    相关资源
    最近更新 更多