设置对 EDB Postgres 服务实例的访问权

重要信息: IBM Cloud Pak® for Data 4.8 版本将于 2025 年 7 月 31 日结束支持 (EOS)。 欲了解更多信息,请参阅 IBM Cloud Pak for Data 版本 4.X 的停止服务公告

IBM Cloud Pak for Data 4.8 版本支持结束之前,升级到 IBM Software Hub 5.1 版本。 有关更多信息,请参阅IBM Cloud Pak for Data 版本 4.8 升级到 IBM Software Hub 版本 5.1

您可以从 Kubernetes 集群连接到 EDB Postgres 服务。

关于本任务

有关更多信息,请参阅 EDB Postgres 文档中的从应用程序连接

您需要 EDB Postgres 实例名称才能连接到数据库。

过程

执行以下步骤以连接到 EDB Postgres 服务:

  1. 检索已部署的 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
  2. 检索实例凭证。
    凭证存储为 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 私钥用于需要更大特权的管理目的。

  3. 从私钥中抽取用户名和密码。
    您可以从 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 服务实例。
  4. 可选: 配置端口转发以检索 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 服务实例。
  5. 访问服务实例。
    通过使用服务实例名称 (如果使用端口转发,那么使用本地主机) ,端口和凭证,现在可以使用 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 中抽取的密码。

下一步操作