adtop
当前位置: 首页 > 手机

如何使用Traefik反向代理将流量路由到Docker容器

作者:如思    来源:网易   发布时间:2022-04-13 18:46   阅读量:15951   

Traefik 是领先的反向代理和负载均衡器,适用于云原生操作和容器化工作负载它充当将您的服务发布到互联网的边缘路由器

如何使用Traefik反向代理将流量路由到Docker容器

Traefik 通过匹配请求属性将请求路由到您的容器该代理包含自动服务发现,因此您可以实时添加新容器,而无需重新启动 Traefik 服务

在本指南中,我们将整理一个简单的 Traefik v2 部署,它将发布多个 Docker 容器这使您可以使用一个 Docker 安装在同一个端口上提供多个服务,例如 Web 应用程序,API 和管理面板

入门

使用自己的 Docker 映像部署 Traefik 是最简单的在本指南的其余部分,我们将假设您使用 Docker 运行 Traefik如果您希望 Traefik 位于 Docker 安装之外,则可以使用单文件二进制文件作为替代选项

在开始使用 Traefik 之前,您必须创建一个配置文件。将以下内容添加到文件中——我们将在下面解释它的作用:

traefik.toml

在此示例中,我们保持简单并使用提供程序这会监控主机上运行的 Docker 容器当一个带有 Traefik 特定标签的新容器出现时,这些值将用于设置到该容器的路由容器需要连接到Docker 网络才能正常工作,因为这是配置文件中指定的网络

docker

traefik

docker网络创建traefik

启动 Traefik

现在你已经准备好开始 Traefik 了!使用 Traefik 映像部署一个新容器将端口 80 和 443 绑定到您的主机,允许 Traefik 侦听传入请求您还应该将容器加入之前创建的网络

traefik

将主机的 Docker 套接字挂载到带有标志的 Traefik 容器中这使 Traefik 能够访问在您的主机上运行的其他容器,从而通过您的配置文件中设置的提供程序自动检测路由配置文件本身安装在 Traefik 容器内

—v

docker

/traefik.toml

码头工人运行—d —p 80:80 —p 443:443 —v $PWD/traefik.toml:/traefik.toml —v /var/run/docker.sock:/var/run/docker.sock ——name traefik ——网络交易 交易:2.6

接下来启动几个容器来测试 Traefik 是否正常工作:

确保您已添加 DNS 记录并将该映射映射到您的 Traefik 主机您应该能够在浏览器中访问这些域,以分别查看默认的 Apache 和 NGINX 登录页面这两个容器加入了 Traefik 网络,它们的标签设置了基本路由,通过它们的标头值匹配传入请求

Host

路由流量

Traefik 还支持允许您在请求到达您的服务之前修改请求的中间件您可能希望在代理级别添加前缀,调整标头或应用基本身份验证

Headers

X—Proxied—By

Traefik 将流量路由到容器的暴露端口您可以通过设置标签来指定不同的端口

.loadbalancer.server.port=8080

添加 SSL

接下来,您应该添加 SSL 以确保您的流量受到完全保护Traefik 包含Let's Encrypt集成,因此我们现在将使用它来自动生成证书

将以下部分添加到您的文件中:

traefik.toml

这将 Traefik 配置为在解析证书请求时使用 Let's Encrypt ACME 提供程序确保将电子邮件地址替换为您自己的电子邮件地址,以便您收到 Let's Encrypt 发送的任何证书到期提醒该部分定义了如何进行认证验证,将其留空将使用提供唯一文件的默认流程,Let's Encrypt 将在证书颁发期间请求和验证

tlsChallenge

重新启动或更换 Traefik 容器以应用新配置您还应该在容器内挂载一个新文件——Traefik 将使用它来存储证书

/acme.json

码头工人运行—d —p 80:80 —p 443:443 —v $PWD/acme.json:/acme.json —v $PWD/traefik.toml:/traefik.toml —v /var/run/docker.sock:/var/run/docker.sock ——name traefik ——网络交易 交易:2.6

使用仪表板

Traefik 包含一个 Web UI,它提供了部署中活动的端点,提供程序和服务的图形视图您可以通过在配置文件中为其设置路由来公开 UI

首先使用以下部分修改您现有的:

traefik.toml

仪表板=真 文件名 = "/traefik_dashboard.toml"

接下来使用以下内容创建:

traefik_dashboard.toml

需要新文件,因为 Traefik 不支持动态配置以及 main 中的静态值仪表板配置文件手动定义映射到内部 Web UI 服务的路由添加到的行向提供者注册新的路由定义

traefik.toml

providers.file

traefik.toml

file

htpasswd

users

dashboard_auth

sudo apt install apache2—utilshtpasswd —nb 管理员 your_password# 输出管理员:$123...

现在使用更新的配置重新启动 Traefik,记住也要挂载新文件:

traefik_dashboard.toml

码头工人运行—d —p 80:80 —p 443:443 —v $PWD/acme.json:/acme.json —v $PWD/traefik.toml:/traefik.toml —v $PWD/traefik_dashboard.toml:/traefik_dashboard.toml —v /var/run/docker.sock:/var/run/docker.sock ——name traefik ——网络交易 交易:2.6

您应该能够通过在浏览器中访问来访问仪表板如果您不想将 Web UI 公开为路由并始终从本地计算机访问它,则可以改为在 Traefik 容器上发布端口

8080

traefik.toml

仪表板=真 不安全=真

码头工人运行—d —p 8080:8080 —p 80:80 —p 443:443 —v $PWD/acme.json:/acme.json —v $PWD/traefik.toml:/traefik.toml —v /var/run/docker.sock:/var/run/docker.sock ——name traefik ——网络交易 交易:2.6

这将允许您通过 访问仪表板这种方法不应该用于安全的生产环境,但可以更快地设置本地实验

结论

Traefik 是适用于您的容器的多功能反向代理解决方案在本文中,我们仅介绍了其最基本的功能除了与 Docker 的基本使用外,Traefik还与领先的容器编排解决方案一起使用,包括Kubernetes,Docker Swarm和 Mesos

Traefik 提供 REST API 以及Prometheus,InfluxDB,Datadog 和 Statsd 可以理解的格式的指标这些功能使您可以将 Traefik 部署与堆栈中的其他基础设施组件一起自动化和检测这是在不使用完整编排解决方案的情况下向世界发布容器化工作负载的理想方式

郑重声明:此文内容为本网站转载企业宣传资讯,目的在于传播更多信息,与本站立场无关。仅供读者参考,并请自行核实相关内容。

adl03