当前位置: 首页 > 知识库问答 >
问题:

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

穆阳嘉
2023-03-14

我使用istio 1.0.2版本与istio-demo-auth.yaml,我有一个mssql db外面的k8s群集,我想连接它形成istio注入服务。我尝试使用此消耗外部TCP服务博客,但服务无法连接到外部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

服务日志显示“预登录错误:主机mssql-master端口2433读取预登录响应错误:连接重置ClientConnectionId:”,似乎根本没有到达mssql。如何为相互tls服务配置外部集群数据库?

共有1个答案

姜乐家
2023-03-14

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

可以考虑使用Spffe框架来保护跨异构环境的服务。

供进一步研究参考的链接:

  1. 相互TLS认证
 类似资料:
  • DB是这样设置的。 AppDB AppLogDB AppAuditDB apparchivedb ... 我有一些例子,其中AppDB有引用其他表的视图/过程/等。也有其他DBs访问AppDB的情况(即ArchiveDB存储过程将从AppDB拉出)。 有了不同数据库之间的这种依赖关系,FlyWay是否可以按照所需的顺序处理迁移/清理?例如: 如果我有这样的脚本顺序 AppDB v1__create

  • 我是docker的新手,我想用Docker-compose启动一个keycloak容器。我正在使用一个mariadb和数据库启动成功。但是当启动keycloak容器时,它会出现这个错误。 原因:java.sql.sqlnontransientconnectionException:无法连接到address=(Host=Project-DB)(Port=3308)(Type=master):套接字无

  • 我一直在努力使用数据库URL概述部分提到的以下连接字符串从Spring Boot应用程序连接H2数据库: 我还尝试了许多不同的tcp(服务器模式)连接组合,但仍然出现错误,例如“连接中断:”java。网运行Spring Boot app时,SocketTimeoutException:连接超时:localhost:9092”。 那么,如何解决这个问题并通过服务器模式连接到H2数据库呢?

  • 问题内容: 所以我在用Java连接MySQL时遇到问题。这是我的代码: 我得到的错误是线程“ main”中的异常 http://postimg.org/image/593stjvjx/ 在mySQL工作台中,我的连接名是“ worlddb”,主机名是Liquidus(是本地主机) 套接字是MySQL 端口:3306 为什么是这样? 问题答案: 图片中的模式与连接的名称和Database,try w

  • 我正在尝试学习jsp页面中的数据库连接。下面是我的代码: 这是我的servlet: 下面是我的dbConnect类: 问题是,在connect()函数中,当涉及行class.forName(“com.mysql.jdbc.driver”)时。newInstance();它会产生一个错误并进入catch块。这里出了什么问题,有人能帮忙吗?多谢了。 编辑:我按照Nambari说的做了,现在我在行con

  • 获取以下代码的错误 我得到的输出错误是