我应该如何在 ECS 上设置 Traefik?

How should I setup Traefik on ECS?

简而言之

我已经设法 运行 Traefik 在本地和 AWS ECS 但现在我想知道我应该如何设置某种负载平衡以使我的两个服务具有随机性public.

可用的 IP

我当前在 ECS 上的设置

[Internet]
    |
[Load balancer on port 443 + ALB Security group on 443]
    |
[Target group on port 443 + Security group from *any* port]
    |
[cluster]
    |
[service1 container ports "0:5000"]

虽然这可行,但我现在想添加另一个容器,例如。 service2 也有随机端口,例如 0:8000。这就是为什么我需要像 Traefik.

这样的东西

我做了什么

这是 Toml 文件:

[api]

address = ":8080"

[ecs]

clusters = ["my-cluster"]
watch = true

domain = "mydomain.com"

region = "eu-central-1"
accessKeyID = "AKIA..."
secretAccessKey = "..."

我还在 /etc/hosts 中添加了主机条目:

127.0.0.1 service1.mydomain.com 127.0.0.1 service2.mydomain.com

和容器上的相关标签,我可以 curl service1.mydomain.com/status 得到一个 200

现在我的最后一点就是以下问题:

AWS ALB 与 AWS 网络 LB 取决于您希望谁来处理 SSL。

  • 如果你有一个通配符证书,并且你所有的服务都是同一个域的子域,ALB 可能是一个不错的选择

  • 如果你想使用Let's encrypt with traefik Network LB可能是更好的选择

在这两种情况下,您的设置将如下所示:

    [Internet]
        |
      [LB]
        |
    [Target group]
        |
    [Traefik]
    |       |
[service1] [service2]

在这两种情况下,最简单的方法是让 traefik ecs 服务自动注册到目标组。

这可以在服务创建时完成(网络配置部分),以后不能完成。 Link to documentation

Screen of configuration console