前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Traefik-v2.x快速入门 顶

Traefik-v2.x快速入门 顶

作者头像
BGBiao
发布于 2019-09-29 09:21:58
发布于 2019-09-29 09:21:58
1.1K00
代码可运行
举报
文章被收录于专栏:容器云生态容器云生态
运行总次数:0
代码可运行

Traefik v2.0 快速入门

traefik官方文档

注意:Traefikv2.0之后的版本在修改了很多bug之后也增加了新的特性,比如增加了TCP的支持,并且更换了新的WEB UI界面

使用docker-compose来快速启动traefki实例.
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看编辑好的docker-compose配置文件
$ cat traefik-v2.0.yaml
version: '3'
services:
  reverse-proxy:
    image: traefik:2.0.1
    # Enables the web UI and tells Traefik to listen to docker
    # 启用webUI 并告诉Traefile去监听docker的容器实例
    command: --api.insecure=true --providers.docker
    ports:
      # traefik暴露的http端口
      - "80:80"
      # webUI暴露的端口(必须制定--api.insecure=true才可以访问)
      - "8080:8080"
    volumes:
      # 指定docker的sock文件来让traefik获取docker的事件,从而实现动态负载均衡
      - /var/run/docker.sock:/var/run/docker.sock


# 使用docker-compose创建集群
$ docker-compose -f traefik-v2.0.yaml up -d reverse-proxy
Creating 20190927_reverse-proxy_1 ... done

# 查看使用docker-compose启动的应用
$ docker-compose -f traefik-v2.0.yaml ps
          Name                        Command               State                     Ports
--------------------------------------------------------------------------------------------------------------
20190927_reverse-proxy_1   /entrypoint.sh --api.insec ...   Up      0.0.0.0:80->80/tcp, 0.0.0.0:8080->8080/tcp

# 直接访问traefik对外暴露的http接口
curl -s   "http://localhost:8080/api/rawdata" | python -m json.tool
{
    "routers": {
        "reverse-proxy-20190927@docker": {
            "rule": "Host(`reverse-proxy-20190927`)",
            "service": "reverse-proxy-20190927",
            "status": "enabled",
            "using": [
                "http",
                "traefik"
            ]
        }
    },
    "services": {
        "reverse-proxy-20190927@docker": {
            "loadBalancer": {
                "passHostHeader": true,
                "servers": [
                    {
                        "url": "http://172.21.0.2:80"
                    }
                ]
            },
            "serverStatus": {
                "http://172.21.0.2:80": "UP"
            },
            "status": "enabled",
            "usedBy": [
                "reverse-proxy-20190927@docker"
            ]
        }
    }
}

查看Traefik官方Dashboard:

Traefik来检测新服务并为你创建一个路由
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 创建一个新服务
$ cat test-service.yaml
version: '3'
services:
  whoami:
    image: containous/whoami
    labels:
      - "traefik.http.routers.whoami.rule=Host(`whoami.docker.localhost`)"

# 创建服务
$ docker-compose  -f test-service.yaml up -d whoami
Pulling whoami (containous/whoami:)...
latest: Pulling from containous/whoami
6f3614cb05a5: Pull complete

# 查看新创建的服务
$ docker-compose  -f test-service.yaml ps
      Name          Command   State   Ports
--------------------------------------------
20190927_whoami_1   /whoami   Up      80/tcp

# 再次查看traefik中的路由信息(就会发现服务自动加载进去了)
# 其实有点儿类似kong 的路由,只是traefik会自动监听docker的事件
$ curl -s   "http://localhost:8080/api/rawdata" | python -m json.tool
{
    "routers": {
        "reverse-proxy-20190927@docker": {
            "rule": "Host(`reverse-proxy-20190927`)",
            "service": "reverse-proxy-20190927",
            "status": "enabled",
            "using": [
                "http",
                "traefik"
            ]
        },
        "whoami@docker": {
            "rule": "Host(`whoami.docker.localhost`)",
            "service": "whoami-20190927",
            "status": "enabled",
            "using": [
                "http",
                "traefik"
            ]
        }
    },
    "services": {
        "reverse-proxy-20190927@docker": {
            "loadBalancer": {
                "passHostHeader": true,
                "servers": [
                    {
                        "url": "http://172.21.0.2:80"
                    }
                ]
            },
            "serverStatus": {
                "http://172.21.0.2:80": "UP"
            },
            "status": "enabled",
            "usedBy": [
                "reverse-proxy-20190927@docker"
            ]
        },
        "whoami-20190927@docker": {
            "loadBalancer": {
                "passHostHeader": true,
                "servers": [
                    {
                        "url": "http://172.21.0.3:80"
                    }
                ]
            },
            "serverStatus": {
                "http://172.21.0.3:80": "UP"
            },
            "status": "enabled",
            "usedBy": [
                "whoami@docker"
            ]
        }
    }
}

查看Traefik中的http反向代理记录:

测试traefik相关功能
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 测试访问
$ curl -H Host:whoami.docker.localhost http://localhost
Hostname: f1b280a61fa7
IP: 127.0.0.1
IP: 172.21.0.3
RemoteAddr: 172.21.0.2:44604
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.54.0
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.21.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: bf98c245d265
X-Real-Ip: 172.21.0.1

# 单机扩容
$ docker-compose -f test-service.yaml up -d --scale whoami=2

# 再次访问(就会发现自动负载到两个不同的实例上去了)
$ curl -H Host:whoami.docker.localhost http://localhost
Hostname: 3045eb2f3a89
IP: 127.0.0.1
IP: 172.21.0.4
RemoteAddr: 172.21.0.2:55182
GET / HTTP/1.1
Host: whoami.docker.localhost
User-Agent: curl/7.54.0
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 172.21.0.1
X-Forwarded-Host: whoami.docker.localhost
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: bf98c245d265
X-Real-Ip: 172.21.0.1

查看Traefike后端每个service的详情信息:

Traefik配置介绍

traefik配置结构图:

在traefik中的配置,会涉及到两方面内容:

  • 动态的路由配置(即由k8s-api或docker相关api来自动发现服务的endpoint而进行路由的配置描述)
  • 静态的启动配置(即traefik标准的启动配置参数)

注意:使用docker run traefik[:version] --help可查看traefik的配置参数

在k8s集群中部署traefik-v2.0.1
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$ kubectl apply -f https://github.com/BGBiao/k8s-ansible-playbooks/blob/master/manifest/traefik/traefik-ds-v2.0.1.yaml

$ kubectl get pods  -n kube-system   | grep traefik-ingress-controller-v2
traefik-ingress-controller-v2-54h54   1/1     Running   0          29m
traefik-ingress-controller-v2-lh2jg   1/1     Running   0          29m
traefik-ingress-controller-v2-tqbvd   1/1     Running   0          29m
traefik-ingress-controller-v2-ww449   1/1     Running   0          29m

$ kubectl --kubeconfig ../../files/kubelet.kubeconfig get svc -n kube-system  | grep v2
traefik-ingress-service-v2   ClusterIP   10.253.86.121   <none>        81/TCP,8081/TCP          30m

查看traefik-v2.0.1的dashboard:

注意:虽然traefikv2.x改动了很多,但是还是向下兼容一些内容的,比如我重新创建traefik-v2.0.1之后,之前创建的ingress规则会自动导入

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Traefik-v2.x快速入门
traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点
py3study
2020/04/16
4K1
你所不了解的 Traefik
在之前的文章中,我们简单介绍了关于 Traefik 的相关概念及组件原理机制,具体可参考:为什么选择 Traefik Ingress ?
Luga Lee
2021/11/18
9671
你所不了解的 Traefik
Traefik入门
traefik 与 nginx 一样,是一款优秀的反向代理工具,或者叫 Edge Router。至于使用它的原因则基于以下几点
码客说
2021/03/02
1.1K0
Traefik入门
【前端部署第八篇】准备部署至服务器,服务发现与服务网关搭建
大家好,我是山月,这是我最近新开的专栏:「前端部署系列」。包括 Docker、CICD 等内容,大纲图示如下:
山月
2022/05/23
5810
【前端部署第八篇】准备部署至服务器,服务发现与服务网关搭建
一文搞定快速使用 Docker Compose 玩转 Traefik v2
Traefik 和 containers(容器)需要在同一网络上。Compose 会自动创建一个,但事实是隐藏的,以后可能会发生混乱。最好仅创建自己的网络并将其设置为每个 compose 文件中的默认网络。
为少
2021/05/27
6.9K0
一文搞定快速使用 Docker Compose 玩转 Traefik v2
使用 K3s 和 Traefik 创建本地开发集群
完整的 Kubernetes 集群往往非常复杂,需要较高的资源,往往我们在开发期间需要一个完整的 Kubernetes 来运行我们的应用,但是并不要求达到生产级别的集群,本文我们将探讨几种本地轻松配置 Kubernetes 集群的方法。
我是阳明
2020/11/03
2.2K0
使用 K3s 和 Traefik 创建本地开发集群
在 Traefik 中使用 Kubernetes Gateway API
Gateway API(之前叫 Service API)是由 SIG-NETWORK 社区管理的开源项目,项目地址:https://gateway-api.sigs.k8s.io/。主要原因是 Ingress 资源对象不能很好的满足网络需求,很多场景下 Ingress 控制器都需要通过定义 annotations 或者 crd 来进行功能扩展,这对于使用标准和支持是非常不利的,新推出的 Gateway API 旨在通过可扩展的面向角色的接口来增强服务网络。
我是阳明
2022/02/11
1.5K0
在 Traefik 中使用 Kubernetes Gateway API
通过 Traefik 使用 Kubernetes Service APIs 进行流量路由
前面我们已经介绍了 Kubernetes 社区内部为 Kubernetes 开发了一种改进的定义和管理入口流量的新接口,也就是新的 Kubernetes Service APIs。Traefik 在2.4 版本中引入了对 Service APIs 的初始支持。本文我们将演示如何通过 Traefik 来使用新的 Gateway、GatewayClass 和 HTTPRoute API 将请求路由到后端的服务 Pod。
我是阳明
2021/03/01
1.2K0
使用 compose 管理及编排容器
当我们通过了解 docker 简易入门 本篇文章后,想必此时我们已经可以基于 nginx 镜像创建一个最简单的容器:启动一个最简单的 http 服务
山月
2020/06/18
4580
能更好集成容器的反向代理工具Traefik的简单使用
Traefik 与 Nginx 一样,也是一款优秀的反向代理工具,使用 go 语言开发,本文将介绍怎样用 Traefik 来实现多服务转发的需求。
oec2003
2024/04/03
5090
能更好集成容器的反向代理工具Traefik的简单使用
Traefik2.3.x 使用大全(更新版)
Traefik 是一个开源的可以使服务发布变得轻松有趣的边缘路由器。它负责接收你系统的请求,然后使用合适的组件来对这些请求进行处理。
我是阳明
2021/01/04
5.3K0
Traefik2.3.x 使用大全(更新版)
​Traefik 2 基础授权验证(后篇)
上篇文章中,我们提到了 Traefik 的 Forward Auth,本篇内容我们来展开聊聊如何使用它。
soulteary
2020/12/02
1K0
在 Traefik Proxy 2.5 中使用/开发私有插件(Traefik 官方博客)
Traefik Proxy 在设计上是一个模块化路由器,允许您将中间件放入您的路由中,并在请求到达预期的后端服务目的地之前对其进行修改。Traefik 内置了许多这样的中间件,还允许您以插件的形式加载自己的中间件。
为少
2022/09/02
1.1K0
在 Traefik Proxy 2.5 中使用/开发私有插件(Traefik 官方博客)
Nginx No, Traefik Yes
As we all know, Nginx is a very popular reverse proxy server. It is very stable and has a lot of features. But I choose Traefik instead of Nginx as a reverse proxy in test environment since it is more suitable for my use case. In this post, I will explain why I choose Traefik instead of Nginx.
newbe36524
2023/08/23
2490
Kubernetes (K8S)中Traefik路由(ingressRoute)
kubernetes 中使用 Traefik ingress 的 ingressRoute 代理 http、https、tcp、udp。
王先森sec
2023/10/17
2.7K0
Kubernetes (K8S)中Traefik路由(ingressRoute)
traefik 结合 docker-compose 的快速安装及使用
用其搭配 docker-compose 部署网站,可轻松绑定域名,设置 https , 负载均衡,已在多个项目使用,文档可靠,强烈推荐!
易墨
2019/02/21
3.6K0
配置基于Traefik v2的 Web 服务器
本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)
soulteary
2020/02/02
1.7K0
配置基于Traefik v2的 Web 服务器
云计算运维一步步编译安装Kubernetes之插件安装
Flannel是 CoreOS 团队针对 Kubernetes 设计的一个覆盖网络(Overlay Network)工具,其目的在于帮助每一个使用 Kuberentes 的 CoreOS 主机拥有一个完整的子网。这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。
王先森sec
2023/04/24
4680
云计算运维一步步编译安装Kubernetes之插件安装
Traefik 2 使用指南,愉悦的开发体验
本文使用「署名 4.0 国际 (CC BY 4.0)」许可协议,欢迎转载、或重新修改使用,但需要注明来源。 署名 4.0 国际 (CC BY 4.0)
soulteary
2020/01/28
1.6K0
TKE之Traefik最佳实践
k8s的接入层有很多种,常见的7层负载均衡有nginx-ingress、traefik、kong等,还有每个云厂商为了对接自己的负载均衡产品所开发的控制器,tke集群现在默认是clb类型ingress,也支持组件安装nginx-ingress到集群内使用,其他类型的网关,需要自己在集群内部署才行,今天我们讲讲traefik在tke上的部署安装和一些使用实践。
聂伟星
2022/03/18
2.4K0
相关推荐
Traefik-v2.x快速入门
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验