首页 文章

具有相互tls的外部数据库的Istio ServiceEntry,无法连接到数据库服务

提问于
浏览
0

我正在使用带有 istio 1.0.2 versionistio 1.0.2 version ,我在k8s集群之外有一个mssql数据库,我想从istio注入的服务连接它 . 我尝试使用这个Consuming External TCP Services博客,但服务无法连接到外部的mssql实例 . 服务条目如下:

---
apiVersion: networking.istio.io/v1alpha3
kind: ServiceEntry
metadata:
  name: mssql-entry
  namespace: multitenancy
spec:
  hosts:
  - mssql-master
  addresses:
  - $outside-db-ip/32
  ports:
  - number: 2433
    name: db
    protocol: TCP
  location: MESH_EXTERNAL
  resolution: STATIC
  endpoints:
  - address: $outside-db-ip
    ports:
      tcp: 2433

---
apiVersion: v1
kind: Service
metadata:
  name: mssql-master
  namespace: multitenancy
  labels:
    app: v1
spec:
  ports:
    - port: 2433
      targetPort: 2433
      protocol: TCP
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mssql-master
  namespace: multitenancy
subsets:
  - addresses:
    - ip: $outside-db-ip
    ports:
    - port: 2433
      protocol: TCP

并且服务的日志显示“Prelogin错误:主机mssql-master端口2433错误读取prelogin响应:连接重置ClientConnectionId:”,似乎根本没有到达mssql . 如何为相互tls服务配置外部集群db?

1 回答

  • 0

    正如@SmileSees所提到的,通过禁用目标 mssql 实例的相互TLS身份验证已解决该问题 . 由于数据库实例位于Istio网格之外且没有为此服务注入 sidecar Envoy ,因此未 Build TLS安全连接 .

    您可以考虑使用SPIFFE框架来跨异构环境保护服务 .

    参考链接供进一步研究:

相关问题