【问题标题】:Istio and (or versus) Nginx Ingress ControllerIstio 和(或对比)Nginx 入口控制器
【发布时间】:2018-08-10 07:01:14
【问题描述】:

我正在测试 Istio,目前我即将测试路由流量的“金丝雀”功能。

为了我的测试,我创建了一个由 5 个微服务(serviceA、serviceB、serviceC、serviceD、serviceE)组成的小型 servicemesh。每个人都可以呼叫其他人。我只是通过像 A,E,C,B,B,D 这样的路径,请求遵循这条路径。 为了从集群外部调用我的 servicemesh,我有一个 Nginx 入口控制器,其入口规则指向 serviceA pod

这工作正常。

我面临的问题涉及使用这样的自定义标头匹配的流量切换:

kind: VirtualService
metadata:
  name: ServiceA
  namespace: demo
  labels:
    app: demo
spec:
  hosts:
  - service-a
  http:
  - route:
    - destination:
        host: service-a
        subset: v1
  - match:
    - headers:
        x-internal-request:
          exact: true
    route:
    - destination:
        host: service-a
        subset: v2

所以在这里,当我将自定义标头 x-internal-request 设置为 true 时,我想尝试将流量路由到 v2 版本的 ServiceA。

问题

  • 为了使用此功能,我的服务是否必须知道 x-internal-header 并且必须将其传递给请求中的下一个服务?或者他们不需要处理它,因为 Istio 为他们完成了这项工作?

  • 为了使用这个功能,我需要使用 Istio Ingress Controller(带有 Istio 网关)而不是 Nginx Ingress Controller 吗?

今天,我正在使用 Nginx Ingress Controller 来公开我的一些服务。我们选择 Nginx 是因为它具有“外部授权”之类的功能,可以为我们节省大量工作,如果我们需要使用 Istio Ingress 控制器,我不确定它是否提供与 Nginx 相同的功能。

也许有一条我看不到的中间路径

感谢您的帮助

【问题讨论】:

    标签: istio nginx-ingress


    【解决方案1】:

    Istio 旨在将每个 Pod 上部署的Envoy 用作sidecars 来拦截和代理服务网格中微服务之间的网络流量。

    您也可以使用HTTP headers 处理通过Envoy 的请求和响应。根据官方Documentation,可以按以下顺序将自定义标头添加到请求/响应中:加权集群级别标头、路由级别标头、虚拟主机级别标头,最后是全局级别标头。因为您的 Envoy 代理作为 sidecar 部署在每个相关的服务 Pod 上,所以自定义 HTTP header 应该传递给每个请求或响应。​​

    我建议使用Istio Ingress Controller 及其核心组件Istio Gateway,它通常用于在Istio 网状服务中启用监控和路由规则功能。

    GitHub 上打开了一个关于在网格服务中实现Nginx Ingress controller 以及路由请求问题的问题。

    【讨论】:

    • 感谢您的回复。今天我们使用带有外部身份验证功能的 NGINX ngress 控制器。你知道 Istio 是否有这样的功能吗?也许可以使用 nginx 入口控制器作为具有自定义身份验证的前门,然后将请求传递给内部 istio 入口控制器?
    • 我在官方文档页面中没有找到 Istio Ingress Controller 中外部身份验证的任何解决方案,因此您可以尝试使用前端的 NGinx Ingress 控制器作为 Istio Ingress 服务的网关。跨度>
    • @FredMériot 如果您仍在寻找答案,我们将使用与您相同的 Nginx 功能并将 Istio 用作我们的服务网格。现在你只需要添加“traffic.sidecar.istio.io/includeInboundPorts:”,在这里查看选项1 github.com/istio/istio/issues/7776#issuecomment-412197907
    猜你喜欢
    • 2021-03-07
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    • 2021-11-02
    • 2019-04-17
    • 2018-11-15
    • 2019-03-23
    • 2018-10-29
    相关资源
    最近更新 更多