kubernetes Istio VirtualService可以为某些路由要求特定的头(否则拒绝)

jaql4c8m  于 2023-10-17  发布在  Kubernetes
关注(0)|答案(1)|浏览(81)

我正在使用Istio VirtualService,想知道如果头部丢失,是否可以使用头部规则拒绝特定路由上的请求。
根据文档,看起来我们只能在virtualservice级别添加或删除头?是这样吗?
或者我可以用什么方式在没有特定头的情况下对virtualservice中特定URI路径的请求进行全面拒绝?

lb3vh1jj

lb3vh1jj1#

虚拟服务只关注rewriting and routing,包括头,它不支持拒绝没有头的流量。但是,在检查EnvoyFilter时,它可以根据头条件操作拒绝请求。
还分享了这个link,其中一个注解使用EnvoyFilter来操作标题规则。请检查下面的样品yaml如果这符合您的关注。

kind: EnvoyFilter
metadata:
  name: any-name
spec:
  workloadSelector:
    labels:
      app: your-app
  filters:
    - listenerMatch:
        listenerType: SIDECAR_INBOUND
        listenerProtocol: HTTP
      filterName: envoy.lua
      filterType: HTTP
      filterConfig:
        inlineCode: |
          function envoy_on_request(request_handle)
            local header_value = request_handle:headers():get("Your-Header-Name")
            if header_value == nil then
              request_handle:respond({[":status"] = "403"}, "Header is missing")
            end
          end

相关问题