【问题标题】:traefik - expose secondary internal port via new subdomaintraefik - 通过新子域公开辅助内部端口
【发布时间】:2021-10-23 21:43:39
【问题描述】:

我编写了一个侦听两个端口的 .NET API 应用程序:

  • 5000 用于常规 HTTP 请求 (HTTP1)
  • 5001 用于 gRPC (HTTP2)

我正在使用标签通过docker-compose 部署我的图像:

labels:
  - "traefik.enable=true"
  - "traefik.http.routers.myApi.rule=Host(`api.example.com`)"
  - "traefik.http.routers.myApientrypoints=websecure"
  - "traefik.http.routers.myApitls.certresolver=myresolver"

现在,我的问题是 - 如果我的容器 EXPOSE 为 5000 和 5001,我该如何设置一个新的子域,以便我可以允许常规网络流量以及 gRPC

这样:

HTTP1 https://api.example.com -> container:5000
HTTP2 https://api-grpc.example.com -> container:5001

如果有更好的方法来达到同样的效果,请告诉我。由于严格的HTTP2 要求,我不能让gRPC 在与网络流量相同的端口上侦听,我宁愿不使用gRPC-web

【问题讨论】:

    标签: docker docker-compose traefik


    【解决方案1】:
    labels:
      - traefik.http.routers.http-router.rule=Host(`api.example.com`)
      - traefik.http.routers.http-router.service=http-service
      - traefik.http.services.http-service.loadbalancer.server.port=5000
      - traefik.http.routers.grpc-router.rule=Host(`api-grpc.example.com`)
      - traefik.http.routers.grpc-router.service=grpc-service
      - traefik.http.services.grpc-service.loadbalancer.server.port=5001
      - traefik.http.services.grpc-service.loadbalancer.server.scheme=h2c
    

    参考:Specifying more than one router and service per container

    【讨论】:

    • 可爱而简洁的答案,谢谢!只是缺少一个“traefik.http.services.grpc-service.loadbalancer.server.scheme=h2c”,现在它可以工作了!
    • @TroelsLarsen 太棒了!我会添加这个来回答
    猜你喜欢
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 1970-01-01
    • 2019-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多