如何在 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 映像中禁用内存计算器