Ingress 是一个强大的 Kubernetes 资源,主要通过 HTTP 管理外部对服务的访问。它允许您根据请求的主机名或路径定义将外部流量路由到内部服务的规则。


下面的示例演示了如何创建一个 Ingress 资源,根据 URL 路径将流量路由到不同的服务。

[代码清单]

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: example-ingress
spec:
 rules:
 - host: example.com
  http:
   paths:
   - path: /service1
​    pathType: Prefix
​    backend:
​     service:
​      name: service1
​      port:
​       number: 80
   - path: /service2
​    pathType: Prefix
​    backend:
​     service:
​      name: service2
​      port:
​       number: 80

[执行结果]

应用此 YAML 配置时不会产生直接输出,但会创建一个 Ingress 资源,将 http://example.com/service1 请求路由到 service1 服务,将 http://example.com/service2 请求路由到 service2 服务。

Ingress 资源定义了根据请求的 URL 将 HTTP(S) 流量路由到不同服务的规则。在此示例中:

主机字段指定了规则适用的域名。

路径部分列出了 URL 路径和相应的后端服务。

pathType 可以是前缀(匹配以指定路径开头的所有路径)或精确(完全匹配路径)。

要使用 Ingress,还需要一个负责执行 Ingress 规则的 Ingress 控制器。常用的选择包括 NGINX Ingress Controller 和 Traefik。

[小知识]

Ingress 还能处理 SSL 终止,让你轻松管理 HTTPS 流量。

您可以使用 Ingress 资源中的注释自定义 Ingress 控制器的行为,如启用速率限制或配置身份验证。