3.9. Nutanix의 레지스트리 구성
이 문서에 설명된 단계를 수행하여 사용자는 컨테이너 이미지 배포, 보안 및 액세스 제어를 최적화하여 OpenShift Container Platform에서 Nutanix 애플리케이션에 대한 강력한 기반을 활성화할 수 있습니다.
3.9.1. 설치 중 제거된 이미지 레지스트리
공유 가능한 개체 스토리지를 제공하지 않는 플랫폼에서 OpenShift Image Registry Operator는 자체적으로 Removed
로 부트스트랩합니다. 이를 통해 openshift-installer
가 이러한 플랫폼 유형에서 설치를 완료할 수 있습니다.
설치 후 managementState
를 Removed
에서 Managed
로 전환하도록 Image Registry Operator 구성을 편집해야 합니다.
3.9.2. 이미지 레지스트리의 관리 상태 변경
이미지 레지스트리를 시작하려면 Image Registry Operator 구성의 managementState
를 Removed
에서 Managed
로 변경해야 합니다.
절차
managementState
Image Registry Operator 구성을Removed
에서Managed
로 변경합니다. 예를 들면 다음과 같습니다.$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'
3.9.3. 이미지 레지스트리 스토리지 구성
기본 스토리지를 제공하지 않는 플랫폼에서는 처음에 Image Registry Operator를 사용할 수 없습니다. 설치한 후에 스토리지를 사용하도록 레지스트리를 구성하여 Registry Operator를 사용 가능하도록 만들어야 합니다.
프로덕션 클러스터에 필요한 영구 볼륨을 구성하는 과정의 지침이 표시됩니다. 해당하는 경우, 프로덕션 환경 외 클러스터에서만 사용할 수 있는 저장 위치로서 빈 디렉터리를 구성하는 과정의 지침이 표시됩니다.
업그레이드 중에 Recreate
롤아웃 전략을 사용하여 이미지 레지스트리의 블록 스토리지 유형 사용을 허용하기 위한 추가 지침이 제공됩니다.
3.9.3.1. Nutanix의 레지스트리 스토리지 구성
클러스터 관리자는 설치한 후 스토리지를 사용하도록 레지스트리를 구성해야 합니다.
전제 조건
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - Nutanix에 클러스터가 있어야 합니다.
Red Hat OpenShift Data Foundation과 같이 클러스터용 영구 스토리지를 프로비저닝했습니다.
중요OpenShift Container Platform은 복제본이 하나만 있는 경우 이미지 레지스트리 스토리지에 대한
ReadWriteOnce
액세스를 지원합니다.ReadWriteOnce
액세스에서는 레지스트리가Recreate
롤아웃 전략을 사용해야 합니다. 두 개 이상의 복제본으로 고 가용성을 지원하는 이미지 레지스트리를 배포하려면ReadWriteMany
액세스가 필요합니다.- 100Gi 용량이 있어야 합니다.
절차
스토리지를 사용하도록 레지스트리를 구성하기 위해
configs.imageregistry/cluster
리소스에서spec.storage.pvc
를 변경합니다.참고공유 스토리지를 사용하는 경우 보안 설정을 검토하여 외부 액세스를 방지합니다.
레지스트리 pod가 없는지 확인합니다.
$ oc get pod -n openshift-image-registry -l docker-registry=default
출력 예
No resourses found in openshift-image-registry namespace
참고출력에 레지스트리 Pod가 있는 경우 이 절차를 계속할 필요가 없습니다.
레지스트리 구성을 확인합니다.
$ oc edit configs.imageregistry.operator.openshift.io
출력 예
storage: pvc: claim: 1
- 1
image-registry-storage
영구 볼륨클레임
(PVC)을 자동으로 생성할 수 있도록 claim 필드를 비워 둡니다. PVC는 기본 스토리지 클래스를 기반으로 생성됩니다. 그러나 기본 스토리지 클래스는 RADOS 블록 장치(RBD)와 같은 RWO(ReadWriteOnce) 볼륨을 제공할 수 있으므로 두 개 이상의 복제본으로 복제할 때 문제가 발생할 수 있습니다.
clusteroperator
상태를 확인합니다.$ oc get clusteroperator image-registry
출력 예
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.13 True False False 6h50m
3.9.3.2. 프로덕션 환경 외 클러스터에서 이미지 레지스트리의 스토리지 구성
이미지 레지스트리 Operator에 대한 스토리지를 구성해야 합니다. 프로덕션 환경 외 클러스터의 경우, 이미지 레지스트리를 빈 디렉터리로 설정할 수 있습니다. 이렇게 하는 경우 레지스트리를 다시 시작하면 모든 이미지가 손실됩니다.
절차
이미지 레지스트리 스토리지를 빈 디렉터리로 설정하려면 다음을 수행하십시오.
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
주의프로덕션 환경 외 클러스터에 대해서만 이 옵션을 구성하십시오.
Image Registry Operator가 구성 요소를 초기화하기 전에 이 명령을 실행하면
oc patch
명령이 실패하며 다음 오류가 발생합니다.Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
몇 분 후에 명령을 다시 실행하십시오.
3.9.3.3. Nutanix 볼륨의 블록 레지스트리 스토리지 구성
클러스터 관리자로 업그레이드하는 동안 이미지 레지스트리가 Nutanix 볼륨과 같은 블록 스토리지 유형을 사용하도록 허용하려면 Recreate
롤아웃 전략을 사용할 수 있습니다.
블록 스토리지 볼륨 또는 블록 영구 볼륨은 지원되지만 프로덕션 클러스터에서 이미지 레지스트리와 함께 사용하는 것은 권장되지 않습니다. 레지스트리가 블록 스토리지에 구성된 설치는 레지스트리가 둘 이상의 복제본을 가질 수 없기 때문에 가용성이 높지 않습니다.
이미지 레지스트리와 함께 블록 스토리지 볼륨을 사용하도록 선택하는 경우 파일 시스템 PVC(영구 볼륨 클레임)를 사용해야 합니다.
프로세스
다음 명령을 입력하여 이미지 레지스트리 스토리지를 블록 스토리지 유형으로 설정하고,
Recreate
롤아웃 전략을 사용하도록 레지스트리를 패치하고, 하나의 (1
) 복제본으로만 실행됩니다.$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
블록 스토리지 장치에 PV를 프로비저닝하고 해당 볼륨의 PVC를 생성합니다. 요청된 블록 볼륨은 RWO(ReadWriteOnce) 액세스 모드를 사용합니다.
다음 내용으로
pvc.yaml
파일을 생성하여 NutanixPersistentVolumeClaim
오브젝트를 정의합니다.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: image-registry-storage 1 namespace: openshift-image-registry 2 spec: accessModes: - ReadWriteOnce 3 resources: requests: storage: 100Gi 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를 생성하면
image-registry-storage
PVC의 기본 자동 생성을 위해claim
필드를 비워 둘 수 있습니다.
3.9.3.4. Red Hat OpenShift Data Foundation에서 Ceph RGW 스토리지를 사용하도록 Image Registry Operator 구성
Red Hat OpenShift Data Foundation은 OpenShift 이미지 레지스트리에 사용할 수 있는 여러 스토리지 유형을 통합합니다.
- 공유 및 분산 파일 시스템 및 온-프레미스 오브젝트 스토리지인 Ceph
- NooBaa, Multicloud Object Gateway 제공
이 문서에서는 Ceph RGW 스토리지를 사용하도록 이미지 레지스트리를 구성하는 절차를 간략하게 설명합니다.
전제 조건
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
-
oc
CLI를 설치했습니다. - 오브젝트 스토리지 및 Ceph RGW 오브젝트 스토리지를 제공하기 위해 OpenShift Data Foundation Operator 를 설치했습니다.
절차
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
다음 명령을 입력하여
buckethost
값을 가져옵니다.$ route_host=$(oc get objectbucket $bucket_name -n openshift-storage -o=jsonpath='{.spec.endpoint.bucketHost}')
다음 명령을 입력하여 Ingress 인증서를 사용하는 구성 맵을 생성합니다.
$ 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
다음 명령을 입력하여 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.9.3.5. Red Hat OpenShift Data Foundation에서 Noobaa 스토리지를 사용하도록 Image Registry Operator 구성
Red Hat OpenShift Data Foundation은 OpenShift 이미지 레지스트리에 사용할 수 있는 여러 스토리지 유형을 통합합니다.
- 공유 및 분산 파일 시스템 및 온-프레미스 오브젝트 스토리지인 Ceph
- NooBaa, Multicloud Object Gateway 제공
이 문서에서는 Noobaa 스토리지를 사용하도록 이미지 레지스트리를 구성하는 절차에 대해 간단히 설명합니다.
전제 조건
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
-
oc
CLI를 설치했습니다. - 오브젝트 스토리지 및 Noobaa 오브젝트 스토리지를 제공하기 위해 OpenShift Data Foundation Operator 를 설치했습니다.
절차
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_host=$(oc get route s3 -n openshift-storage -o=jsonpath='{.spec.host}')
다음 명령을 입력하여 Ingress 인증서를 사용하는 구성 맵을 생성합니다.
$ 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
다음 명령을 입력하여 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.9.4. Red Hat OpenShift Data Foundation에서 CephFS 스토리지를 사용하도록 Image Registry Operator 구성
Red Hat OpenShift Data Foundation은 OpenShift 이미지 레지스트리에 사용할 수 있는 여러 스토리지 유형을 통합합니다.
- 공유 및 분산 파일 시스템 및 온-프레미스 오브젝트 스토리지인 Ceph
- NooBaa, Multicloud Object Gateway 제공
이 문서에서는 CephFS 스토리지를 사용하도록 이미지 레지스트리를 구성하는 절차에 대해 간단히 설명합니다.
CephFS는 PVC(영구 볼륨 클레임) 스토리지를 사용합니다. Ceph RGW 또는 Noobaa와 같은 다른 옵션이 있는 경우 이미지 레지스트리 스토리지에 PVC를 사용하지 않는 것이 좋습니다.
전제 조건
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다. - OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
-
oc
CLI를 설치했습니다. - 오브젝트 스토리지 및 CephFS 파일 스토리지를 제공하기 위해 OpenShift Data Foundation Operator 를 설치했습니다.
절차
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