配置Waypoint的生效范围

WaypointAmbient模式中可选的7层代理。若您的应用需要7层功能时,可以通过配置标签指定发往该应用的流量被先转发给对应的Waypoint。您可以在集群中部署多个Waypoint,并且灵活的选择当前服务使用的对应的Waypoint,甚至可以跨命名空间使用Waypoint。本文将详细介绍如何指定Waypoint的生效范围。

重要

开始阅读前,请根据Ambient模式L4L7能力说明判断您是否需要7层能力。

前提条件

集群中已安装1.2.1及以上版本的Gateway API组件。

部署Waypoint代理

  1. 创建waypoint.yaml。

    apiVersion: gateway.networking.k8s.io/v1
    kind: Gateway
    metadata:
      name: waypoint
      namespace: default
    spec:
      gatewayClassName: istio-waypoint
      listeners:
      - allowedRoutes:
          namespaces:
            from: Same
        name: mesh
        port: 15008
        protocol: HBONE
  2. 部署waypoint。

    kubectl apply -f waypoint.yaml

配置流量经过Waypoint

Waypoint部署完成之后,并不会有任何流量经过Waypoint,您需要显式配置需要使用这个Waypoint的流量范围。

说明

目前ASM支持命名空间以及Service级别的配置。

命名空间下所有Service使用指定Waypoint

如果您希望某个命名空间下的所有Service流量都被某一个Waypoint代理,需要给命名空间上添加标签istio.io/use-waypoint: ${Waypoint Name}。例如,在配置7层授权策略中,配置了default命名空间下的所有Service都使用名为waypointWaypoint代理。

指定Service使用指定Waypoint

ASM同样支持为指定Service启用Waypoint。若您并不需要命名空间下所有的Service流量都经过Waypoint,您只需要为Service添加标签istio.io/use-waypoint: ${Waypoint Name}即可。以下以配置reviews服务使用reviews-svc-waypoint为例:

kubectl label service reviews istio.io/use-waypoint=reviews-svc-waypoint

通过日志确认流量是否正常经过Waypoint

流量经过Waypoint之后,Waypoint中会默认输出访问日志。您可以查看Waypoint上的日志来确认。

入门示例中的Waypoint为例,查看对应的访问日志。

kubectl logs deployments/waypoint | tail -1

预期输出:

{"bytes_received":"0","bytes_sent":"358","downstream_local_address":"192.168.221.86:9080","downstream_remote_address":"10.0.108.250:39354","duration":"1","istio_policy_status":"-","method":"GET","path":"/reviews/0","protocol":"HTTP/1.1","request_id":"c83f18ee-672e-4e2e-9f02-9ee544f1c15f","requested_server_name":"-","response_code":"200","response_flags":"-","route_name":"route","start_time":"2025-06-16T08:58:43.339Z","trace_id":"-","upstream_cluster":"inbound-vip|9080|http|reviews-v1.default.svc.cluster.local;","upstream_host":"envoy://connect_originate/10.0.109.98:9080","upstream_local_address":"envoy://internal_client_address/","upstream_service_time":"1","upstream_response_time":"1","upstream_transport_failure_reason":"-","user_agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.X.X Safari/537.36","x_forwarded_for":"-","authority_for":"reviews:9080"}