部署简单网关¶
最简单的部署是一个网关和路由资源,它们由同一个所有者一起部署。这代表了类似于 Ingress 使用的模型。在本指南中,将部署一个网关和 HTTPRoute,它们匹配所有 HTTP 流量并将其定向到名为 foo-svc
的单个服务。
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
name: prod-web
spec:
gatewayClassName: example
listeners:
- protocol: HTTP
port: 80
name: prod-web-gw
allowedRoutes:
namespaces:
from: Same
网关代表逻辑负载均衡器的实例化,网关类在用户创建网关时定义负载均衡器模板。示例网关是根据假设的 example
网关类进行模板化的,该网关类只是一个占位符,用户需要替换它。以下列出了可用的 网关实现,可用于根据特定的基础设施提供商确定正确的网关类。
网关在端口 80 上监听 HTTP 流量。此特定网关类会自动分配一个 IP 地址,该地址将在部署后显示在 Gateway.status
中。
路由资源使用 ParentRefs
指定它们想要附加到的网关。只要网关允许这种附加(默认情况下,来自同一个命名空间的路由是受信任的),这将允许路由从父网关接收流量。BackendRefs
定义将发送流量的后端。更复杂的双向匹配和权限是可能的,并在其他指南中解释。
以下 HTTPRoute 定义了如何将来自网关监听器的流量路由到后端。由于没有指定主机路由或路径,因此此 HTTPRoute 将匹配到达负载均衡器端口 80 的所有 HTTP 流量,并将它们发送到 foo-svc
Pod。
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
name: foo
spec:
parentRefs:
- name: prod-web
rules:
- backendRefs:
- name: foo-svc
port: 8080
虽然路由资源通常用于将流量过滤到许多不同的后端(可能拥有不同的所有者),但这演示了具有单个服务后端的尽可能简单的路由。此示例显示了服务所有者如何仅为他们自己的使用部署网关和 HTTPRoute,从而使他们能够更好地控制和自主地公开服务。