×

要配置在裸机和 vSphere 上使用 Red Hat OpenShift Data Foundation 存储的 OpenShift 镜像注册表,必须先安装 OpenShift Data Foundation,然后使用 Ceph 或 Noobaa 配置镜像注册表。

配置 Image Registry Operator 以将 Ceph RGW 存储与 Red Hat OpenShift Data Foundation 一起使用

Red Hat OpenShift Data Foundation 集成了多种存储类型,您可以将这些存储类型与 OpenShift 镜像注册表一起使用。

  • Ceph,一个共享的分布式文件系统和本地对象存储

  • NooBaa,提供多云对象网关

本文档概述了将镜像注册表配置为使用 Ceph RGW 存储的过程。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

  • 您可以访问 OpenShift Container Platform Web 控制台。

  • 您已安装 `oc` CLI。

  • 您已安装 OpenShift Data Foundation Operator 以提供对象存储和 Ceph RGW 对象存储。

步骤
  1. 使用 `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` 命名空间。
  2. 通过输入以下命令获取存储桶名称

    $ bucket_name=$(oc get obc -n openshift-storage rgwbucket -o jsonpath='{.spec.bucketName}')
  3. 通过输入以下命令获取 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)
  4. 通过输入以下命令在 `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
  5. 通过输入以下命令获取 `route` 主机

    $ route_host=$(oc get route ocs-storagecluster-cephobjectstore -n openshift-storage --template='{{ .spec.host }}')
  6. 通过输入以下命令创建使用入口证书的配置映射

    $ 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
  7. 通过输入以下命令配置镜像注册表以使用 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

配置 Image Registry Operator 以将 Noobaa 存储与 Red Hat OpenShift Data Foundation 一起使用

Red Hat OpenShift Data Foundation 集成了多种存储类型,您可以将这些存储类型与 OpenShift 镜像注册表一起使用。

  • Ceph,一个共享的分布式文件系统和本地对象存储

  • NooBaa,提供多云对象网关

本文档概述了将镜像注册表配置为使用 Noobaa 存储的过程。

先决条件
  • 您可以作为具有 `cluster-admin` 角色的用户访问集群。

  • 您可以访问 OpenShift Container Platform Web 控制台。

  • 您已安装 `oc` CLI。

  • 您已安装 OpenShift Data Foundation Operator 以提供对象存储和 Noobaa 对象存储。

步骤
  1. 使用 `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` 命名空间。
  2. 通过输入以下命令获取存储桶名称

    $ bucket_name=$(oc get obc -n openshift-storage noobaatest -o jsonpath='{.spec.bucketName}')
  3. 通过输入以下命令获取 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)
  4. 通过输入以下命令在 `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
  5. 通过输入以下命令获取 route 主机

    $ route_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
  6. 通过输入以下命令创建使用入口证书的配置映射

    $ 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
  7. 通过输入以下命令配置镜像注册表以使用 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

配置 Image Registry Operator 以将 CephFS 存储与 Red Hat OpenShift Data Foundation 一起使用

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 文件存储。

步骤
  1. 创建一个使用 `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
  2. 通过输入以下命令配置镜像注册表以使用 CephFS 文件系统存储

    $ oc patch config.image/cluster -p '{"spec":{"managementState":"Managed","replicas":2,"storage":{"managementState":"Unmanaged","pvc":{"claim":"registry-storage-pvc"}}}}' --type=merge