整合 Envoy 与 Consul 以进行服务发现

整合 Envoy 与 Consul 以进行服务发现

编辑 - 是否有可能实现它或者我应该研究其他的东西?

如何将 Envoy 与 Consul 集成以实现自动服务发现和路由?我在 Docker 中运行容器,每个容器都在运行时向 Consul 注册。

我的docker-compose文件看起来像这样。

version: '3'

services:

  consul:
    image: consul:1.6
    container_name: consul
    ports:
      - 8300:8300
      - 8400:8400
      - 8500:8500

  envoy:
    container_name: envoy
    build:
      context: ./envoy
      dockerfile: Dockerfile
    ports:
      - 10000:10000

  user:
    container_name: user
    build:
      context: ./user
      dockerfile: Dockerfile

假设用户已注册到 consul,其 IDfoo在端口上运行80,并且对 envoy 代理的请求如下http://localhost:10000/user


特使/特使.yaml

admin:
  access_log_path: /tmp/admin_access.log
  address:
    socket_address: { address: 0.0.0.0, port_value: 9901 }

答案1

我们必须决定 Nginx 的替代方案(使用 consul-template),并且我们的列表中也有 envoy,但最终决定使用 Traefik.io。

我们仍然使用 consul-template 来呈现配置,但这样做的原因在于我们的特殊服务设置。

我们不想仅为 Envoy 引入一个新的抽象层 -> traefik

相关内容