dro*_*bot 2 cloud amazon-web-services kubernetes istio
我们的集群中有 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
...
Run Code Online (Sandbox Code Playgroud)
由此产生的交互看起来像这样,这是意料之中的:
关于我们缺少什么的任何线索?
所以,最后,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
...
Run Code Online (Sandbox Code Playgroud)
以下是导致我们得出这一结论的文档摘录。
如果地址字段为空,则将仅根据目标端口识别流量。在这种情况下,访问服务的端口不得与网格中的任何其他服务共享。
请注意,当解析设置为类型 DNS 且未指定端点时,主机字段将用作端点的 DNS 名称以将流量路由到。
注意:虽然这有助于解决此特定实例,但它开启了另一个不同的使用动态 IP 地址的问题,例如某些应用程序试图访问 AWS 机密管理器。此类服务的 ip 地址不断变化,无法将其绑定到服务条目。所以,我们只为已知的外部流量添加了服务条目,并允许其他人不知道。在 Kiali(Istio 的可视化器)中,这些“未知数”显示为 PassThroughClusters,这很烦人,但只是问题的一半。
| 归档时间: |
|
| 查看次数: |
1279 次 |
| 最近记录: |