【Path Redirect】请求路径重定向

配置请求路径重定向可以使得发往服务的指定请求获得HTTP 301重定向响应,将请求重定向到服务的其它路径上。本文介绍如何配置请求路径重定向。

前提条件

已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作

操作步骤

  1. 使用istioctl工具,执行以下命令,为httpbin服务部署Waypoint代理。

    istioctl x waypoint apply --service-account httpbin

    预期输出:

    waypoint default/httpbin applied
  2. 为httpbin服务配置虚拟服务,将发往httpbin服务根路径的请求转发至/get路径。

    1. 登录ASM控制台,在左侧导航栏,选择服务网格 > 网格管理

    2. 网格管理页面,单击目标实例名称,然后在左侧导航栏,选择流量管理中心 > 虚拟服务,然后单击创建

    3. 创建页面,进行如下配置,单击预览,确认YAML内容无误后,单击确认,然后单击创建

      image.png

      展开查看预览YAML

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: httpbin
        namespace: default
      spec:
        hosts:
          - httpbin.default.svc.cluster.local
        http:
          - match:
              - uri:
                  exact: /
            redirect:
              uri: /get
  3. 执行以下命令,验证请求路径重定向是否生效。

    kubectl exec -it deploy/sleep -- curl httpbin:8000 -I

    预期输出:

    HTTP/1.1 301 Moved Permanently
    location: http://httpbin:8000/get
    date: xxx, xx Aug 2023 11:xx:xx GMT
    server: istio-envoy
    transfer-encoding: chunked

    可以看到在sleep容器内部访问httpbin服务的根路径,返回301响应,其中location字段为http://httpbin:8000/get,表示请求被重定向到httpbin服务的/get路径。