kubernetes - EnvoyFilter 排除特定主机

标签 kubernetes istio

我需要从如下所示的 EnvoyFilter 中排除特定主机:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: authn-filter
spec:
  workloadLabels:
    istio: ingressgateway
  filters:
  - filterConfig:
      httpService:
        serverUri:
          uri: http://authservice.$(namespace).svc.cluster.local
          cluster: outbound|8080||authservice.$(namespace).svc.cluster.local
          failureModeAllow: false
          timeout: 10s
        authorizationRequest:
          allowedHeaders:
            patterns:
            - exact: "cookie"
            - exact: "X-Auth-Token"
        authorizationResponse:
          allowedUpstreamHeaders:
            patterns:
            - exact: "kubeflow-userid"
      statusOnError:
        code: GatewayTimeout
    filterName: envoy.ext_authz
    filterType: HTTP
    insertPosition:
      index: FIRST
    listenerMatch:
      listenerType: GATEWAY

问题是过滤器适用于影响所有通过该网关的流量的默认 istio 入口网关,我希望有一些主机可以从过滤器中排除/列入白名单。

最佳答案

我找到了答案 here .这个问题要求排除一些路径,但我对主机也很成功。这是我使用的:

apiVersion: networking.istio.io/v1alpha3
kind: EnvoyFilter
metadata:
  name: bypass-authn
  namespace: istio-system
spec:
  workloadSelector:
    labels:
      istio: ingressgateway
  configPatches:
  - applyTo: HTTP_ROUTE
    match:
      routeConfiguration:
        vhost:
          name: subdomain.example.org:80 # <== your host goes here
    patch:
      operation: MERGE
      value:
        name: envoy.ext_authz_disabled
        typed_per_filter_config:
          envoy.ext_authz:
            "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute
            disabled: true

更多信息请参见 Istio documentation .具体来说,文档指定您还应该将端口放入 name: 字段,但我认为没有它也应该可以工作。

关于kubernetes - EnvoyFilter 排除特定主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61941663/

相关文章:

kubernetes - 如何在 Google Container Engine 上创建 kubernetes NFS 卷

kubernetes - Istio JWT身份验证传递没有 token 的流量

docker - 如何在一个 Istio 服务网格中托管多个应用程序?

kubernetes - Istio-proxy 不会通过 global.proxy.includeIPRanges 配置拦截传出流量

kubernetes - 如何在istio入口后面使港口可达?

kubernetes - 带有 EKS 的 Terraform Kubernetes 提供程序在 configmap 上失败

node.js - K8S : Can I get my cluster's KUBECONFIG via Google's Kubernetes Engine API?(不通过 gcloud 容器集群 get-credentials)

kubernetes - 如何在 kubernetes 中调试与 istio 的 mTLS 通信?

kubernetes - 终结器如何为 CustomResouce 对象工作?

kubernetes - 如何让 Helm 安装使用 'kubectl apply' 而不是 'kubectl create'