首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Traefik,动态路由到ECS后端,作为一次性任务运行

Traefik,动态路由到ECS后端,作为一次性任务运行
EN

Stack Overflow用户
提问于 2020-04-09 01:57:35
回答 1查看 377关注 0票数 1

我正在尝试实现反向代理服务的解决方案,使用Traefik v1 (1.7)和ECS一次性任务作为后端,作为described in this SO question。应通过动态路由-对/user/1234/*路径的请求应转至ECS任务,并使用适当的docker标签运行:

代码语言:javascript
运行
复制
  docker_labels = {
    traefik.frontend.rule = "Path:/user/1234"
    traefik.backend       = "trax1"
    traefik.enable        = "true"
  }

到目前为止,这个设置运行得很好,但是我需要为每个正在运行的任务创建一个ECS任务定义,因为docker标签是ECS TaskDefinition的属性,而不是ECS任务本身。在任务键/值属性中,是否可以只创建一个TaskDefinition并在ECS任务标签中传递Traefik规则?

这将需要在Traefik源代码中进行一些修改,是否还有其他我错过的可用选项或实现方式,如API Gateway或Lambda@Edge?我没有使用这些技术的经验,现实世界的例子更受欢迎。

EN

Stack Overflow用户

发布于 2020-04-11 22:29:52

通过使用Traefik REST API提供程序解决。运行一次性任务的外部组件可以通过backends部分中的配对traefik.frontend.rule = "Path:/user/1234"和任务内部IP:port值来发现任务内部IP并动态更新Traefik配置

应首先从/api/providers/rest端点GET Traefik配置,删除或添加相应的部分(如果任务已停止或启动),并通过PUT方法将Traefik配置更新到同一端点。

代码语言:javascript
运行
复制
{
  "backends": {
    "backend-serv1": {
      "servers": {
        "server-service-serv-test1-serv-test-4ca02d28c79b": {
          "url": "http://172.16.0.5:32793"
        }
      }
    },
    "backend-serv2": {
      "servers": {
        "server-service-serv-test2-serv-test-279c0ba1959b": {
          "url": "http://172.16.0.5:32792"
        }
      }
    }
  },
  "frontends": {
    "frontend-serv1": {
      "entryPoints": [
        "http"
      ],
      "backend": "backend-serv1",
      "routes": {
        "route-frontend-serv1": {
          "rule": "Path:/user/1234"
        }
      }
    },
    "frontend-serv2": {
      "entryPoints": [
        "http"
      ],
      "backend": "backend-serv2",
      "routes": {
        "route-frontend-serv2": {
          "rule": "Path:/user/5678"
        }
      }
    }
  }
}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61107013

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档