4.4. Ceph secret 密钥站点分发
当您使用多个 Ceph 后端部署分布式计算节点(DCN)环境时,您可以为每个后端创建一个 Ceph 密钥。为了安全起见,请将最少的 Ceph 密钥数量分发到每个站点。为每个位置创建一个 secret。
- 将每个 Ceph 后端的密钥添加到默认位置的 secret 中。
- 为默认 Ceph 后端添加密钥,以及每个额外位置的本地 ceph 后端。
对于三个位置: az0、 az1 和 az2,您必须有三个 secret。位置 az1 和 az2 各自都有本地后端的密钥以及 az0 的密钥。位置 az0 包含所有 Ceph 后端密钥。
您可以在 Ceph 部署到每个边缘位置后创建所需的 secret,并收集每个 secret 的密钥环和配置文件。或者,您可以根据需要部署每个 Ceph 后端,并使用每个边缘部署更新 secret。
流程
为位置
az0创建 secret。如果您在所有需要存储的边缘站点部署了 Red Hat Ceph Storage (RHCS),请为
az0创建一个 secret,其中包含所有密钥环和conf文件:oc create secret generic ceph-conf-az-0 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf \ --from-file=az1.client.openstack.keyring \ --from-file=az1.conf \ --from-file=az2.client.openstack.keyring \ --from-file=az2.conf -n openstack如果您还没有在所有边缘站点上部署 RHCS,请为
az0创建一个 secret,其中包含az0的密钥环和conf文件:oc create secret generic ceph-conf-az-0 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf -n openstack
当您在可用区 1 (z1)的边缘位置部署 RHCS 时,为位置
创建一个 secret,其中包含本地后端的密钥环和az1conf文件,以及默认后端:oc create secret generic ceph-conf-az-1 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf \ --from-file=az1.client.openstack.keyring \ --from-file=az1.conf -n openstack如果需要,为中央位置更新 secret:
oc delete secret ceph-conf-az-0 -n openstack oc create secret generic ceph-conf-az-0 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf \ --from-file=az1.client.openstack.keyring \ --from-file=az1.conf -n openstack当您在可用区 2 (z2)的边缘位置部署 RHCS 时,为位置
创建一个 secret,其中包含本地后端的密钥环和az2conf文件,以及默认后端:oc create secret generic ceph-conf-az-2 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf \ --from-file=az2.client.openstack.keyring \ --from-file=az2.conf -n openstack如果需要,为中央位置更新 secret:
oc delete secret ceph-conf-az-0 -n openstack oc create secret generic ceph-conf-az-0 \ --from-file=az0.client.openstack.keyring \ --from-file=az0.conf \ --from-file=az1.client.openstack.keyring \ --from-file=az1.conf \ --from-file=az1.client.openstack.keyring \ --from-file=az1.conf \ --from-file=az2.client.openstack.keyring \ --from-file=az2.conf[可选] 完成创建所需密钥后,您可以验证它们是否出现在
openstack命名空间中:oc get secret -n openstack -o name | grep ceph-conf输出示例:
secret/ceph-conf-az-0 secret/ceph-conf-az-1 secret/ceph-conf-az-2创建
OpenStackDataPlaneNodeSet时,请使用extraMounts字段下的适当的键:apiVersion: dataplane.openstack.org/v1beta1 kind: OpenStackDataPlaneNodeSet metadata: name: openstack-edpm-dcn-0 namespace: openstack spec: ... nodeTemplate: extraMounts: - extraVolType: Ceph volumes: - name: ceph secret: secretName: ceph-conf-az-0 mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true在创建 data plane NodeSet 时,还必须使用 secret 名称更新
OpenStackControlPlane自定义资源(CR):apiVersion: core.openstack.org/v1beta1 kind: OpenStackControlPlane spec: extraMounts: - name: v1 region: r1 extraVol: - propagation: - az0 - CinderBackup extraVolType: Ceph volumes: - name: ceph secret: name: ceph-conf-az-0 mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true - propagation: - az1 extraVolType: Ceph volumes: - name: ceph secret: name: ceph-conf-az-1 mounts: - name: ceph mountPath: "/etc/ceph" readOnly: true ...注意如果
CinderBackup服务是部署的一部分,则必须将其包含在传播列表中,因为它在其 pod 名称中没有可用区。当您更新
OpenStackControlPlaneCR 中的glanceAPIs字段时,Image 服务(glance) pod 名称与extraMounts 传播实例匹配:glanceAPIs: az0: customServiceConfig: | ... az1: customServiceConfig: | ...当您更新
OpenStackControlPlaneCR 中的cinderVolumes字段时,块存储服务(cinder) pod 名称也必须与extraMounts 传播实例匹配:kind: OpenStackControlPlane spec: <...> cinder <...> cinderVolumes: az0: <...> az1: <...>