3.8. 为 Red Hat OpenShift Data Foundation 配置 registry
要在裸机和 vSphere 上配置 OpenShift 镜像 registry 以使用 Red Hat OpenShift Data Foundation 存储,您必须安装 OpenShift Data Foundation,然后使用 Ceph 或 Noobaa 配置镜像 registry。
3.8.1. 将 Image Registry Operator 配置为使用带有 Red Hat OpenShift Data Foundation 的 Ceph RGW 存储
Red Hat OpenShift Data Foundation 集成了多个可与 OpenShift 镜像 registry 搭配使用的存储类型:
- Ceph、共享和分布式文件系统以及内部对象存储
- NooBaa 提供多云对象网关
本文档概述了将镜像 registry 配置为使用 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 凭证创建 secretimage-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
输入以下命令配置镜像 registry,以使用 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
3.8.2. 配置 Image Registry Operator,将 Noobaa 存储与 Red Hat OpenShift Data Foundation 一起使用
Red Hat OpenShift Data Foundation 集成了多个可与 OpenShift 镜像 registry 搭配使用的存储类型:
- Ceph、共享和分布式文件系统以及内部对象存储
- NooBaa 提供多云对象网关
本文档概述了将镜像 registry 配置为使用 Noobaa 存储的步骤。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 访问 OpenShift Container Platform web 控制台。
-
已安装
oc
CLI。 - 已安装 OpenShift Data Foundation Operator 以提供对象存储和 Noobaa 对象存储。
流程
使用
openshift-storage.nooba.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 凭证创建 secretimage-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_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
输入以下命令将镜像 registry 配置为使用 Nooba 对象存储:
$ 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
3.8.3. 配置 Image Registry Operator,以使用 Red Hat OpenShift Data Foundation 的 CephFS 存储
Red Hat OpenShift Data Foundation 集成了多个可与 OpenShift 镜像 registry 搭配使用的存储类型:
- Ceph、共享和分布式文件系统以及内部对象存储
- NooBaa 提供多云对象网关
本文档概述了配置镜像 registry 以使用 CephFS 存储的步骤。
CephFS 使用持久性卷声明 (PVC) 存储。如果存在其他选项,如 Ceph RGW 或 Noobaa,则不建议将 PVC 用于镜像 registry 存储。
先决条件
-
您可以使用具有
cluster-admin
角色的用户访问集群。 - 访问 OpenShift Container Platform web 控制台。
-
已安装
oc
CLI。 - 已安装 OpenShift Data Foundation Operator,以提供对象存储和 CephFS 文件存储。
流程
创建一个 PVC 来使用
cephfs
存储类。例如: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
输入以下命令配置镜像 registry,以使用 CephFS 文件系统存储:
$ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","pvc":{"claim":"registry-storage-pvc"}}}}' --type=merge