kubernetes-ingress-nginx-rule的配置-将外部流量路由到集群内部的规则配置
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 控制器的定义。不同的控制器可能会有不同的路径匹配方式。
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18246773
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步