$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
在不提供可共享对象存储的平台上,OpenShift镜像注册表操作符将自身引导为Removed
。这允许openshift-installer
在这些平台类型上完成安装。
安装后,必须编辑镜像注册表操作符配置以将managementState
从Removed
切换到Managed
。完成此操作后,必须配置存储。
要启动镜像注册表,必须将镜像注册表操作符配置的managementState
从Removed
更改为Managed
。
将managementState
镜像注册表操作符配置从Removed
更改为Managed
。例如
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
镜像注册表操作符最初不适用于不提供默认存储的平台。安装后,必须配置注册表以使用存储,以便使注册表操作符可用。
显示了配置持久卷的说明,这是生产集群所需的。在适用情况下,显示了将空目录配置为存储位置的说明,这只适用于非生产集群。
提供了其他说明,允许镜像注册表在升级期间使用`Recreate`滚动策略使用块存储类型。
作为集群管理员,安装后必须配置注册表以使用存储。
您可以作为具有cluster-admin
角色的用户访问集群。
您的集群使用手动配置的Red Hat Enterprise Linux CoreOS (RHCOS) 节点,例如裸机。
您已为集群配置了持久性存储,例如Red Hat OpenShift Data Foundation。
当您只有一个副本时,OpenShift Container Platform支持镜像注册表存储的 |
必须有100Gi容量。
要配置注册表以使用存储,请更改configs.imageregistry/cluster
资源中的spec.storage.pvc
。
当您使用共享存储时,请检查您的安全设置以防止外部访问。 |
验证您没有注册表Pod
$ oc get pod -n openshift-image-registry -l docker-registry=default
No resources found in openshift-image-registry namespace
如果您的输出中确实有注册表Pod,则无需继续执行此过程。 |
检查注册表配置
$ oc edit configs.imageregistry.operator.openshift.io
storage:
pvc:
claim:
将claim
字段留空,以允许自动创建image-registry-storage
PVC。
检查clusteroperator
状态
$ oc get clusteroperator image-registry
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE
image-registry 4.17 True False False 6h50m
确保您的注册表设置为已管理,以启用镜像的构建和推送。
运行
$ oc edit configs.imageregistry/cluster
然后,更改该行
managementState: Removed
为
managementState: Managed
必须为镜像注册表操作符配置存储。对于非生产集群,您可以将镜像注册表设置为空目录。如果您这样做,如果您重新启动注册表,所有镜像都将丢失。
要将镜像注册表存储设置为空目录
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
仅为非生产集群配置此选项。 |
如果您在镜像注册表操作符初始化其组件之前运行此命令,则oc patch
命令将失败并出现以下错误
Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
等待几分钟,然后再次运行该命令。
要允许镜像注册表在升级期间作为集群管理员使用块存储类型,您可以使用Recreate
滚动策略。
块存储卷或块持久卷受支持,但不建议在生产集群中与镜像注册表一起使用。在注册表在块存储上配置的安装中,不可用,因为注册表不能有多个副本。 如果您选择使用块存储卷与镜像注册表一起使用,则必须使用文件系统持久卷声明 (PVC)。 |
输入以下命令以将镜像注册表存储设置为块存储类型,修补注册表使其使用Recreate
滚动策略,并仅使用一个 (1
) 副本运行
$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
为块存储设备配置PV,并为该卷创建PVC。请求的块卷使用ReadWriteOnce (RWO) 访问模式。
创建一个包含以下内容的pvc.yaml
文件,以定义VMware vSphere PersistentVolumeClaim
对象
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: image-registry-storage (1)
namespace: openshift-image-registry (2)
spec:
accessModes:
- ReadWriteOnce (3)
resources:
requests:
storage: 100Gi (4)
1 | 代表PersistentVolumeClaim 对象的唯一名称。 |
2 | PersistentVolumeClaim 对象的命名空间,即openshift-image-registry 。 |
3 | 持久卷声明的访问模式。使用ReadWriteOnce ,该卷可以由单个节点以读写权限装载。 |
4 | 持久卷声明的大小。 |
输入以下命令以从文件创建PersistentVolumeClaim
对象
$ oc create -f pvc.yaml -n openshift-image-registry
输入以下命令以编辑注册表配置,使其引用正确的PVC
$ oc edit config.imageregistry.operator.openshift.io -o yaml
storage:
pvc:
claim: (1)
1 | 通过创建自定义PVC,您可以将claim 字段留空,以进行默认的image-registry-storage PVC的自动创建。 |
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 }}')
输入以下命令创建使用Ingress证书的ConfigMap:
$ 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}')
输入以下命令创建使用Ingress证书的ConfigMap:
$ 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