kubernetes使用traefik作为ingress(相同域名不同路径访问不同服务)Middleware的StripPrefix进行实现
1.环境
kubernetes:v1.20.1
traefik:2.4.8
链接:middleware的使用(stripprefix)
2.安装
kubeadm安装k8s
helm安装traefik
#Add Traefik's chart repository to Helm:
helm repo add traefik https://helm.traefik.io/traefik#You can update the chart repository by running:
helm repo update#And install it with the helm command line:
#Create namespace
kubectl create ns traefik-v2# Install in the namespace "traefik-v2"
helm install --namespace=traefik-v2 traefik traefik/traefik
说明:UI界面默认没有通过NodePort进行透出,我自己修改service透出的
3.准备测试环境
#新建两个测试POD
kubectl create deployment nginx --image=nginx:1.19.1
kubectl create deployment nginx2 --image=nginx:1.19.1
#为两个POD建service
kubectl create svc clusterip nginx --tcp=80:80
kubectl create svc clusterip nginx2 --tcp=80:80
#进入POD修改index.html便于区分
kubectl exec -it nginx-65b75dbbf6-ddgfb /bin/bash
echo "111111111" > /usr/share/nginx/html/index.html
kubectl exec -it nginx2-82b75dbcf5-dfghv /bin/bash
echo "222222222" > /usr/share/nginx/html/index.html
4.下面通过两种方式进行实现
须知:在traefik中是通过中间件去除访问路径,比如/bar不会把该路径带入带后端访问变成 /usr/share/nginx/html/bar/,这是个坑点
错误的配置是:
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: foo-barannotations:kubernetes.io/ingress.class: traefiktraefik.ingress.kubernetes.io/router.entrypoints: webspec:rules:- host: nginx.kk.ithttp:paths:- path: /barpathType: Prefixbackend:service:name: nginxport:number: 80- path: /foopathType: Prefixbackend:service:name: nginx2port:number: 80
如果不用中间件,就会返回404,并且后端日志会打印:
4.1 ingress方式实现相同域名不同路径访问不同服务
1.中间件middleware的配置(不管哪种方式都要用到)
cat nginx-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:name: nginx-stripprefix
spec:stripPrefix:prefixes:- /bar- /foo
#意思就是traefik请求后端时,把/bar或者/foo路径给脱掉
发布:kubectl apply -f nginx-middleware.yaml
2.ingress文件配置
cat nginx-ingress-path.yaml
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:name: foo-barannotations:kubernetes.io/ingress.class: traefiktraefik.ingress.kubernetes.io/router.entrypoints: webtraefik.ingress.kubernetes.io/router.middlewares: default-nginx-stripprefix@kubernetescrd #就是多了这一行!!!!!!!
#traefik.ingress.kubernetes.io/router.middlewares 这个可以从https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/的Annotations里找到
#default-nginx-stripprefix可以从UI界面上看到,@kubernetescrd就是固定搭配,不用动spec:rules:- host: nginx.kk.ithttp:paths:- path: /barpathType: Prefixbackend:service:name: nginxport:number: 80- path: /foopathType: Prefixbackend:service:name: nginx2port:number: 80
访问traefik流量入口
4.2 IngressRoute方式实现相同域名不同路径访问不同服务
1.中间件middleware的配置(不管哪种方式都要用到)
cat nginx-middleware.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:name: nginx-stripprefix
spec:stripPrefix:prefixes:- /bar- /foo
#意思就是traefik请求后端时,把/bar或者/foo路径给脱掉
发布:kubectl apply -f nginx-middleware.yaml
2.IngressRoute文件配置
cat nginx-ingressroute.yaml
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:name: nginx-route
spec:entryPoints:- webroutes:- match: Host(`nginx.kk.it`) && PathPrefix(`/bar`)kind: Ruleservices:- name: nginxport: 80middlewares:- name: nginx-stripprefix #关键点!!!!!!!- match: Host(`nginx.kk.it`) && PathPrefix(`/foo`)kind: Ruleservices:- name: nginx2port: 80middlewares:- name: nginx-stripprefix #关键点!!!!!!!
kubernetes使用traefik作为ingress(相同域名不同路径访问不同服务)Middleware的StripPrefix进行实现相关推荐
- kubernetes部署Dashboard(可通过域名外网访问)
一.安装环境 kubernetes 1.22 Dashboard v2.2.0 二.开始安装 1.参考文章 https://kubernetes.io/zh/docs/tasks/access-app ...
- Kubernetes 系列(三):Kubernetes使用Traefik Ingress暴露服务
一.Kubernetes 服务暴露介绍 从 kubernetes 1.2 版本开始,kubernetes提供了 Ingress 对象来实现对外暴露服务:到目前为止 kubernetes 总共有三种暴露 ...
- Kubernetes 部署 Traefik Ingress 控制器 (1.7.12)
目录[-] . 一.Ingress 介绍 . 二.Traefik 介绍 . 三.部署 Ingress 控制器 Traefik . 1.Traefik 两种部署方式介绍 . 2.创建 Traefik 配 ...
- Kubernetes负载均衡器-traefik ingress安装
2019独角兽企业重金招聘Python工程师标准>>> Kubernetes安装traefik ingress进行负载均衡 Ingress简介 如果你还不了解,ingress是什么, ...
- kubernetes资源控制与及ingress插件安装(容忍策略)
一.Daemonset 控制器(不支持滚动更新) 该文中的所有容器需自己创建 1.DaemonSet的概述 DaemonSet 每个机器斗要启动运行的Pod,确保全部或一些Node上运行Pod副本 - ...
- K8S部署Traefik与Ingress、IngressRoute——筑梦之路
两种方式: Traefik+Ingress 官方文档:Kubernetes Ingress Routing Configuration - Traefik Traefik+IngressRoute 官 ...
- Kubernetes系列之五:使用yaml文件创建service向外暴露服务
系列链接 Kubernetes系列之一:在Ubuntu上快速搭建一个集群Demo Kubernetes系列之二:将Slave节点加入集群 Kubernetes系列之三:部署你的第一个应用程序到k8s集 ...
- 威联通NAS通过宝塔面板实现域名统一端口访问
背景 家用的宽带是联通的,自带公网 IP ,但是封锁了 80 端口和 443 端口,无法隐藏端口进行访问.因为前段时间一直在给 NAS 增加服务,都是通过公网 IP + 端口的形式通过路由器的端口映射 ...
- 从Kubernetes安全地访问AWS服务,告诉你多云场景下如何管理云凭据!
作者| Alexey Ledenev 翻译 | 天道酬勤,责编 | Carol 出品 | CSDN云计算(ID:CSDNcloud) 随着企业与各种云提供商合作,多云场景已经变得十分常见. 在谷歌Ku ...
最新文章
- 如何混合编译C语言和C++
- Facebook图片存储系统Haystack——存小文件,本质上是将多个小文件合并为一个大文件来降低io次数,meta data里存偏移量...
- 深信服:输入一个字符串,帮忙统计字符串里面的每个单词出现的次数,以及非法单词的次数。非法单词的定义为:包含数字(0-9)的单词
- VS2013找不到winres.h的解决办法
- 关于Spring事务tx:annotation-driven/的理解(Controller可以使用@Transactional)
- Pycharm设置开发模板/字体大小/背景颜色 - Python零基础入门教程
- 微软职位内部推荐-Software Development Engineering II
- js数字格式化千分位格式
- Oracle-第一篇一些调优技巧
- 魔域手游如何修改服务器id,魔域互通端游手游架设
- sis 最新_传统SIS系统面临考验——“可持续的安全仪表系统”来袭
- 钉钉用不同的手机签到后台怎么显示的代签到有用吗
- OpenCv视频读与存
- 企业如何借助百度百家号进行网络推广?
- 机器学习教程 三.回归理论及代码实现
- sock5代理如何搭建?
- iOS开发者的苹果电脑MacBookPro硬盘满了该怎么办?不要只想着插个扩展sd卡!可以自己买个固态硬盘换上
- 【智能合约实战】——入门级DAPP,没有想象中那么难
- python 实现链家网房源数据信息的爬取
- java 操作鼠标实现qq加好友_易语言通过按键模拟的方式实现QQ后台加人加群的代码...
热门文章
- 2022美亚杯团体赛
- 尚医通项目——上传医院接口(签名校验及图片编码)
- 德勤:集团主数据管理方法论(PPT)
- 第一周CorelDRAW课程总结
- js保留两位小数并且小数点超过两位需要进1
- “呆呆”beta版下载情况及用户反馈
- 安卓微信王者荣耀服务器名称,王者荣耀:服务器命名原来是这么来的,你服务区是谁的称号?...
- MATLAB | R2023a更新了哪些好玩的东西
- python shell脚本编程100例_《shell脚本编程100例》[1.05MB]PDF完整版下载-码农之家
- js点击取消按钮关闭当前弹框_js关闭当前页面(窗口)的几种方式总结