说明
相比nginx-ingress配置要简单一点
有一个web界面看起来舒服一点
安装
安装直接参考上述连接,只修改namespace字段,单独放置.
使用
暴露服务
1 2 3 4 5 6 7 8 9 10 11 12 13
| apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: simpleingressroute spec: entryPoints: - web routes: - match: Host(`test.rokin.cn`) kind: Rule services: - name: web-whoami port: 80
|
如果不指定namespace就是默认default,如果要暴露其他ns下的svc,需要指定namespace字段
IngressRoute如果创建,并且后端的services存在的话在界面上才会显示相应信息
将相关域名解析到k8s节点的80和443端口上,就可以访问了
https
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| # 创建secret, .cer也可以,secret也是ns下的 kubectl create secret tls who-tls --cert=tls.crt --key=tls.key secret/who-tls created
# 修改或创建IngressRoute apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: ingressroutetls spec: entryPoints: - websecure routes: - match: Host(`who.qikqiak.com`) && PathPrefix(`/tls`) kind: Rule services: - name: whoami port: 80 tls: # 添加 secretName: who-tls # 添加 这就是上面创建的secret
|
中间层
中间层是traefik的特色,可以实现很多功能,比如http自动跳转https,灰度发布,流量复制,等等,详见官网或参考.
http自动跳转https
1 2 3 4 5 6 7 8
| # 创建Middleware资源,也是ns下的 apiVersion: traefik.containo.us/v1alpha1 kind: Middleware metadata: name: redirect-https spec: redirectScheme: scheme: https
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| apiVersion: traefik.containo.us/v1alpha1 kind: IngressRoute metadata: name: ingressroutetls-http spec: entryPoints: - web routes: - match: Host(`who.qikqiak.com`) kind: Rule services: - name: whoami port: 80 middlewares: # 添加 - name: redirect-https # 添加
|
这样就会自动跳转到 who.qikqiak.com 的443上去
TCP
就是通过域名暴露比如redis 6379这种端口出去,参考文档中有项目说明,下图需要重点注意