在转发请求或响应之前,可以添加或删除请求和响应标头。若您需要在不更改应用代码的情况下,修改请求或者响应的Header,可以使用虚拟服务来实现。本文介绍如何配置请求/响应头变换。
前提条件
已完成准备工作,并部署httpbin服务和sleep服务。具体操作,请参见准备工作。
操作步骤
验证服务配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh执行以下命令,向httpbin服务发送请求。
curl -I httpbin:8000预期输出:
HTTP/1.1 200 OK server: envoy date: Fri, 11 Aug 2023 09:50:24 GMT content-type: text/html; charset=utf-8 content-length: 9593 access-control-allow-origin: * access-control-allow-credentials: true x-envoy-upstream-service-time: 3
使用以下内容,配置httpbin应用的流量规则,添加对Header的修改配置。具体操作,请参见管理虚拟服务。
验证配置是否生效。
在ACK集群对应的KubeConfig环境下,执行以下命令,进入sleep环境开启bash。
kubectl exec -it deploy/sleep -- sh执行以下命令,向httpbin服务发送请求。
curl -I httpbin:8000预期输出:
HTTP/1.1 200 OK server: envoy date: Fri, 11 Aug 2023 09:49:37 GMT content-type: text/html; charset=utf-8 content-length: 9593 access-control-allow-origin: * access-control-allow-credentials: true httpbin: hello预期输出表明虚拟服务中对Header所做的配置生效,即去除
x-envoy-upstream-service-time字段,并添加httpbin: hello。
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: httpbin-vs
  namespace: default
spec:
  hosts:
    - httpbin
  http:
    - route:
        - destination:
            host: httpbin
          headers:
            response:
              add:
                httpbin: hello
              remove:
                - x-envoy-upstream-service-time该文章对您有帮助吗?