Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Traefik 2.0 Now GA! Traefik V2真正来了!

Traefik 2.0 Now GA! Traefik V2真正来了!

作者头像
用户3013098
发布于 2022-05-31 12:54:34
发布于 2022-05-31 12:54:34
57800
代码可运行
举报
运行总次数:0
代码可运行

没错,Traefik V2已经GA了,代表着Traefik v2已经在生产环境使用。进入官网https://traefik.io/ ,可以看到醒目的Traefik 2.0 Now GA。

相较于Traefik v1,v2版本已经更新了很多特性,增加了许多新功能,特别是令人期待的TCP和k8s CRD功能。接下来我们就来探索下 Traefik 2.0 中有哪些新增的功能呢?

01 Frontends && Backends are dead

Frontends and Backends Are Dead... ... Long Live Routers, Middlewares, and Services

没错,Frontends 与 Backends 已经被去掉,无法使用,取代它们的将是Routers,Middlewares和Services:routers替代frontends,services替代backends,routers使用middlewares。来看下v1与v2 k8s ingress的前后使用区别:

V1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: traefik
  namespace: kube-system
  annotations:
    kubernetes.io/ingress.class: traefik
    traefik.ingress.kubernetes.io/rule-type: PathPrefix
spec:
  rules:
  - host: test.locahost
    http:
      paths:
      - path: /test
        backend:
          serviceName: server0
          servicePort: 80
      - path: /test
        backend:
          serviceName: server1
          servicePort: 80

V2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: basicauth
  namespace: foo

spec:
  basicAuth:
    users:
      - test:$apr1$H6uskkkW$IgXLP6ewTrSuBkTrqE8wj/
      - test2:$apr1$d9hr9HBB$4HxwgUir3HP4EsggP/QNo0

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - http
  routes:
  - match: Host(`test.localhost`) && PathPrefix(`/test`)
    kind: Rule
    services:
    - name: server0
      port: 80
    - name: server1
      port: 80
    middlewares:
    - name: basicauth
      namespace: foo

可以看到,通过kubernetesCRD,traefik可以使用IngressRoute功能,并且v2跟v1的使用有很大的差异,说之为完全不一样的两个也不为过。

02 TLS

TLS configuration is now dynamic, per router.

TLS不再固定,从而将变成可以被routers引用的动态配置。

V1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# static configuration
[entryPoints]
  [entryPoints.web-secure]
    address = ":443"

    [entryPoints.web-secure.tls]
      minVersion = "VersionTLS12"
      cipherSuites = [
        "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256",
        "TLS_RSA_WITH_AES_256_GCM_SHA384"
       ]
      [[entryPoints.web-secure.tls.certificates]]
        certFile = "path/to/my.cert"
        keyFile = "path/to/my.key"

V2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# The definitions below require the definitions for the TLSOption and IngressRoute kinds.  
# https://docs.traefik.io/v2.0/providers/kubernetes-crd/#traefik-ingressroute-definition
apiVersion: traefik.containo.us/v1alpha1
kind: TLSOption
metadata:
  name: mytlsoption
  namespace: default

spec:
  minVersion: VersionTLS13
  cipherSuites:
    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    - TLS_RSA_WITH_AES_256_GCM_SHA384

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroutebar

spec:
  entryPoints:
    - web
  routes:
    - match: Host(`bar.com`)
      kind: Rule
      services:
        - name: whoami
          port: 80
  tls:
    options: 
      name: mytlsoption
      namespace: default

03 HTTP && HTTPS

HTTP to HTTPS Redirection is now configured on Routers

HTTPS现在已经可以在routers里面使用middlewares配置HTTP跳转了。

V1

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# static configuration
defaultEntryPoints = ["http", "https"]

[entryPoints]
  [entryPoints.http]
    address = ":80"
    [entryPoints.http.redirect]
      entryPoint = "https"

  [entryPoints.https]
    address = ":443"
    [entryPoints.https.tls]
      [[entryPoints.https.tls.certificates]]
        certFile = "examples/traefik.crt"
        keyFile = "examples/traefik.key"

V2

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##K8S IngressRoute
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: http-redirect-ingressRoute

spec:
  entryPoints:
    - web
  routes:
    - match: Host(`foo.com`)
      kind: Rule
      services:
        - name: whoami
          port: 80
      middlewares:
        - name: redirect

---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: https-ingressRoute

spec:
  entryPoints:
    - web-secure
  routes:
    - match: Host(`foo`)
      kind: Rule
      services:
        - name: whoami
          port: 80
  tls: {}

---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: redirect
spec:
  redirectScheme:
    scheme: https

04 TCP

Traefik v2不再单单仅支持7层负载,现在已经可以支持4层负载,支持TCP。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp:
  services:
    app:
      weighted:
        services:
        - name: appv1
          weight: 3
        - name: appv2
          weight: 1

    appv1:
      loadBalancer:
        servers:
        - address: "xxx.xxx.xxx.xxx:8080"

    appv2:
      loadBalancer:
        servers:
        - address: "xxx.xxx.xxx.xxx:8080"

TCP与HTTP同时使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tcp:
  routers:
    to-db-1:
      entrypoints:
      - web-secure
      rule: "HostSNI(`db1.domain`)"
      service: "db-1"
      tls: {}
http:
  routers:
    to-db1-dashboard:
      entrypoints:
      - web-secure
      rule: "Host(`dashboard.db1.domain`)"
      service: "db1-dashboard"
      tls: {}

上面这个示例中, dashboard.db1.domain 上的 HTTP 请求将路由数据库的 Dashboard 服务上,而上面的 db1.domain 上的 TCP 请求将路由到数据库上面去。So cool!

另外,v2版本还支持Metrics、Tracing...新版本的功能真是令人期待啊,下次作者将更新v2版本的实操--从v1版本升级到v2版本,大家敬请期待...

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 devops运维先行者 微信公众号,前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【OpenCV】Chapter2.图像的数值运算
OpenCV的cv2.add()对两张相同大小和类型的图像进行加法运算,或对一张图像与一个标量进行加法运算。 下面这段程序比较了OpenCV 加法和Numpy直接相加的区别。 需要注意的是,常见RGB图像的颜色空间是8位,即RGB数值范围为0—255。cv2.add() 是饱和运算(相加后如大于255则结果为255),而Numpy加法是模运算,即超出255之后,除以255的余数作为数值。
zstar
2022/09/22
1K0
【OpenCV】Chapter2.图像的数值运算
【CV 向】OpenCV 图形绘制指南
Python OpenCV 是一个功能强大的计算机视觉库,除了图像处理和计算机视觉任务外,它还提供了丰富的功能来绘制各种图形。无论是在计算机视觉应用中标记感兴趣区域,还是在图像上绘制几何形状或文本,OpenCV 都为我们提供了简单易用的方法。本文将介绍如何利用 Python OpenCV 进行图形绘制。
繁依Fanyi
2023/10/12
7980
【CV 向】OpenCV 图形绘制指南
[Python图像处理] 二.OpenCV和Numpy读取修改像素、几何图形绘制
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门、OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子、图像增强技术、图像分割等,后期结合深度学习研究图像识别、图像分类应用。希望文章对您有所帮助,如果有不足之处,还请海涵~
Eastmount
2021/12/02
2.6K0
[Python图像处理] 二.OpenCV和Numpy读取修改像素、几何图形绘制
OpenCV 处理中文路径、绘制中文文字的烦恼,这里通通帮你解决!
在 OpenCV 中,由于编码的缘故,对于中文的处理并不是很友好,比如中文路径的图片读取和写入以及在图片上绘制中文文字等,这几个问题都是笔者经常遇到的,本文列出这几个问题的解决办法,希望能够帮助到大家。
机器视觉CV
2020/07/23
9.1K0
OpenCV 处理中文路径、绘制中文文字的烦恼,这里通通帮你解决!
Python OpenCV与中文相关的三个常见问题
--------------------------------------------------------------------------
Color Space
2020/05/19
3.9K0
OpenCV学习笔记(Python)
警告: 就算图像的路径是错的, OpenCV 也不会提醒你的,但是当你使用命 令print img时得到的结果是None。
一点儿也不潇洒
2018/08/07
3.8K0
OpenCV学习笔记(Python)
Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
本机使用python 2.7.10下调试代码均通过,一下学习需要有一定的代码阅读能力,一下学习只介绍函数方法:
狼啸风云
2020/12/18
6.2K0
Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()
文字载体图像
算法:文字载体图像是为了更好地检测出人脸,在图像上绘制不同颜色和大小等特性的文字的基础操作。除此之外,还有绘制直线、矩形、圆、椭圆等多种几何图形,并且可以在图像中的指定位置添加文字说明。
裴来凡
2022/05/28
1K0
文字载体图像
OpenCV 系列教程1 | OpenCV 的 GUI 特性
Matplotlib是一个用于Python的绘图库,它提供了多种绘图方法。在这里,将学习如何使用 Matplotlib 显示图像。可以使用 Matplotlib 放大图片,保存图片等。
机器视觉CV
2019/07/15
3.7K0
OpenCV 系列教程1 | OpenCV 的 GUI 特性
OpenCV4.2图像修复重建函数体验---鸡肋
上次看到OpenCV4.2的changelog之后一直想尝试一下新的图像修复重建功能,看下面显示的结果很不错,想试试是否真的如此好用。
Color Space
2020/05/19
8050
OpenCV实现人脸检测和68点定位
考虑到免费开源,OpenCV 就可以很好的实现这个功能。 这里使用OpenCV提供好的人脸分类模型xml:haarcascade_frontalface_alt_tree.xml。 同时利用Dlib官方给的人脸识别预测器“shape_predictor_68_face_landmarks.dat”进行68点标定(利用OpenCV进行图像化处理,在人脸上画出68个点,并标明序号)。
荣仔_最靓的仔
2021/02/02
4.9K1
OpenCV实现人脸检测和68点定位
opencv-python 基本例子3个
其中的内容均参考自官网的说明: http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_tutorials.html
py3study
2020/01/09
1.2K0
opencv-python 基本例子3个
Python-OpenCV 处理图像(一):基本操作
第一种方式使用cv2.cv的LoadImage、ShowImage和SaveImage函数
bear_fish
2018/09/19
1.9K0
Python-OpenCV(1)
本文介绍了如何使用Python和OpenCV库进行数字图像处理,包括图像的读取、显示、保存以及基本的图像处理操作,如直线、圆、矩形、椭圆的绘制,还有文字输入等。此外,还介绍了OpenCV中的绘图函数,包括直线、圆、矩形、椭圆等基本形状的绘制,以及输入文字的操作。
GavinZhou
2018/01/02
1.3K0
Python-OpenCV(1)
计算机视觉:2.6~4.5 颜色空间、数据结构与绘图
最常见的色彩空间就是RGB,人眼也是基于RGB的色彩空间去分辨颜色的。 OpenCV默认使用的是BGR。BGR和RGB色彩空间的区别在于图片在色彩通道上的排列顺序不同。
DioxideCN
2022/08/05
1.1K0
计算机视觉:2.6~4.5 颜色空间、数据结构与绘图
[python opencv 计算机视觉零基础到实战] 十八、用鼠标进行画画
putText方法接收图像,文字内容, 坐标 ,字体,大小,颜色,字体厚度这几个参数,我们用中文的函数原型说明如下:
1_bit
2022/01/06
1.3K0
[python opencv 计算机视觉零基础到实战] 十八、用鼠标进行画画
Halcon缺陷检测实例转OpenCV实现(一)
Halcon中对应的例子为novelty_detection_dyn_threshold.hdev,如下:
Color Space
2020/12/08
1.4K0
open-CV的初步学习
注意:在调用显示图像的API后,要调用cv.waitKey()给图像绘制留下时间,否则窗口会出现无响应情况,并且图像无法显示出来。
shaoshaossm
2022/12/26
7610
open-CV的初步学习
opencv︱图片与视频的读入、显示、写出、放缩与基本绘图函数介绍
opencv中读入、显示、写出图片:cv2.imread(), cv2.imshow(), cv2.imwrite()
悟乙己
2019/05/26
5.8K0
OpenCV应用 | 计算两条曲线之间的最小距离(附源码)
导读 本文主要介绍使用OpenCV计算两条曲线之间的最小距离。 实现目标 【计算两条曲线之间的最小距离】 测试图像: 动态效果演示: 实现步骤与代码 实现步骤: ① 分别找到两条曲线的轮廓; ② 计算每条曲线轮廓点与另一条轮廓上点的距离; ③ 记录距离最小值与对应最小值时的点坐标; ④ 绘制结果。 代码实现与演示: # -*- coding: cp936 -*- import numpy as np import math import cv2 def cal_pt_distance(pt1,
Color Space
2021/09/15
3.8K0
OpenCV应用 | 计算两条曲线之间的最小距离(附源码)
相关推荐
【OpenCV】Chapter2.图像的数值运算
更多 >
交个朋友
加入腾讯云官网粉丝站
蹲全网底价单品 享第一手活动信息
加入讨论
的问答专区 >
1作者擅长5个领域
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
    本文部分代码块支持一键运行,欢迎体验
    本文部分代码块支持一键运行,欢迎体验