4.4. 使用对象存储服务


如果您将 Object Storage 用作服务,请将 Object Storage 服务(swift)纳入 OpenShift (RHOSO)环境中的 Red Hat OpenStack Services。如果您使用 Ceph 对象网关(RGW)的 Object Storage API,请跳过以下步骤。

先决条件

流程

  1. 创建包含对象存储服务哈希路径后缀和前缀的 swift-conf secret:

    $ 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
    Copy to Clipboard Toggle word wrap
  2. 创建包含对象存储服务 ring 文件的 swift-ring-files ConfigMap

    $ 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
    Copy to Clipboard Toggle word wrap
  3. 修补 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-storage 
    1
    
            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.80 
    2
    
                  spec:
                    type: LoadBalancer
            networkAttachments: 
    3
    
            - storage
    '
    Copy to Clipboard Toggle word wrap
    1
    必须与 RHOSO 部署存储类匹配。
    2
    如果使用 IPv6,请将负载均衡器 IP 更改为环境中的负载均衡器 IP,如 metallb.universe.tf/loadBalancerIPs: fd00:bbbb::80
    3
    必须与 RHOSP 部署中之前的对象存储服务配置的网络附加匹配。

验证

  • 检查生成的对象存储服务 pod:

    $ oc get pods -l component=swift-proxy
    Copy to Clipboard Toggle word wrap
  • 验证 Object Storage 代理服务是否在 Identity 服务(keystone)中注册:

    $ openstack service list | grep swift
    | b5b9b1d3c79241aa867fa2d05f2bbd52 | swift    | object-store |
    Copy to Clipboard Toggle word wrap
    $ 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        |
    Copy to Clipboard Toggle word wrap
  • 验证您是否能够上传和下载对象:

    $ 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!
    Copy to Clipboard Toggle word wrap
注意

Object Storage 数据仍然存储在现有的 RHOSP 节点上。有关将实际数据从 RHOSP 部署迁移到 RHOSO 部署的更多信息,请参阅将 Object Storage 服务(swift)数据从 RHOSP 迁移到 OpenShift (RHOSO)节点上的 Red Hat OpenStack Services

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat