如何在 Redhat-SSO 映像中为 OpenShift 启用相互 SSL 验证模式

Posted

技术标签:

【中文标题】如何在 Redhat-SSO 映像中为 OpenShift 启用相互 SSL 验证模式【英文标题】:How to enable mutual SSL verification mode in Redhat-SSO image for OpenShift 【发布时间】:2019-06-21 12:21:17 【问题描述】:

我正在使用基于 Redhat-SSO 和 Keycloak 的模板 sso72-x509-postgresql-persistent 在 OpenShift 中创建应用程序。

我将启用它的双向 SSL 模式,这样用户在他的请求中只需要提供他的证书而不是用户名和密码。文档 (https://access.redhat.com/documentation/en-us/red_hat_single_sign-on/7.2/html-single/server_administration_guide/index#x509) 告诉我编辑standalone.xml 文件以添加配置部分。它工作得很好。

但是模板镜像 sso72-x509-postgresql-persistent 在这个过程中存在问题,因为它在 OpenShift 上部署后,docker 内文件的任何更改在 docker 重启后都丢失了。

除了制作我自己的 docker 映像之外,是否可以通过命令行或 API 等另一个级别的问题来启用相互 SSL 模式,而不是编辑配置文件?

【问题讨论】:

【参考方案1】:

好的,无论如何我都将其包括在内。由于权限问题,我无法使其正常工作(挂载的文件没有保留与以前相同的权限,因此容器继续失败。但是这个答案做了很多工作,所以希望它能指出你正确的方向!


您可以添加持久卷 (PV) 以确保您的配置更改在重新启动后仍然有效。您可以通过以下方式将 PV 添加到您的部署中:

不要这样做

oc set volume deploymentconfig sso --add -t pvc --name=sso-config --mount-path=/opt/eap/standalone/configuration --claim-mode=ReadWriteOnce --claim-size=1Gi

这将打开您的 RH-SSO 映像,其中包含空白的 configuration 目录,导致 pod 卡在 Back-off restarting failed container 中。你应该做的是:

    备份现有的配置文件

    oc rsync <rhsso_pod_name>:/opt/eap/standalone/configuration ~/
    

    创建一个临时的busybox 部署,它可以充当上传配置文件的中介。 等待部署完成

    oc run busybox --image=busybox --wait --command -- /bin/sh -c "while true; do sleep 10; done"
    

    将新 PV 挂载到 busybox 部署。 等待部署完成

    oc set volume deploymentconfig busybox --add -t pvc --name=sso-volume --claim-name=sso-config --mount-path=/configuration --claim-mode=ReadWriteOnce --claim-size=1Gi
    

    立即编辑您的配置文件

    通过busybox pod 将配置文件上传到您的新 PV

    oc rsync ~/configuration/ <busybox_pod_name>:/configuration/
    

    销毁busybox 部署

    oc delete all -l run=busybox --force --grace-period=0
    

    最后,您将已创建并准备就绪的持久配置附加到 RH SSO 部署

    oc set volume deploymentconfig sso --add -t pvc --name=sso-volume --claim-name=sso-config --mount-path=/opt/eap/standalone/configuration
    

一旦您的新部署......由于权限问题仍然失败:/

【讨论】:

以上是关于如何在 Redhat-SSO 映像中为 OpenShift 启用相互 SSL 验证模式的主要内容,如果未能解决你的问题,请参考以下文章

如何从 buildpack 生成的 docker 映像中禁用内存计算器

nodejs中如何访问ecs任务定义环境变量?

如何排列json数据?

在 Ubuntu 中为 android 创建 AVD

Android Studio (Windows) 中的 Flutter 错误:无法识别的选项:--add-opens

使用 Parse 进行范围查询