什么是Ingress

在 Kubernetes 集群中,Ingress 是一种资源对象,可以将外部请求路由到 Kubernetes 集群内部的 Service 中。Ingress 允许您在不更改服务代码的情况下,动态地管理路由规则,从而实现更加灵活的服务部署和管理。

Ingress 资源对象Ingress 资源对象定义了一组规则,用于定义从外部请求到达 Kubernetes 集群后,如何将请求路由到相应的 Service 中。下面是一个示例 Ingress 资源对象:

代码语言:javascript代码运行次数:0运行复制apiVersion: networking.k8s.io/v1

kind: Ingress

metadata:

name: test-ingress

annotations:

nginx.ingress.kubernetes.io/rewrite-target: /

spec:

rules:

- host: example.com

http:

paths:

- path: /app

pathType: Prefix

backend:

service:

name: app-service

port:

number: 80上面的 Ingress 资源对象定义了一个规则,将 example.com/app 的请求路由到 app-service:80 这个 Service 上。

metadata:定义了 Ingress 资源对象的名称和注释。spec:定义了路由规则,它包含了一个或多个 rules,每个 rule 指定了一组请求的匹配规则,以及匹配到请求后的操作。host:指定了请求的主机名。http:指定了请求的协议和端口号,以及匹配到请求后的操作。paths:指定了一组请求路径的匹配规则,以及匹配到请求后的操作。path:指定了请求路径的匹配规则。pathType:指定了路径匹配的类型,可以是 Exact、Prefix 或 ImplementationSpecific。backend:指定了匹配到请求后要转发到的 Service。Ingress Controller要让 Ingress 能够正常工作,需要使用一个 Ingress Controller 来处理 Ingress 规则并路由请求到相应的 Service 中。

Kubernetes 并没有内置的 Ingress Controller,需要使用第三方 Ingress Controller,例如 Nginx、Traefik、HAProxy 等,或者使用云服务商提供的 Ingress Controller。

配置 Ingress配置 Ingress 的过程包括以下步骤:

安装 Ingress Controller:根据所选的 Ingress Controller,安装相应的控制器组件。创建 Ingress 资源对象:定义所需的路由规则,创建 Ingress 资源对象,并将其部署到 Kubernetes 集群中。配置 DNS:将要访问的域名解析到 Ingress Controller 的 IP 地址。访问服务:通过域名访问 Service 中的应用程序。

Back to top: