【问题标题】:Add Custom headers in Istio Virtual service在 Istio 虚拟服务中添加自定义标头
【发布时间】:2022-01-03 00:17:43
【问题描述】:

我正在使用 Istio 1.10.0 和 minikube。 Kubernetes服务器版本为1.19.8。

如何在http请求中添加多个header?是否可以放置像request.headers["Host"] 这样的动态值?

X-Forwarded-Host $host;    
X-Forwarded-Port 9090;
X-Forwarded-Proto http;

以下示例可以正常添加响应标头。

apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  annotations:
    helm.sh/hook: pre-install, pre-upgrade
  creationTimestamp: "2021-11-22T13:01:36Z"
  generation: 8
  name: direct-vs
  namespace: cvrm
  resourceVersion: "72069"
  selfLink: /apis/networking.istio.io/v1beta1/namespaces/cvrm/virtualservices/cvrm-direct-vs
  uid: d398a13e-fd81-4ada-8e36-617287cae1bc
spec:
  gateways:
  - gateway.istio-system.svc.cluster.local
  hosts:
  - '*'
  http:
  - match:
    - uri:
        prefix: /console
    route:
    - destination:
        host: console-bs.cvrm.svc.cluster.local
        port:
          number: 8087
      headers:
        response:
          add:
            Custom-Header: test

【问题讨论】:

    标签: kubernetes istio


    【解决方案1】:

    您向请求添加标头的方式与对响应的处理方式相同。

    ...
    headers:
      request:
        add:
          foo: bar
    ...
    

    如果你想添加多个标题添加你可以尝试

    ...
    headers:
      request:
        add:
          foo: foo
          bar: bar
    ...
    

    无法在 Istio 清单中添加动态值。

    【讨论】:

    • 是否可以从请求标头中获取值,例如 referrer 、 Host 并使用某种表达式语言例如:request.headers["Host"] 在虚拟服务中设置它?
    • 不,我认为这不可能。你为什么要这样做?
    • 我想使用 istio 虚拟服务在 headers 中设置 X-Forwarded-Host 和 X-Forwarded-Port。
    • 好的,但是为什么呢?也许还有其他选择,但这取决于您的确切用例。
    • 您还可以编写一个 EnvoyFilter 来提取该信息并将标头添加到您的请求中。不过不确定那里是否有可用的信息。
    猜你喜欢
    • 2020-07-04
    • 2021-11-14
    • 2021-09-21
    • 1970-01-01
    • 2020-09-07
    • 2010-11-21
    • 2019-07-19
    • 2012-01-21
    • 1970-01-01
    相关资源
    最近更新 更多