17.2. 为外部数据库定义服务
最常见的外部服务类型是外部数据库。要支持外部数据库,应用程序需要:
- 一个要与之通信的端点。
一组凭证和协调,包括:
- 用户名
- 密码短语
- 数据库名称
与外部数据库集成的解决方案包括:
-
一个
Service
对象,它将 SaaS 供应商表示为 OpenShift Container Platform 服务。 -
服务的一个或多个
端点
。 - 含有凭据的适当 pod 中的环境变量。
下列步骤概述了与外部 MySQL 数据库集成的情况:
17.2.1. 第 1 步:定义服务 复制链接链接已复制到粘贴板!
您可以通过提供 IP 地址和端点来定义服务,或者提供完全限定域名(FQDN)。
17.2.1.1. 使用 IP 地址 复制链接链接已复制到粘贴板!
创建一个 OpenShift Container Platform 服务来 代表您的外部数据库。这与创建内部服务类似,差异在服务的
Selector
字段中。内部 OpenShift Container Platform 服务使用
Selector
字段,通过 标签 将 pod 与服务关联。EndpointsController
系统组件将指定选择器的服务端点与与选择器匹配的 pod 同步。服务代理和 OpenShift Container Platform 路由器在服务端点之间对服务进行负载均衡。代表外部资源的服务不需要关联的 pod。相反,请保留
Selector
字段未设置。这代表了外部服务,使EndpointsController
忽略该服务并允许手动指定端点:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 接下来,为该服务创建所需的端点。这为服务代理和路由器提供发送到服务的流量的位置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
17.2.1.2. 使用外部域名 复制链接链接已复制到粘贴板!
使用外部域名可以更轻松地管理外部服务链接,因为您不必担心外部服务的 IP 地址更改。
ExternalName
服务没有选择器,或者任何定义的端口或端点,您可以使用 ExternalName
服务将流量定向到外部服务。
- 1
- 将
selector
字段留为空。
使用外部域名服务会通知系统在 externalName
字段中(上例中的example.domain.name
)中的 DNS 名称是恢复该服务的资源位置。针对 Kubernetes DNS 服务器发出 DNS 请求时,它会在 CNAME 记录中返回 externalName
,告知客户端查找返回的名称以获取 IP 地址。