您可以从 Kubernetes 集群连接到 EDB Postgres 服务。
关于本任务
有关更多信息,请参阅 EDB Postgres 文档中的从应用程序连接。
您需要 EDB Postgres 实例名称才能连接到数据库。
过程
执行以下步骤以连接到 EDB Postgres 服务:
- 检索已部署的 EDB Postgres 服务实例。
Cloud Native PostgreSQL 自动为每个
Kubernetes 集群提供 4 服务实例。 使用以下命令来检索这些服务实例:
% kubectl get services -o name -n ${PROJECT_CPD_INST_OPERANDS}
该命令将返回类似于以下示例的信息:
service/<instance_name>-edb-db-any
service/<instance_name>-edb-db-r
service/<instance_name>-edb-db-ro
service/<instance_name>-edb-db-rw
- 检索实例凭证。
凭证存储为
Kubernetes 私钥,缺省情况下会自动为服务实例生成凭证。 运行以下命令以检索实例私钥:
% kubectl get secrets -o name -n ${PROJECT_CPD_INST_OPERANDS}
该命令将返回您的私钥,并显示为类似于以下示例:
secret/<instance_name>-edb-db-app
secret/<instance_name>-edb-db-superuser
将 secret/<instance_name>-edb-db-app 私钥用于典型工作负载。 将 secret/<instance_name>-edb-db-superuser 私钥用于需要更大特权的管理目的。
- 从私钥中抽取用户名和密码。
您可以从
OpenShift® Container Platform 控制台或命令行中抽取此信息。
- 使用 OpenShift Container Platform:
- 单击 私钥,然后选择所需的私钥并复制用户名和密码值。
- 使用命令行进行安装的步骤如下:
- 运行以下命令以抽取用户名和密码:
oc get secret/edb0210-1-edb-db-app -o jsonpath='{.data.username}{"\n"}'
oc get secret/edb0210-1-edb-db-app -o jsonpath='{.data.password}{"\n"}'
输出将是编码字符串。 运行以下命令对其进行解码:echo "<encoded_string>" | base64 -d
现在,您可以使用用户名和密码来访问 EDB Postgres 服务实例。
- 可选: 配置端口转发以检索 EDB Postgres 服务实例。
部署
EDB Postgres 服务实例后,可以在外部公开服务实例,以允许在
Kubernetes 集群外部进行访问。 请咨询网络管理员,以了解针对您的环境执行此操作的方法。 下面显示了端口转发的一个示例。
使用以下命令来配置端口转发:
% kubectl port-forward service/ad-edb-db-rw 5454:5432 -n ${PROJECT_CPD_INST_OPERANDS}
这将生成类似于以下示例的输出:
Forwarding from 127.0.0.1:5454 -> 5432
Forwarding from [::1]:5454 -> 5432
现在可以从本地 5432 端口检索
EDB Postgres 服务实例。
- 访问服务实例。
通过使用服务实例名称 (如果使用端口转发,那么使用本地主机) ,端口和凭证,现在可以使用
PostgreSQL 客户机来访问服务。 下面显示了一个示例。
psql -p <server_port> -h <server_host> -U <username>
输出将类似于以下内容:
Password for user app: Password for user app: psql (14.4, server 14.4.0) WARNING: psql major version 14, server major version 14.
Some psql features might not work. SSL connection (protocol: TLSv1.3, cipher: TLS_AES_256_GCM_SHA384, bits: 256, compression: off)
Type "help" for help. app=> show db_dialect; db_dialect ------------ redwood(1 row)
使用您在步骤 3 中抽取的密码。