0
点赞
收藏
分享

微信扫一扫

k8s学习(十八)使用traefik代理多个服务

人间四月天i 2022-01-15 阅读 55
kubernetes

目录


一、创建服务

(1)前端服务

将前端项目打成镜像,创建服务,我这里访问前端服务是

http://172.16.10.158:32666/view/index.html
http://172.16.10.158:32667/view2/index.html

(2)查看创建的服务

[root@k8s-master cpaas-manager]# kubectl get svc
NAME                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
app-service-01               NodePort    10.101.13.205    <none>        80:32666/TCP   12m
app-service-02               NodePort    10.104.215.15    <none>        80:32667/TCP   4s

二、创建IngressRoute

(1)app-ingressroute.yaml

[root@k8s-master 2]# cat app-ingressroute.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: app-route
  annotations:
    kubernetes.io/ingress.class: traefik-v2.5
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`www.iscas.com`) && PathPrefix(`/view`)
    kind: Rule
    services:
    - name: app-service-01
      port: 80
  - match: Host(`www.iscas.com`) && PathPrefix(`/view2`)
    kind: Rule
    services:
    - name: app-service-02
      port: 80

(2)创建

[root@k8s-master 2]# kubectl create -f app-ingressroute.yaml
ingressroute.traefik.containo.us/app-route created

(3)配置ip域名

172.16.10.158   www.iscas.com

(4)访问服务

http://www.iscas.com/view/index.html
http://www.iscas.com/view2/index.html

三、使用Middleware

(1)app-middleware.yaml

[root@k8s-master 2]# cat app-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: app-middleware   ##设置中间件名称,要和路由规则中的名称一致
spec:
  stripPrefix:
    prefixes:
      - /front-01        ##设置要去除的前缀

(2)创建

[root@k8s-master 2]# kubectl create -f app-middleware.yaml
middleware.traefik.containo.us/app-middleware created

(3)修改 app-ingressroute.yaml

[root@k8s-master 2]# cat app-ingressroute.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: app-route
  annotations:
    kubernetes.io/ingress.class: traefik-v2.5
spec:
  entryPoints:
    - web
  routes:
  - match: Host(`www.iscas.com`) && PathPrefix(`/front-01`)  ## 修改路径
    kind: Rule
    services:
    - name: app-service-01
      port: 80
    middlewares:
    - name: app-middleware       ##指定使用的中间件
  - match: Host(`www.iscas.com`) && PathPrefix(`/view2`)
    kind: Rule
    services:
    - name: app-service-02
      port: 80

(4)创建

[root@k8s-master 2]# kubectl create -f app-ingressroute.yaml
ingressroute.traefik.containo.us/app-route created

(5)访问服务

第一个服务的访问方式变成了

http://www.iscas.com/front-01/view/index.html
举报

相关推荐

0 条评论