跳到内容

部署简单网关

最简单的部署是一个网关和路由资源,它们由同一个所有者一起部署。这代表了类似于 Ingress 使用的模型。在本指南中,将部署一个网关和 HTTPRoute,它们匹配所有 HTTP 流量并将其定向到名为 foo-svc 的单个服务。

Simple Gateway

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,从而使他们能够更好地控制和自主地公开服务。