【问题标题】:Istio ServiceEntry for multiple external databases going to the same databaseIstio ServiceEntry 用于将多个外部数据库连接到同一个数据库
【发布时间】:2020-03-16 10:36:37
【问题描述】:

我们的集群中有 2 个服务在同一个命名空间中,每个服务都使用自己的数据库,如下所示:

我们为每个数据库添加了2个ServiceEntry:

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: service-1
  namespace: mynamespace
spec:
  exportTo:
    - "."
  hosts:
    - service1-db.xxx.com
  ports:
    - number: 5432
      name: tcp
      protocol: tcp
  resolution: DNS
  location: MESH_EXTERNAL
...

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: service-2
  namespace: mynamespace
spec:
  exportTo:
    - "."
  hosts:
    - service2-db.xxx.com
  ports:
    - number: 5432
      name: tcp
      protocol: tcp
  resolution: DNS
  location: MESH_EXTERNAL
...

最终的交互看起来像这样,这不是预期的:

关于我们缺少什么的任何线索?

【问题讨论】:

  • 是否涉及任何负载平衡器或代理设置?
  • 你有哪个 istio 版本?
  • Istio 版本为 1.4

标签: amazon-web-services kubernetes cloud istio


【解决方案1】:

因此,最后,ServiceEntry 仅根据主机名不工作,但它也需要地址。

这是有效的:

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: service-1
  namespace: mynamespace
spec:
  exportTo:
    - "."
  hosts:
    - service1-db.xxx.com
  addresses:
    - xx.xx.xx.xx/32
  ports:
    - number: 5432
      name: tcp
      protocol: tcp
  resolution: NONE
  location: MESH_EXTERNAL
...

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: service-2
  namespace: mynamespace
spec:
  exportTo:
    - "."
  hosts:
    - service2-db.xxx.com
  addresses:
    - xx.xx.xx.yy/32
  ports:
    - number: 5432
      name: tcp
      protocol: tcp
  resolution: NONE
  location: MESH_EXTERNAL
...

这里是来自the documentation 的摘录,这些摘录让我们得出了这个结论。

如果地址字段为空,则将仅根据目标端口识别流量。在这种情况下,访问服务的端口不能被网格中的任何其他服务共享。

请注意,当解析设置为 DNS 类型且未指定端点时,主机字段将用作将流量路由到的端点的 DNS 名称。

注意:虽然这有助于解决此特定实例,但它会引发另一个使用动态 IP 地址的不同问题,例如某些应用程序试图访问 AWS 机密管理器。此类服务的 IP 地址不断变化,无法将其绑定到服务条目。因此,我们只为已知的外部流量添加服务条目,并允许其他未知流量。在 Kiali(Istio 的可视化工具)中,这些“未知数”显示为 PassThroughClusters,这很烦人,但只是问题的一半。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-05
    • 2021-04-20
    • 2022-07-11
    • 2018-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多