我正在使用从 istio 服务网格中的 bitnami helm 图表安装的 postgres。我正在尝试从集群外部访问该数据库。当我点击已配置为允许 TCP 流量到达 postgres 的 istio 网关时(使用 go postgres 驱动程序,使用我的 postgres 数据库编辑器进行测试),连接被拒绝。
Postgres 连接没有显示在 istio 网关代理日志中,这表明它们没有被 istio 作为 TCP 读取(因此 istio 没有进行管理)。
如何让 istio 识别此流量并将其发送到我的 postgres 服务?
Istio 正在将 http 流量正确路由到我的其他服务。 Postgres 可以在 Nodeport 或 portforward 上访问,所以我知道它正在运行。
istio 网关
apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
name: my-app-gateway
spec:
selector:
istio: ingressgateway
- port:
number: 80
name: http
protocol: HTTP
hosts:
- "*"
- port:
number: 5432
name: tcp-postgresql
protocol: TCP
hosts:
- "*"
- port:
number: 443
name: https
protocol: HTTPS
tls:
mode: SIMPLE
credentialName: my-tls
hosts:
- "*"
postgres 虚拟服务
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: postgres-vs
spec:
hosts:
- "*"
gateways:
- my-app-gateway
tcp:
- match:
- port: 5432
route:
- destination:
port:
number: 5432
host: my-postgresql
Postgres 及其使用的服务是根据 bitnami helm 图表 创建的。我已经验证他们已注入并运行 Istio 代理 sidecar。
我读到Istio 无法为 Postgres 提供 TLS 发起,这是否意味着它根本无法通过 TCP 为 postgres 提供连接?
我也面临同样的问题。有没有人解答一下?