K8s ingress-nginx根据请求目录不同将请求转发到不同应用

K8s ingress-nginx根据请求目录不同将请求转发到不同应用

1. 起因

有小伙伴做实验想要实现以下需求:
输入www.pana.com/app1访问app1的svc
输入www.pana.com/app2访问app2的svc
在这里插入图片描述

2. 实验

2.1 Dockerfile

先准备Dockerfile

FROM nginx:1.20ADD index.html /usr/share/nginx/html/index.htmlEXPOSE 80CMD ["nginx", "-g", "daemon off;"]

再准备一个index.html
当app1时就把它改为web1 v1.1.0
当app2时就把它改为web2 v1.2.0

nginx wework-web1 v1.1.0

2.2 Deployment和SVC

将镜像分别上传至harbor后,通过yaml分别部署app1和app2
app1:

kind: Deployment
apiVersion: apps/v1
metadata:labels:app: nginx-app1name: nginx-app1namespace: test-nginx
spec:replicas: 1selector:matchLabels:app: nginx-app1template:metadata:labels:app: nginx-app1spec:containers:- name: nginximage: harbor.panasonic.cn/test-nginx/nginx-web:v1.1.0imagePullPolicy: Alwaysports:- containerPort: 80resources:limits:cpu: 1memory: "512Mi"requests:cpu: 500mmemory: "512Mi"
---
apiVersion: v1
kind: Service
metadata:name: nginx-app1-svcnamespace: test-nginxlabels:app: nginx-app1
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80selector:app: nginx-app1type: ClusterIP

app2:
app2的nodeport是不需要的,我做其他实验时候用到,和此实验无关

kind: Deployment
apiVersion: apps/v1
metadata:labels:app: nginx-app2name: nginx-app2namespace: test-nginx
spec:replicas: 1selector:matchLabels:app: nginx-app2template:metadata:labels:app: nginx-app2spec:containers:- name: nginximage: harbor.panasonic.cn/test-nginx/nginx-web:v1.2.0imagePullPolicy: Alwaysports:- containerPort: 80resources:limits:cpu: 1memory: "512Mi"requests:cpu: 500mmemory: "512Mi"
---
apiVersion: v1
kind: Service
metadata:name: nginx-app2-svcnamespace: test-nginxlabels:app: nginx-app2
spec:ports:- name: httpport: 80protocol: TCPtargetPort: 80nodePort: 30080selector:app: nginx-app2type: NodePort

测试是否可以正常访问2个应用
在这里插入图片描述

2.3 Ingress

创建Ingress的yaml
注意的是小伙伴因为看了之前另外个tomcat的文档发现安装那个配置就一直404报错.
原因也很简单,另外个实验的目录是放在不通的uri下:
app1: www.pana.com/app1
app2: www.pana.com/app2
那么就不需要再对地址重写,而我们这里2个index都是在/下面
那么在匹配了path后就需要将它重写到app的/,于是就用到了nginx.ingress.kubernetes.io/rewrite-target

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: nginx-app1-ingnamespace: test-nginx# 以下两行是必须的,小伙伴就卡在这里一直报404错误annotations:nginx.ingress.kubernetes.io/rewrite-target: /
spec:ingressClassName: nginxrules:- host: www.pana.comhttp:paths:- pathType: Prefixpath: /app1backend:service:name: nginx-app1-svcport:number: 80- pathType: Prefixpath: /app2backend:service:name: nginx-app2-svcport:number: 80

3. 效果

效果如下
可以看到,我们已经实现了预期的效果
在这里插入图片描述
小伙伴试验后也表示明白了
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/478792.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用fgetc和fputc完成两个文件的拷贝

#include<myhead.h>int main(int argc, const char *argv[]) {//判断是否进行了外部传参if(argc!3){printf("input file error\n");printf("usage:./a.out srcfile destfile\n");return -1;}//定义文件指针&#xff0c;以只读的形式打开FILE *srcfpN…

ChatGPT如何提供实用且高质量的建议和指导,提高编程效率和准确性

ChatGPT4.0的功能包括&#xff1a; 无限制ChatGPT模型使用 GPT-4模型使用 GPT-4图像分析功能 GPT-4联网功能 GPT-4高级数据分析功能 GPT-4高级插件功能 DALLE-3高级AI绘图功能 如何能高效地处理文本、文献查阅、PPT编辑、编程、绘图和论文写作已经成为您成功的关键。而 …

Mac清理系统垃圾软件CleanMyMac X2025免费版本下载

嘿&#xff0c;Mac用户们&#xff0c;你是否经常感觉你的Mac就像是在背着一个沉重的包袱在跑步&#xff1f;是的&#xff0c;我在说那些堆积如山的系统垃圾。清理这些垃圾不仅可以让你的Mac跑得更快&#xff0c;还能让它“呼吸”更畅快。今天&#xff0c;让我们一起来探索如何M…

C#,入门教程(05)——Visual Studio 2022源程序(源代码)自动排版的功能动画图示

上一篇&#xff1a; C#&#xff0c;入门教程(04)——Visual Studio 2022 数据编程实例&#xff1a;随机数与组合https://blog.csdn.net/beijinghorn/article/details/123533838 新来的徒弟们交上来的C#代码&#xff0c;可读性往往很差。 今天一问才知道&#xff0c;他们居然不…

centos中安装go

安装过程 &#xff08;1&#xff09;源码二进制下载地址 wget https://dl.google.com/go/go1.13.5.linux-amd64.tar.gz &#xff08;2&#xff09;将下载的二进制包解压至 /usr/local目录。 tar -C /usr/local/ -xzf go1.13.5.src.tar.gz &#xff08;3&#xff09;设置环…

ArcGIS model中分区统计迭代输出文件名

在模型中设置了迭代栅格数据&#xff0c;但输出过程中结果只能显示一个&#xff0c;因此采用提供的解析路径的方法提取出文件名字&#xff0c;不包含后缀名&#xff0c;作为前提条件输入到结果中。 1、首先选择工作空间&#xff0c;即存放ti影像的目录。 2、右键仅模型工具中选…

生产环境下,应用模式部署flink任务,通过hdfs提交

前言 通过通过yarn.provided.lib.dirs配置选项指定位置&#xff0c;将flink的依赖上传到hdfs文件管理系统 1. 实践 &#xff08;1&#xff09;生产集群为cdh集群&#xff0c;从cm上下载配置文件&#xff0c;设置环境 export HADOOP_CONF_DIR/home/conf/auth export HADOOP_CL…

vue实现自动滚动 v-auto-scroll

在项目中&#xff0c;有时候需要实现自动滚动的效果。这时我们直接使用 v-auto-scroll 即可。 也就是当内容超出设置元素的最大高度的时就会出现滚动条。

Kubernetes基础(二十二)-K8S的PV/PVC/StorageClass详解

1 概述 先来个一句话总结&#xff1a;PV、PVC是K8S用来做存储管理的资源对象&#xff0c;它们让存储资源的使用变得可控&#xff0c;从而保障系统的稳定性、可靠性。StorageClass则是为了减少人工的工作量而去自动化创建PV的组件。所有Pod使用存储只有一个原则&#xff1a;先规…

Go应用性能分析实战

Go很适合用来开发高性能网络应用&#xff0c;但仍然需要借助有效的工具进行性能分析&#xff0c;优化代码逻辑。本文介绍了如何通过go test benchmark和pprof进行性能分析&#xff0c;从而实现最优的代码效能。原文: Profiling Go Applications in the Right Way with Examples…

2024年2月的TIOBE指数,go语言排名第8,JAVA趋势下降

二月头条&#xff1a;go语言进入前十 本月&#xff0c;go在TIOBE指数前10名中排名第8。这是go有史以来的最高位置。当谷歌于2009年11月推出Go时&#xff0c;它一炮而红。在那些日子里&#xff0c;谷歌所做的一切都是神奇的。在Go出现的几年前&#xff0c;谷歌发布了GMail、谷歌…

debug - 只要在内存中有显示相关的数据, 就会被CE找到

文章目录 debug - 只要在内存中有显示相关的实际数据, 就会被CE找到概述笔记demo实现demo运行效果用CE查找实际数据地址找到自己的调试点 - 方法1找到自己的调试点 - 方法2打补丁备注END debug - 只要在内存中有显示相关的实际数据, 就会被CE找到 概述 自己写了一个demo, 想验…