K8S traffic ingress rewrite 规则

需求如下:

域名 service
www.baidu.com/authorize saas-jcpt-saas-uc-authorize-core-tomcat-online

分析:

1.要到ingress,所以前面不能去掉authorize

2.需要在ingress上配置rewrite

配置

www.baidu.com和saas-jcpt-saas-uc-authorize-core-tomcat-online这两个在不同的命名空间,所以需要在saas-jcpt-tomcat-online下创建一个新的ingress,配置如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: public-fe-n-saas-uc-node-online-ingress
namespace: saas-jcpt-tomcat-online
annotations:
traefik.ingress.kubernetes.io/rewrite-target: /
spec:
rules:
- host: www.baidu.com
http:
paths:
- backend:
serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-online
servicePort: 8080
path: /authorize
status:
loadBalancer: {}

注意一个小坑:

如下需求:

域名 service

www.abc.com/aaa/ saas-jcpt-saas-uc-authorize-core-tomcat-online/bbb/

我们习惯的写法可能如下:


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: public-fe-n-saas-uc-node-online-ingress
  namespace: saas-jcpt-tomcat-online
  annotations:
    traefik.ingress.kubernetes.io/rewrite-target: /bbb/
spec:
  rules:
  - host: www.abc.com
    http:
      paths:
      - backend:
          serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-online
          servicePort: 8080
        path: /aaa/
status:
  loadBalancer: {}

这个时候我们访问http://www.abc.com/aaa/xxx,我们发会现404,容器上抓包发现实际调用的URL为:saas-jcpt-saas-uc-authorize-core-tomcat-online/bbbxxx,中间的/没有了。

同时把path及traefik.ingress.kubernetes.io/rewrite-target最后的/去掉,问题可解决:


apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: public-fe-n-saas-uc-node-online-ingress
  namespace: saas-jcpt-tomcat-online
  annotations:
    traefik.ingress.kubernetes.io/rewrite-target: /bbb
spec:
  rules:
  - host: www.abc.com
    http:
      paths:
      - backend:
          serviceName: saas-jcpt-saas-uc-authorize-core-tomcat-online
          servicePort: 8080
        path: /aaa
status:
  loadBalancer: {}

原文地址:https://blog.51cto.com/8341475/2453333

时间: 2024-10-08 21:17:12

K8S traffic ingress rewrite 规则的相关文章

(转)详解k8s组件Ingress边缘路由器并落地到微服务 - kubernetes

转:https://www.cnblogs.com/justmine/p/8991379.html 写在前面 Ingress 英文翻译 进入;进入权;进食,更准确的讲就是入口,即外部流量进入k8s集群必经之口.这到大门到底有什么作用?我们如何使用Ingress?k8s又是如何进行服务发现的呢?先看一张图: 备注:此图来源我转载的一篇博客NodePort,LoadBalancer还是Ingress?我该如何选择 - kubernetes,特此说明. 原理 虽然k8s集群内部署的pod.server

k8s部署ingress及http、https-实战篇

一.简介ingress:ingress-nginx #用于实现反代https://kubernetes.github.io/ingress-nginx/deploy/#generic-deployment kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yamlhttps://kubernetes.github.io/ingress-nginx/

转:Nginx 配置 location 总结及 rewrite 规则写法

转: http://www.linuxidc.com/Linux/2015-06/119398.htm 1. location正则写法 一个示例: location =/{ # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location /{ # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/{ # 匹配任何以 /do

nginx配置location总结及rewrite规则写法

https://segmentfault.com/a/1190000002797606 location正则写法 一个示例: location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents

ThinkPHP 利用.htaccess文件的 Rewrite 规则隐藏URL中的 index.php

去掉 URL 中的 index.php ThinkPHP 作为 PHP 框架,是单一入口的,那么其原始的 URL 便不是那么友好.但 ThinkPHP 提供了各种机制来定制需要的 URL 格式,配合 Apache .htaccess 文件,更是可以定制出人性化的更利于 SEO 的 URL 地址来. .htaccess文件是 Apache 服务器中的一个配置文件,它负责相关目录下的网页配置.我们可以利用 .htaccess 文件的 Rewrite 规则来隐藏掉 ThinkPHP URL 中的 in

apache 虚拟主机和 rewrite 配置及 rewrite规则解释

如何使用rewrite步骤: 1.     配置apache,启用rewrite机制,修改httpd.conf 在httpd.conf中启用rewrite LoadModule rewrite_module modules/mod_rewrite.so      #如果没有这一行则在配置文件中添加这一行 2.     配置虚拟主机 修改 hosts文件添加你的 ip 和域名对应,如下事例 127.0.0.1       www.yaf.com 在 http.conf 文件中启用虚拟主机 # Vi

Nginx Rewrite规则初探(转)

Nginx  rewrite(nginx url地址重写)Rewrite 主要的功能就是实现URL的重写,Nginx的Rewrite规则采用Pcre,perl兼容正则表达式的语法规则匹配,如果需要Nginx的Rewrite功能,在编译Nginx之前,需要编译安装PCRE库. 通过Rewrite规则,可以实现规范的URL.根据变量来做URL转向及选择配置. if        指令规则语法: [plain] view plain copy if ($http_user_agent ~MSIE){

Nginx Rewrite规则

location = / { # 精确匹配 / ,主机名后面不能带任何字符串 [ configuration A ] } location / { # 因为所有的地址都以 / 开头,所以这条规则将匹配到所有请求 # 但是正则和最长字符串会优先匹配 [ configuration B ] } location /documents/ { # 匹配任何以 /documents/ 开头的地址,匹配符合以后,还要继续往下搜索 # 只有后面的正则表达式没有匹配到时,这一条才会采用这一条 [ configu

apache rewrite规则

在开篇之前:我想说这篇文章其实是我刚刚接触Rewrite的时候学习的文档,应属转载,但是在这里我不想写明原地址,原因是文章中大多数给出的配置命令经实验都是错误的.需要原文的可以在谷歌上搜索一下"Apache Rewrite 规则详解"好在我对正则表达式有所了解,把原文的代码都通过自己的理解改写了一下,并都能够达到题设的要求,并联想需求添加了例子.本文是经过我实验后修改有效的,如果还是出现500错误请去掉 # 及后面的注释(也许有些环境不支持中文注解),如果还是错误请在下面给我留言. 1