第 5 章 Red Hat Openshift Container Storage 环境中的 S3 兼容对象存储
对 Container-Native Storage 中的 S3 兼容对象存储的支持技术预览。红帽服务级别协议(SLA)不支持技术预览功能,且功能可能并不完善,且不适用于生产环境。
技术预览功能提供早期对最新的产品创新访问权限,使客户能够在开发过程中测试功能并提供反馈。
红帽一般会考虑使"技术预览"功能的未来迭代保持可用,我们以商业上合理的努力来解决客户在使用这些功能时遇到的任何问题。
对象存储为数据存储提供了一个系统,允许用户访问与对象和文件相同的数据,从而简化管理并控制存储成本。S3 API 是基于 HTTP 对对象存储服务访问的事实标准。
S3 兼容对象存储仅适用于 Red Hat Openshift Container Storage 3.11.4 和旧版本。
5.1. 为 Red Hat Openshift Container Storage 设置 S3 兼容对象存储 复制链接链接已复制到粘贴板!
在设置 S3 Compatible Object Store 前,确保已安装了 cns-deploy 软件包。有关如何安装 cns-deploy 软件包的详情,请参考 https://access.redhat.com/documentation/en-us/red_hat_openshift_container_storage/3.11/html-single/deployment_guide/#part-Appendix
从 /usr/share/heketi/templates/ 目录中执行以下步骤来为 Red Hat Openshift Container Storage 设置 S3 兼容对象存储:
(可选):如果要为 heketi 创建 secret,请执行以下命令:
# oc create secret generic heketi-${NAMESPACE}-admin-secret --from-literal=key=${ADMIN_KEY} --type=kubernetes.io/glusterfs例如:
# oc create secret generic heketi-storage-project-admin-secret --from-literal=key=abcd --type=kubernetes.io/glusterfs执行以下命令标记 secret:
# oc label --overwrite secret heketi-${NAMESPACE}-admin-secret glusterfs=s3-heketi-${NAMESPACE}-admin-secret gluster-s3=heketi-${NAMESPACE}-admin-secret例如:
# oc label --overwrite secret heketi-storage-project-admin-secret glusterfs=s3-heketi-storage-project-admin-secret gluster-s3=heketi-storage-project-admin-secret
创建 GlusterFS StorageClass 文件。使用当前设置的
HEKETI_URL和NAMESPACE,并设置STORAGE_CLASS名称。# sed -e 's/${HEKETI_URL}/<HEKETI_URL>/g' -e 's/${STORAGE_CLASS}/<STORAGE_CLASSNAME>/g' -e 's/${NAMESPACE}/<NAMESPACE_NAME>/g' /usr/share/heketi/templates/gluster-s3-storageclass.yaml | oc create -f -例如:
# sed -e 's/${HEKETI_URL}/heketi-storage-project.cloudapps.mystorage.com/g' -e 's/${STORAGE_CLASS}/gluster-s3-store/g' -e 's/${NAMESPACE}/storage-project/g' /usr/share/heketi/templates/gluster-s3-storageclass.yaml | oc create -f -storageclass "gluster-s3-store" created注意您可以运行以下命令来获取 HEKETI_URL:
# oc get routes --all-namespaces | grep heketi命令输出示例如下:
glusterfs heketi-storage heketi-storage-glusterfs.router.default.svc.cluster.local heketi-storage <all> None如果输出中有多个行,您可以选择最相关的选项。
您可以运行以下命令来获取 NAMESPACE:
oc get project命令输出示例如下:
# oc project Using project "glusterfs" on server "master.example.com:8443"其中,glusterfs 是 NAMESPACE。
使用存储类创建持久性卷声明。
# sed -e 's/${VOLUME_CAPACITY}/<NEW SIZE in Gi>/g' -e 's/${STORAGE_CLASS}/<STORAGE_CLASSNAME>/g' /usr/share/heketi/templates/gluster-s3-pvcs.yaml | oc create -f -例如:
# sed -e 's/${VOLUME_CAPACITY}/2Gi/g' -e 's/${STORAGE_CLASS}/gluster-s3-store/g' /usr/share/heketi/templates/gluster-s3-pvcs.yaml | oc create -f - persistentvolumeclaim "gluster-s3-claim" created persistentvolumeclaim "gluster-s3-meta-claim" created使用上一步中创建的
STORAGE_CLASS。根据环境要求修改VOLUME_CAPACITY。等待 PVC 已被绑定。使用以下命令验证相同的命令:# oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE gluster-s3-claim Bound pvc-0b7f75ef-9920-11e7-9309-00151e000016 2Gi RWX 2m gluster-s3-meta-claim Bound pvc-0b87a698-9920-11e7-9309-00151e000016 1Gi RWX 2m使用模板启动 glusters3 对象存储服务。设置
S3_account名称、S3_USER名称和S3_PASSWORD。PVC和META_PVC从上一步中获得。# oc new-app /usr/share/heketi/templates/gluster-s3-template.yaml \ --param=S3_ACCOUNT=testvolume --param=S3_USER=adminuser \ --param=S3_PASSWORD=itsmine --param=PVC=gluster-s3-claim \ --param=META_PVC=gluster-s3-meta-claim --> Deploying template "storage-project/gluster-s3" for "/usr/share/heketi/templates/gluster-s3-template.yaml" to project storage-project gluster-s3 --------- Gluster s3 service template * With parameters: * S3 Account Name=testvolume * S3 User=adminuser * S3 User Password=itsmine * Primary GlusterFS-backed PVC=gluster-s3-claim * Metadata GlusterFS-backed PVC=gluster-s3-meta-claim --> Creating resources ... service "gluster-s3-service" created route "gluster-s3-route" created deploymentconfig "gluster-s3-dc" created --> Success Run 'oc status' to view your app.执行以下命令验证 S3 pod 是否正在运行:
# oc get pods -o wide NAME READY STATUS RESTARTS AGE IP NODE gluster-s3-azkys 1/1 Running 0 4m 10.130.0.29 node3 ..