无法通过服务构造连接到现有的Azure数据库

时间:2019-07-29 19:29:14

标签: azure spring-boot kubernetes azure-kubernetes

我正在尝试将现有的Azure mssql服务器作为服务映射到我的kubernetes集群,但看来我的应用程序无法连接到它。

这是我的配置文件,我在做什么错?也许是因为我正在特定的名称空间上执行此操作?

---
apiVersion: v1
kind: Service
metadata:
  name: my-database
spec:
  type: ExternalName
  externalName: mydb.database.windows.net

然后,在我的应用程序中,我只使用以下字符串:

spring.datasource.url: jdbc:sqlserver://my-database:1433;databaseName=DATABASE_DEV

如果我使用数据库主机mydb.database.windows.net,则一切正常,因此这不是连接问题,而是与我的服务配置有关的问题。

2 个答案:

答案 0 :(得分:2)

一种解决方案是创建Service without a selector,然后创建Endpoints的{​​{1}}对象。类似于我在这里的答案: Kubernetes pod unable to connect to rabbit mq instance running locally

只是无视关于本地主机的讨论...

答案 1 :(得分:0)

对于这个问题,我认为您误解了Kubernetes服务。看一下Service。该服务仅将访问流量重定向到Kubernetes Pods,而不是Azure资源。

对于服务的外部名称类型,它显示工作过程here

  

在查找主机my-service.prod.svc.cluster.local时,   群集DNS服务返回带有值的CNAME记录   my.database.example.com。访问我的服务的工作方式与   其他服务,但区别在于重定向   发生在DNS级别,而不是通过代理或转发。   如果您以后决定将数据库移到群集中,   可以启动其Pod,添加适当的选择器或端点并进行更改   服务的类型。

因此,如果要访问Azure数据库,则只能使用Azure为您提供的数据库服务器名称***.database.windows.net。对您来说,它是mydb.database.windows.net