4.4. 使用对象存储服务
如果您将 Object Storage 用作服务,请将 Object Storage 服务(swift)纳入 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services。如果您使用 Ceph 对象网关(RGW)的 Object Storage API,请跳过以下步骤。
先决条件
- 对象存储服务存储后端服务在 Red Hat OpenStack Platform (RHOSP)部署中运行。
- 在 Red Hat OpenShift Container Platform (RHOCP)集群中正确配置了存储网络。如需更多信息,请参阅在 OpenShift 上部署 Red Hat OpenStack Services 中的 为 OpenShift 上的 Red Hat OpenStack Services 准备 Red Hat OpenShift Container Platform。
流程
创建包含对象存储服务哈希路径后缀和前缀的
swift-confsecret:$ oc apply -f - <<EOF apiVersion: v1 kind: Secret metadata: name: swift-conf type: Opaque data: swift.conf: $($CONTROLLER1_SSH sudo cat /var/lib/config-data/puppet-generated/swift/etc/swift/swift.conf | base64 -w0) EOF创建包含对象存储服务 ring 文件的
swift-ring-filesConfigMap:$ oc apply -f - <<EOF apiVersion: v1 kind: ConfigMap metadata: name: swift-ring-files binaryData: swiftrings.tar.gz: $($CONTROLLER1_SSH "cd /var/lib/config-data/puppet-generated/swift/etc/swift && tar cz *.builder *.ring.gz backups/ | base64 -w0") account.ring.gz: $($CONTROLLER1_SSH "base64 -w0 /var/lib/config-data/puppet-generated/swift/etc/swift/account.ring.gz") container.ring.gz: $($CONTROLLER1_SSH "base64 -w0 /var/lib/config-data/puppet-generated/swift/etc/swift/container.ring.gz") object.ring.gz: $($CONTROLLER1_SSH "base64 -w0 /var/lib/config-data/puppet-generated/swift/etc/swift/object.ring.gz") EOF修补
OpenStackControlPlane自定义资源来部署对象存储服务:$ oc patch openstackcontrolplane openstack --type=merge --patch ' spec: swift: enabled: true template: memcachedInstance: memcached swiftRing: ringReplicas: 1 swiftStorage: replicas: 0 networkAttachments: - storage storageClass: local-storage1 storageRequest: 10Gi swiftProxy: secret: osp-secret replicas: 1 passwordSelectors: service: SwiftPassword serviceUser: swift override: service: internal: metadata: annotations: metallb.universe.tf/address-pool: internalapi metallb.universe.tf/allow-shared-ip: internalapi metallb.universe.tf/loadBalancerIPs: 172.17.0.802 spec: type: LoadBalancer networkAttachments:3 - storage '
验证
检查生成的对象存储服务 pod:
$ oc get pods -l component=swift-proxy验证 Object Storage 代理服务是否在 Identity 服务(keystone)中注册:
$ openstack service list | grep swift | b5b9b1d3c79241aa867fa2d05f2bbd52 | swift | object-store |$ openstack endpoint list | grep swift | 32ee4bd555414ab48f2dc90a19e1bcd5 | regionOne | swift | object-store | True | public | https://swift-public-openstack.apps-crc.testing/v1/AUTH_%(tenant_id)s | | db4b8547d3ae4e7999154b203c6a5bed | regionOne | swift | object-store | True | internal | http://swift-internal.openstack.svc:8080/v1/AUTH_%(tenant_id)s |验证您是否能够上传和下载对象:
$ openstack container create test +---------------------------------------+-----------+------------------------------------+ | account | container | x-trans-id | +---------------------------------------+-----------+------------------------------------+ | AUTH_4d9be0a9193e4577820d187acdd2714a | test | txe5f9a10ce21e4cddad473-0065ce41b9 | +---------------------------------------+-----------+------------------------------------+ $ openstack object create test --name obj <(echo "Hello World!") +--------+-----------+----------------------------------+ | object | container | etag | +--------+-----------+----------------------------------+ | obj | test | d41d8cd98f00b204e9800998ecf8427e | +--------+-----------+----------------------------------+ $ openstack object save test obj --file - Hello World!
Object Storage 数据仍然存储在现有的 RHOSP 节点上。有关将实际数据从 RHOSP 部署迁移到 RHOSO 部署的更多信息,请参阅将 Object Storage 服务(swift)数据从 RHOSP 迁移到 OpenShift (RHOSO)节点上的 Red Hat OpenStack Services。