【问题标题】:Kubernetes ExternalName Service Add HeadersKubernetes ExternalName 服务添加标头
【发布时间】:2018-12-05 18:22:51
【问题描述】:

TLDR:我正在使用 AKS 运行 Kubernetes 集群。我创建了一个外部名称服务来代理外部地址。我想在请求中添加一个“主机”标头。我该怎么做呢?

对于更多上下文,我有一个入口控制器来处理所有传入流量。我想将该流量的子集(基于路由)路由到外部 Azure 函数。我已经使用我的 Azure 函数的主机名设置了一个 ExternalName 服务,并将流量路由到它。但是,由于 Microsoft 处理路由到其函数的方式,标头中需要具有正确 FQDN 的“主机”值。

我不想让发送原始请求的人将此包含在标头中,因此我想在流量被代理到 Azure 函数时代表他们添加它。

这是我的服务文件:

kind: Service
apiVersion: v1
metadata:
  name: azure-function-proxy-service
  labels:
    app: proxy-service
spec:
  type: ExternalName
  externalName: azure-function.azurewebsites.net

以及相关的入口规则代码:

- host: hostto.proxy.net
http:
  paths:
  - path: /route/to/proxy
    backend:
      serviceName: azure-function-proxy-service
      servicePort: 80

【问题讨论】:

    标签: kubernetes kubernetes-ingress kubernetes-service


    【解决方案1】:

    我发现我真正想做的是在请求通过我的入口控制器时修改请求的标头。我发现这样做的最佳选择是nginx.ingress.kubernetes.io/configuration-snippet,但它并没有给我想要的细粒度控制。

    最终我不得不建立一个额外的 nginx 实例来代理请求,以便我可以完全控制 nginx 配置。

    【讨论】:

      【解决方案2】:

      我认为您可以使用ingress-nginx 中的Canary 功能。 如果您添加注释nginx.ingress.kubernetes.io/canary: "true",您将能够使用以下规则

      • nginx.ingress.kubernetes.io/canary-by-header:用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务的标头。当请求头设置为always时,会被路由到canary。当标头设置为never 时,它永远不会被路由到金丝雀。对于任何其他值,标头将被忽略,并且请求会按优先级与其他金丝雀规则进行比较。

      • nginx.ingress.kubernetes.io/canary-by-cookie:用于通知 Ingress 将请求路由到 Canary Ingress 中指定的服务的 cookie。当 cookie 值设置为always 时,它将被路由到金丝雀。当 cookie 设置为never 时,它永远不会被路由到金丝雀。对于任何其他值,cookie 将被输入,并且请求将按优先级与其他金丝雀规则进行比较。

      • nginx.ingress.kubernetes.io/canary-weight:应路由到金丝雀 Ingress 中指定的服务的随机请求的整数百分比 (0 - 100)。权重为 0 表示此金丝雀规则不会向金丝雀入口中的服务发送任何请求。权重 100 意味着所有请求都将发送到 Ingress 中指定的替代服务。

      您也可以阅读这篇文章canary deployment with ingress-nginx,它解释了如何使用canary-weightcanary-by-header

      【讨论】:

      • 这是一个有趣的功能,但据我所知,它不允许我在请求通过入口控制器时将新标头插入到请求中。
      • 你看过nginx.ingress.kubernetes.io/configuration-snippet吗?
      • 看起来很有希望!我会看看。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2021-02-02
      • 1970-01-01
      • 2021-05-01
      • 1970-01-01
      • 2020-04-23
      • 2020-10-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多