如何在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
相关产品推荐
相关产品推荐

