我安装了 Istio
gateways.istio-egressgateway.enabled = true
Run Code Online (Sandbox Code Playgroud)
当我尝试连接到外部数据库时,我收到错误。我没有域(只有ip和端口),所以我定义了以下规则:
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
name: external-db
spec:
hosts:
- external-db.tcp.svc
addresses:
- 190.64.31.232/32
ports:
- number: 3306
name: tcp
protocol: TCP
location: MESH_EXTERNAL
resolution: STATIC
endpoints:
- address: 190.64.31.232
Run Code Online (Sandbox Code Playgroud)
然后我在我的系统中打开一个 Shell(部署在我的服务网格中)并且它无法解析名称
$ ping external-db.tcp.svc
ping: ceip-db.tcp.svc: Name or service not known
Run Code Online (Sandbox Code Playgroud)
但我可以使用IP地址连接
$ ping 190.64.31.232
PING 190.64.31.232 (190.64.31.232) 56(84) bytes of data.
64 bytes from 190.64.31.232: icmp_seq=1 ttl=249 time=1.35 ms
64 bytes from 190.64.31.232: icmp_seq=2 ttl=249 time=1.42 ms
Run Code Online (Sandbox Code Playgroud)
怎么了?我必须使用域名或 IP 进行连接吗?我可以为我的外部 IP 定义一个内部域吗?
您可以使用硬编码的 IP 端点创建无头服务:
---
apiVersion: v1
kind: Service
metadata:
name: external-db
spec:
clusterIP: None
ports:
- protocol: TCP
port: 3306
---
apiVersion: v1
kind: Endpoints
metadata:
name: external-db
subsets:
- addresses:
- ip: 190.64.31.232
ports:
- port: 3306
Run Code Online (Sandbox Code Playgroud)
然后你可以向你的 ServiceEntry 添加一个主机external-db.default.svc.cluster.local
归档时间: |
|
查看次数: |
5990 次 |
最近记录: |