2.4. 配置 Ceph 客户端身份验证
您可以为 Ceph 客户端配置身份验证以访问 Red Hat OpenStack Platform。
先决条件
- Ceph 监控主机的 root 级别访问权限。
- 一个正在运行的 Red Hat Ceph Storage 集群。
流程
从 Ceph 监控主机,为 Cinder、Cinder 备份和 Glance 创建新用户:
ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'
[root@mon ~]# ceph auth get-or-create client.cinder mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=volumes, allow rwx pool=vms, allow rx pool=images' [root@mon ~]# ceph auth get-or-create client.cinder-backup mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=backups' [root@mon ~]# ceph auth get-or-create client.glance mon 'allow r' osd 'allow class-read object_prefix rbd_children, allow rwx pool=images'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
client.cinder、client.cinder-backup和client.glance的密钥环添加到适当的节点,并更改其所有权:Copy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Nova 节点需要
nova-compute进程的密钥环文件:ceph auth get-or-create client.cinder | ssh NOVA_NODE tee /etc/ceph/ceph.client.cinder.keyring
[root@mon ~]# ceph auth get-or-create client.cinder | ssh NOVA_NODE tee /etc/ceph/ceph.client.cinder.keyringCopy to Clipboard Copied! Toggle word wrap Toggle overflow OpenStack Nova 节点还需要将
client.cinder用户的 secret 密钥存储在libvirt中。libvirt进程需要 secret 密钥来访问集群,同时从 Cinder 附加块设备。在 OpenStack Nova 节点上创建 secret 密钥的临时副本:ceph auth get-key client.cinder | ssh NOVA_NODE tee client.cinder.key
[root@mon ~]# ceph auth get-key client.cinder | ssh NOVA_NODE tee client.cinder.keyCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果存储集群包含使用
exclusive-lock功能的 Ceph 块设备镜像,请确保所有 Ceph 块设备用户都有 blocklist 客户端的权限:ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'
[root@mon ~]# ceph auth caps client.ID mon 'allow r, allow command "osd blacklist"' osd 'EXISTING_OSD_USER_CAPS'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 返回到 OpenStack Nova 主机:
ssh NOVA_NODE
[root@mon ~]# ssh NOVA_NODECopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 secret 生成 UUID,并保存用于配置
nova-compute的 secret 的 UUID:uuidgen > uuid-secret.txt
[root@nova ~]# uuidgen > uuid-secret.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您不一定需要所有 Nova 计算节点上的 UUID。但是,从平台一致性角度来说,最好保留相同的 UUID。
在 OpenStack Nova 节点上,将 secret 密钥添加到
libvirt中,并删除密钥的临时副本:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
libvirt设置并定义 secret:virsh secret-define --file secret.xml virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xml
[root@nova ~]# virsh secret-define --file secret.xml [root@nova ~]# virsh secret-set-value --secret $(cat uuid-secret.txt) --base64 $(cat client.cinder.key) && rm client.cinder.key secret.xmlCopy to Clipboard Copied! Toggle word wrap Toggle overflow