You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenShift 4.x中连接RedHat SSO至外部PostgreSQL数据库

将OpenShift中的RHSSO连接至外部Azure PostgreSQL 14的配置方法

一、使用RHSSO Operator配置外部数据库

1. 创建数据库连接Secret

在OpenShift中创建包含Azure PostgreSQL连接信息的Secret:

apiVersion: v1
kind: Secret
metadata:
  name: rhsso-postgres-secret
  namespace: <RHSSO部署命名空间>
type: Opaque
stringData:
  DB_JDBC_URL: jdbc:postgresql://<Azure PostgreSQL服务器地址>:5432/<目标数据库名>?sslmode=require
  DB_USERNAME: <数据库用户名>
  DB_PASSWORD: <数据库密码>
  DB_DRIVER: org.postgresql.Driver
  DB_DIALECT: org.hibernate.dialect.PostgreSQLDialect

执行创建命令:

oc apply -f <secret文件路径>

2. 配置RHSSO自定义资源

编辑你的RHSSO实例自定义资源(CR),添加外部数据库配置引用:

apiVersion: keycloak.org/v1alpha1
kind: Keycloak
metadata:
  name: rhsso-instance
  namespace: <RHSSO部署命名空间>
spec:
  db:
    vendor: postgres
    urlSecret: rhsso-postgres-secret
  # 保留原有实例配置(如 replicas、storage 等)

注:若使用旧版RHSSO Operator,CR类型可能为RHSSO而非Keycloak,需对应调整。

3. 验证部署

应用修改后的CR:

oc apply -f <CR文件路径>

等待Operator重新部署实例,查看日志确认连接状态:

oc logs -f <rhsso-pod名称> -c keycloak

二、修改RHSSO模板以支持外部数据库

若使用模板部署,需调整模板默认配置:

1. 导出现有RHSSO模板

将OpenShift内置的RHSSO模板导出到本地:

oc get template <目标RHSSO模板名> -n openshift -o yaml > rhsso-external-postgres.yaml

常见模板名如rhss72-sso,可通过oc get templates -n openshift | grep sso查看。

2. 修改模板配置

  • 添加外部数据库参数定义:
    parameters:
      - name: DB_EXTERNAL_URL
        displayName: 外部PostgreSQL JDBC地址
        description: Azure PostgreSQL的JDBC连接URL
        required: true
      - name: DB_EXTERNAL_USERNAME
        displayName: 外部数据库用户名
        required: true
      - name: DB_EXTERNAL_PASSWORD
        displayName: 外部数据库密码
        required: true
    
  • 替换DeploymentConfig中的数据库环境变量:
    spec:
      template:
        spec:
          containers:
            - name: keycloak
              env:
                - name: DB_VENDOR
                  value: POSTGRES
                - name: DB_JDBC_URL
                  value: "${DB_EXTERNAL_URL}"
                - name: DB_USER
                  value: "${DB_EXTERNAL_USERNAME}"
                - name: DB_PASSWORD
                  value: "${DB_EXTERNAL_PASSWORD}"
                - name: DB_DRIVER
                  value: org.postgresql.Driver
                - name: DB_DIALECT
                  value: org.hibernate.dialect.PostgreSQLDialect
    
  • 删除模板中自带的内部PostgreSQL服务、DeploymentConfig等资源定义。

3. 导入模板并部署

将修改后的模板导入OpenShift:

oc apply -f rhsso-external-postgres.yaml -n openshift

使用该模板创建RHSSO实例,填入Azure PostgreSQL的连接信息即可。

三、关键注意事项

  • Azure网络配置:需将OpenShift集群的节点IP或Pod CIDR添加至Azure PostgreSQL的防火墙规则,允许外部连接。
  • SSL强制要求:Azure PostgreSQL默认启用SSL,JDBC URL必须包含sslmode=require参数。
  • 数据库权限:确保使用的数据库用户拥有创建表、修改schema的权限,RHSSO需初始化数据库结构。
  • 版本兼容性:建议使用RHSSO 7.6及以上版本(对应Keycloak 18+),确保支持PostgreSQL 14。

内容的提问来源于stack exchange,提问作者prairitm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 19:42:48