traefik使用
一、灰度发布(加权轮询)
1、创建两个Pod,appv1,appv2,基于nginx,修改index.html文件(省略)
2、创建一个TraefikService资源,使用weighted实现加权轮询wrr
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
name: app-wrr
spec:
weighted:
services:
- name: appv1
weight: 3
port: 80
kind: Service
- name: appv2
weight: 1
port: 80
kind: Service
3、创建一个IngressRoute去应用TraefikService定义的策略
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: app-ingressroute-canary
spec:
entryPoints:
- web
routes:
- match: Host(`testweb.weng.com`)
kind: Rule
services:
- name: app-wrr
kind: TraefikService
3、测试结果
访问4次,3次打在了appv1,1次打在appv2,符合定义的app-wrr策略3:1
可利用该策略实现灰度发布的功能

二、镜像流量复制
1、创建一个TraefikService资源,使用mirroring实现流量复制,并创建一个IngressRoute应用该策略
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
name: app-mirror
spec:
mirroring:
name: appv1
port: 80
mirrors:
- name: appv2
percent: 50 # 把appv1百分之50的流量复制到appv2
port: 80
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: app-ingressroute-mirror
spec:
entryPoints:
- web
routes:
- match: Host(`testmrr.weng.com`)
kind: Rule
services:
- name: app-mirror
kind: TraefikService
2、测试结果
访问6次appv1,0次访问appv2,自动复制了百分之50即3次的流量到appv2


