cat <<EOF | oc apply -f -
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: rgwbucket
namespace: openshift-storage (1)
spec:
storageClassName: ocs-storagecluster-ceph-rgw
generateBucketName: rgwbucket
EOF
要配置在裸机和 vSphere 上使用 Red Hat OpenShift Data Foundation 存储的 OpenShift 镜像注册表,必须先安装 OpenShift Data Foundation,然后使用 Ceph 或 Noobaa 配置镜像注册表。
Red Hat OpenShift Data Foundation 集成了多种存储类型,您可以将这些存储类型与 OpenShift 镜像注册表一起使用。
Ceph,一个共享的分布式文件系统和本地对象存储
NooBaa,提供多云对象网关
本文档概述了将镜像注册表配置为使用 Ceph RGW 存储的过程。
您可以作为具有 `cluster-admin` 角色的用户访问集群。
您可以访问 OpenShift Container Platform Web 控制台。
您已安装 `oc` CLI。
您已安装 OpenShift Data Foundation Operator 以提供对象存储和 Ceph RGW 对象存储。
使用 `ocs-storagecluster-ceph-rgw` 存储类创建对象存储桶声明。例如
cat <<EOF | oc apply -f -
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: rgwbucket
namespace: openshift-storage (1)
spec:
storageClassName: ocs-storagecluster-ceph-rgw
generateBucketName: rgwbucket
EOF
1 | 或者,您可以使用 `openshift-image-registry` 命名空间。 |
通过输入以下命令获取存储桶名称
$ bucket_name=$(oc get obc -n openshift-storage rgwbucket -o jsonpath='{.spec.bucketName}')
通过输入以下命令获取 AWS 凭据
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage rgwbucket -o jsonpath='{.data.AWS_ACCESS_KEY_ID}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage rgwbucket -o jsonpath='{.data.AWS_SECRET_ACCESS_KEY}' | base64 --decode)
通过输入以下命令在 `openshift-image-registry` 项目下创建包含新存储桶的 AWS 凭据的密钥 `image-registry-private-configuration-user`
$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
通过输入以下命令获取 `route` 主机
$ route_host=$(oc get route ocs-storagecluster-cephobjectstore -n openshift-storage --template='{{ .spec.host }}')
通过输入以下命令创建使用入口证书的配置映射
$ oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
通过输入以下命令配置镜像注册表以使用 Ceph RGW 对象存储
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
Red Hat OpenShift Data Foundation 集成了多种存储类型,您可以将这些存储类型与 OpenShift 镜像注册表一起使用。
Ceph,一个共享的分布式文件系统和本地对象存储
NooBaa,提供多云对象网关
本文档概述了将镜像注册表配置为使用 Noobaa 存储的过程。
您可以作为具有 `cluster-admin` 角色的用户访问集群。
您可以访问 OpenShift Container Platform Web 控制台。
您已安装 `oc` CLI。
您已安装 OpenShift Data Foundation Operator 以提供对象存储和 Noobaa 对象存储。
使用 `openshift-storage.noobaa.io` 存储类创建对象存储桶声明。例如
cat <<EOF | oc apply -f -
apiVersion: objectbucket.io/v1alpha1
kind: ObjectBucketClaim
metadata:
name: noobaatest
namespace: openshift-storage (1)
spec:
storageClassName: openshift-storage.noobaa.io
generateBucketName: noobaatest
EOF
1 | 或者,您可以使用 `openshift-image-registry` 命名空间。 |
通过输入以下命令获取存储桶名称
$ bucket_name=$(oc get obc -n openshift-storage noobaatest -o jsonpath='{.spec.bucketName}')
通过输入以下命令获取 AWS 凭据
$ AWS_ACCESS_KEY_ID=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_ACCESS_KEY_ID:" | head -n1 | awk '{print $2}' | base64 --decode)
$ AWS_SECRET_ACCESS_KEY=$(oc get secret -n openshift-storage noobaatest -o yaml | grep -w "AWS_SECRET_ACCESS_KEY:" | head -n1 | awk '{print $2}' | base64 --decode)
通过输入以下命令在 `openshift-image-registry` 项目下创建包含新存储桶的 AWS 凭据的密钥 `image-registry-private-configuration-user`
$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=${AWS_ACCESS_KEY_ID} --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=${AWS_SECRET_ACCESS_KEY} --namespace openshift-image-registry
通过输入以下命令获取 route 主机
$ route_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
通过输入以下命令创建使用入口证书的配置映射
$ oc extract secret/$(oc get ingresscontroller -n openshift-ingress-operator default -o json | jq '.spec.defaultCertificate.name // "router-certs-default"' -r) -n openshift-ingress --confirm
$ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt -n openshift-config
通过输入以下命令配置镜像注册表以使用 Noobaa 对象存储
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","s3":{"bucket":'\"${bucket_name}\"',"region":"us-east-1","regionEndpoint":'\"https://${route_host}\"',"virtualHostedStyle":false,"encrypt":false,"trustedCA":{"name":"image-registry-s3-bundle"}}}}}' --type=merge
Red Hat OpenShift Data Foundation 集成了多种存储类型,您可以将这些存储类型与 OpenShift 镜像注册表一起使用。
Ceph,一个共享的分布式文件系统和本地对象存储
NooBaa,提供多云对象网关
本文档概述了将镜像注册表配置为使用 CephFS 存储的过程。
CephFS 使用持久卷声明 (PVC) 存储。如果还有其他可用选项(例如 Ceph RGW 或 Noobaa),则不建议将 PVC 用于镜像注册表存储。 |
您可以作为具有 `cluster-admin` 角色的用户访问集群。
您可以访问 OpenShift Container Platform Web 控制台。
您已安装 `oc` CLI。
您已安装 OpenShift Data Foundation Operator 以提供对象存储和 CephFS 文件存储。
创建一个使用 `cephfs` 存储类的 PVC。例如
cat <<EOF | oc apply -f -
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: registry-storage-pvc
namespace: openshift-image-registry
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 100Gi
storageClassName: ocs-storagecluster-cephfs
EOF
通过输入以下命令配置镜像注册表以使用 CephFS 文件系统存储
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","pvc":{"claim":"registry-storage-pvc"}}}}' --type=merge