首页 > 系统相关 >kubernetes-ingress-nginx-rule的配置-将外部流量路由到集群内部的规则配置

kubernetes-ingress-nginx-rule的配置-将外部流量路由到集群内部的规则配置

时间:2024-06-13 21:10:50浏览次数:20  
标签:ingress name kubernetes ops svc rule pathType Prefix service

Kubernetes Ingress 资源配置文件主要定义了如何通过 NGINX Ingress 控制器来处理进入集群的 HTTP/HTTPS 流量

apiVersion: networking.k8s.io/v1    #表示这是一个 Ingress 资源,并使用了 Kubernetes 网络 API v1 版本
kind: Ingress     #kind: 定义了资源的类型。在这里是 Ingress,用来管理外部 HTTP 和 HTTPS 流量并将其路由到集群内部的服务。
metadata:
  annotations:  #注释提供了对 NGINX Ingress 控制器的一些额外配置。
    kubernetes.io/ingress.class: nginx    #指定了使用的 Ingress 控制器类。在这里使用的是 nginx Ingress 控制器。通过这个注释,Kubernetes 知道该 Ingress 资源应由 NGINX Ingress 控制器来处理。
    nginx.ingress.kubernetes.io/cors-allow-methods: '*'   #配置允许的 HTTP 方法,用于跨域资源共享(CORS)。'*' 表示允许所有 HTTP 方法。
    nginx.ingress.kubernetes.io/cors-allow-origin: '*'    #配置允许的跨域来源。'*' 表示允许所有来源,可以访问资源。这是一个非常开放的设置,意味着任何域都可以访问该服务。
    nginx.ingress.kubernetes.io/enable-cors: "true"       #启用 CORS(跨域资源共享)。设置为 "true" 表示开启 CORS 功能
    nginx.ingress.kubernetes.io/proxy-body-size: 1024m    #配置允许的请求体的最大大小。1024m 表示允许最大 1024MB 的请求体。这对于上传大文件的应用非常有用。
    nginx.ingress.kubernetes.io/proxy-connect-timeout: "30" #配置与上游服务器建立连接的超时时间。30 秒内未建立连接则会超时
    nginx.ingress.kubernetes.io/proxy-read-timeout: "600"   #配置从上游服务器读取数据的超时时间。600 秒内未收到数据则会超时。这是读取整个请求的超时时间。
    nginx.ingress.kubernetes.io/proxy-send-timeout: "600"   #配置发送数据到上游服务器的超时时间。600 秒内未完成发送数据则会超时
    nginx.ingress.kubernetes.io/send-timeout: "600"         #配置发送数据到客户端的超时时间。600 秒内未完成数据发送则会超时
    nginx.ingress.kubernetes.io/upstream-hash-by: $http_x_forwarded_for #配置上游服务器的哈希负载均衡策略。$http_x_forwarded_for 表示基于请求的 X-Forwarded-For 头部来进行哈希,用于实现基于客户端 IP 的会话保持。
  name: ingress-rule      #Ingress 资源的名称。这个名称在集群中是唯一的,可以用来标识该 Ingress 资源。
  namespace: ops-system   #Ingress 资源所属的命名空间
spec: 
  rules:                  #定义了具体的路由规则,决定了哪些请求会被转发到哪个后端服务。
  - http:                 #http 表示规则适用于 HTTP 请求,定义了 HTTP 路径和对应的后端服务。
      paths:              #paths 是一个列表,每个元素定义了一个路径及其对应的后端服务。
      - backend:                            #指定了处理请求的后端服务 相当于 location xxx {} 指向一个名为 ops-webui-svc 的服务,并指定了服务的端口号 80
          service:                          #定义了将请求转发到哪个 Kubernetes 服务(Service)。指定了 ops-webui-svc,这意味着所有匹配的请求都会被转发到这个服务
            name: ops-webui-svc             #name 是 service 的名称。在 Kubernetes 中,服务是通过名称来标识的。     kubectl get svc -n ops-system
            port:
              number: 80                    #访问的端口
        path: /                             #路由的路径定义了 URL 路径,该路径决定哪些请求应该被转发到指定的后端服务
        pathType: Prefix                    #定义了路径匹配的类型。Prefix 表示路径前缀匹配,也就是说,所有以指定前缀开头的请求路径都会被认为是匹配 /images 会匹配 /images 本身以及所有以 /images 开头的路径

      - backend:    
          service:
            name: ops-webui-svc
            port:
              number: 80
        path: /images
        pathType: Prefix
      - backend:
          service:
            name: ops-webui-svc
            port:
              number: 80
        path: /static
        pathType: Prefix
      - backend:
          service:
            name: ops-webui-svc
            port:
              number: 80
        path: /models
        pathType: Prefix
      - backend:
          service:
            name: ops-webui-svc
            port:
              number: 80
        path: /fonts
        pathType: Prefix
      - backend:
          service:
            name: ops-webui-svc
            port:
              number: 80
        path: /iconfont
        pathType: Prefix
      - backend:
          service:
            name: ops-static-svc
            port:
              number: 80
        path: /diffhtml/css_js
        pathType: Prefix
      - backend:
          service:
            name: ops-static-svc
            port:
              number: 80
        path: /data/key_cfg_compare/export
        pathType: Prefix
      - backend:
          service:
            name: iam-svc
            port:
              number: 8888
        path: /api
        pathType: Prefix
      - backend:
          service:
            name: kong-svc
            port:
              number: 8000
        path: /asset
        pathType: Prefix
      - backend:
          service:
            name: kong-svc
            port:
              number: 8000
        path: /ops-manage/ws
        pathType: Prefix
      - backend:
          service:
            name: kong-svc
            port:
              number: 8000
        path: /ops-manage
        pathType: Prefix
      - backend:
          service:
            name: kong-svc
            port:
              number: 8000
        path: /ops-elink
        pathType: Prefix
      - backend:
          service:
            name: kong-svc
            port:
              number: 8000
        path: /ops-metrics
        pathType: Prefix
      - backend:
          service:
            name: lap-svc
            port:
              number: 8889
        path: /lap
        pathType: Prefix
  tls:                          #添加tls加密证书 https
  - hosts:
    - 需要加密的主机服务所在的ip
    secretName: ops-tls-secret  #证书存放的 secret - kubectl get secret -n ops-system
status:
  loadBalancer:                 #负载均衡
    ingress:
    - ip: 负载均衡的ip

 

对其中pathType 扩展说明

路径匹配类型
pathType 可以有不同的类型,每种类型定义了不同的匹配逻辑:

# 1、Exact:
精确匹配路径,只有完全与指定路径相同的请求才会匹配。
例如,/images 只会匹配 /images,而不会匹配 /images/ 或 /images/photo.jpg。

# 2、Prefix:
前缀匹配,所有以指定前缀开头的路径都会匹配。
例如,/images 会匹配 /images 及所有以 /images 开头的路径。
ImplementationSpecific:


具体实现依赖于 Ingress 控制器的定义。不同的控制器可能会有不同的路径匹配方式。

 

标签:ingress,name,kubernetes,ops,svc,rule,pathType,Prefix,service
From: https://www.cnblogs.com/littlecc/p/18246773

相关文章

  • 基于 Nginx Ingress + 云效 AppStack 实现灰度发布
    作者:子丑场景简介灰度发布是降低生产部署风险,提升线上服务稳定性的重要手段,这在当前快速迭代的软件研发中尤为重要。相对于K8s默认的滚动部署或者简单的Pod分批,基于流量特征的灰度发布验证更精准,风险更低。在云原生场景下,基于NginxIngress的灰度发布是被广泛使用的方案......
  • 微服务实践之使用 kube-vip 搭建高可用 Kubernetes 集群
    实验环境原理生成kube-vip静态pod配置清单exportVIP=192.168.215.200#我的vip是192.168.215.200exportINTERFACE=ens33#可以用ipa查看接口名称#kube-vip最新镜像为v0.8.0,但我装时无法成功,后来降到v0.7.2后安装成功了ctrimagepulldocker.io/plndr/kube-vip:v0......
  • kubernetes网络概念、关系
    kubernetes实现了对容器的编排,实际上就是对计算、网络、存储的编排。在网络部分,涉及到的概念或者模块有三个:kube-proxy:本质上讲就是Service资源的实现kube-proxypod运行在每个kubernetes节点中,通过iptables或者ipvs的方式实现service到pod-endpoint的负载均衡能力。ipvs......
  • 使用 KubeKey v3.1.1 离线部署原生 Kubernetes v1.28.8 实战
    今天,我将为大家实战演示,如何基于操作系统openEuler22.03LTSSP3,利用KubeKey制作Kubernetes离线安装包,并实战离线部署Kubernetesv1.28.8集群。实战服务器配置(架构1:1复刻小规模生产环境,配置略有不同)主机名IPCPU内存系统盘数据盘用途ksp-control-11......
  • 云原生Kubernetes系列项目实战-k8s集群+高可用负载均衡层+防火墙
    一、Kubernetes区域可采用Kubeadm方式进行安装:名称主机部署服务master192.168.91.10docker、kubeadm、kubelet、kubectl、flannelnode01192.168.91.11docker、kubeadm、kubelet、kubectl、flannelnode02192.168.91.20docker、kubeadm、kubelet、kubectl、flannel1.系统初......
  • 【K8s】专题五(1):Kubernetes 配置之 ConfigMap
    以下内容均来自个人笔记并重新梳理,如有错误欢迎指正!如果对您有帮助,烦请点赞、关注、转发!欢迎扫码关注个人公众号!目录一、基本介绍二、主要特性三、资源清单(示例)四、常用操作一、基本介绍在Kubernetes中,ConfigMap是一种用于存储非敏感信息的资源对象,提供了向Pod......
  • 云原生周刊:Kubernetes 十周年 | 2024.6.11
    开源项目推荐KubernetesGoatKubernetesGoat是一个故意设计成有漏洞的Kubernetes集群环境,旨在通过交互式实践场地来学习并练习Kubernetes安全性。kube-state-metrics(KSM)kube-state-metrics是一个用于收集Kubernetes集群状态信息的开源项目,它能够提供各种有用的指......
  • Aws EC2,kubeadm方式安装kubernetes(k8s)
    版本docker版本:20.10.25k8s版本(kubeadm,kubelet和kubectl):1.20.10-0初始化#禁用SELinuxsudosetenforce0sudosed-i's/^SELINUX=enforcing$/SELINUX=permissive/'/etc/selinux/config#关闭防火墙sudosystemctlstopfirewalldsudosystemctldisablefirewal......
  • 避免 OOMKilled:在 Kubernetes 环境中优化 Java 进程的内存配置
    避免OOMKilled:在Kubernetes环境中优化Java进程的内存配置DevOps云学堂译 奇妙的Linux世界 2024-06-1009:53 重庆 听全文公众号关注 「奇妙的Linux世界」设为「星标」,每天带你玩转Linux! 管理KubernetesPod中运行的Java进程的内存使用情况比人们想象......
  • 使用Python进行容器编排【Docker Compose与Kubernetes的比较】
    ......