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 对象存储。

流程

  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 凭证创建 secret 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. 输入以下命令来获取 buckethost 值:

    $ route_host=$(oc get objectbucket $bucket_name -n openshift-storage -o=jsonpath='{.spec.endpoint.bucketHost}')
  6. 输入以下命令来创建使用入口证书的配置映射:

    $ oc extract secret/router-certs-default  -n openshift-ingress  --confirm
    $ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt  -n openshift-config
  7. 输入以下命令配置镜像 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 对象存储。

流程

  1. 使用 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 命名空间。
  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 凭证创建 secret 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_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
  6. 输入以下命令来创建使用入口证书的配置映射:

    $ oc extract secret/router-certs-default  -n openshift-ingress  --confirm
    $ oc create configmap image-registry-s3-bundle --from-file=ca-bundle.crt=./tls.crt  -n openshift-config
  7. 输入以下命令将镜像 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 文件存储。

流程

  1. 创建一个 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
  2. 输入以下命令配置镜像 registry,以使用 CephFS 文件系统存储:

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

3.8.4. 其他资源