4.4. 在 OpenShift 服务中提供对 Red Hat OpenStack Services 的安全访问
您必须创建一个 Secret
自定义资源(CR),以提供对 OpenShift (RHOSO)服务 pod 上的 Red Hat OpenStack Services 的安全访问。以下流程为每个服务创建一个具有所需密码格式的 Secret
CR。
有关为您生成所需密码和 fernet 密钥的 Secret
CR 示例,请参阅示例 Secret
CR 以了解有关对 RHOSO 服务 pod 的安全访问。
部署 control plane 后,您无法更改服务密码。如果在部署 control plane 后在 osp-secret
中更改了服务密码,则会重新配置服务以使用新密码,但 Identity 服务(keystone)中不会更新密码。这会导致服务中断。
先决条件
- 已安装 python3-cryptography。
流程
-
在工作站上创建一个
Secret
CR,如openstack_service_secret.yaml
。 将以下初始配置添加到
openstack_service_secret.yaml
:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<base64_password
> 替换为 base64 编码的 32 个字符的密钥。注意HeatAuthEncryptionKey
密码必须是用于编排服务(heat)加密的 32 个字符的密钥。如果您增加所有其他服务的密码长度,请确保HeatAuthEncryptionKey
密码长度为 32。您可以使用以下命令手动生成 base64 编码密码:
echo -n <password> | base64
$ echo -n <password> | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,如果您使用 Linux 工作站,并且您使用 Bash 命令(如
cat
)生成Secret
CR,您可以将 <base64_password
> 替换为为每个服务自动生成随机密码:$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
$(tr -dc 'A-Za-z0-9' < /dev/urandom | head -c 32 | base64)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将 &
lt;base64_fernet_key&
gt; 替换为 base64 编码的 fernet 密钥。您可以使用以下命令手动生成它:$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode('UTF-8'))" | base64)
$(python3 -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode('UTF-8'))" | base64)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在集群中创建
Secret
CR:oc create -f openstack_service_secret.yaml -n openstack
$ oc create -f openstack_service_secret.yaml -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证是否已创建
Secret
CR:oc describe secret osp-secret -n openstack
$ oc describe secret osp-secret -n openstack
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.4.1. 安全访问 RHOSO 服务 pod 的 Secret CR 示例 复制链接链接已复制到粘贴板!
您必须创建一个 Secret
自定义资源(CR)文件,以提供对 OpenShift (RHOSO)服务 pod 上的 Red Hat OpenStack Services 的安全访问。
如果使用 Linux 工作站,您可以使用以下 Bash cat
命令创建一个名为 openstack_service_secret.yaml
的 Secret
CR 文件,为您生成所需的密码和 fernet 密钥: