개인 이미지 레지스트리 만들기
같은 공용 레지스트리를 사용하여 대부분의 Red Hat OpenShift 배포에 사용됩니다 "키.오" 또는 "DockerHub를 참조하십시오" 고객의 대부분의 요구사항을 충족합니다. 그러나 고객이 자신의 개인 또는 사용자 지정 이미지를 호스팅하려는 경우가 있습니다.
이 절차에서는 Trident 및 NetApp ONTAP에서 제공하는 영구 볼륨으로 백업되는 개인 이미지 레지스트리를 만드는 방법에 대해 설명합니다.
Astra Control Center에는 Astra 컨테이너에 필요한 이미지를 호스팅하기 위한 레지스트리가 필요합니다. 다음 섹션에서는 Red Hat OpenShift 클러스터에 비공개 레지스트리를 설정하고 Astra Control Center 설치를 지원하는 데 필요한 이미지를 푸시하는 단계를 설명합니다. |
개인 이미지 레지스트리를 만드는 중입니다
-
현재 기본 스토리지 클래스에서 기본 주석을 제거하고 OpenShift 클러스터의 기본값으로 Trident 지원 스토리지 클래스에 주석을 추가합니다.
[netapp-user@rhel7 ~]$ oc patch storageclass thin -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}' storageclass.storage.k8s.io/thin patched [netapp-user@rhel7 ~]$ oc patch storageclass ocp-trident -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}' storageclass.storage.k8s.io/ocp-trident patched
-
'sepec' 부분에 다음과 같은 저장 매개변수를 입력하여 Imageregfollection 연산자를 편집합니다.
[netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io storage: pvc: claim:
-
사용자 지정 호스트 이름을 사용하여 OpenShift 경로를 생성하기 위해 'sepec' 섹션에 다음 매개 변수를 입력합니다. 저장하고 종료합니다.
routes: - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com name: netapp-astra-route
위 라우트 구성은 루트에 대한 사용자 지정 호스트 이름을 원하는 경우에 사용됩니다. OpenShift가 기본 호스트 이름을 사용하여 경로를 만들도록 하려면 'sepec' 섹션 ddefaultRoute: true'에 다음 매개 변수를 추가할 수 있습니다. -
상상의 궤변운영자를 다시 편집하고 운영자의 관리상태를 마노화 상태로 변경합니다. 저장하고 종료합니다.
oc edit configs.imageregistry/cluster managementState: Managed
-
모든 전제 조건이 충족되면 개인 이미지 레지스트리에 대해 PVC, POD 및 서비스가 생성됩니다. 몇 분 후에 레지스트리가 가동되어야 합니다.
[netapp-user@rhel7 ~]$oc get all -n openshift-image-registry NAME READY STATUS RESTARTS AGE pod/cluster-image-registry-operator-74f6d954b6-rb7zr 1/1 Running 3 90d pod/image-pruner-1627257600-f5cpj 0/1 Completed 0 2d9h pod/image-pruner-1627344000-swqx9 0/1 Completed 0 33h pod/image-pruner-1627430400-rv5nt 0/1 Completed 0 9h pod/image-registry-6758b547f-6pnj8 1/1 Running 0 76m pod/node-ca-bwb5r 1/1 Running 0 90d pod/node-ca-f8w54 1/1 Running 0 90d pod/node-ca-gjx7h 1/1 Running 0 90d pod/node-ca-lcx4k 1/1 Running 0 33d pod/node-ca-v7zmx 1/1 Running 0 7d21h pod/node-ca-xpppp 1/1 Running 0 89d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/image-registry ClusterIP 172.30.196.167 <none> 5000/TCP 15h service/image-registry-operator ClusterIP None <none> 60000/TCP 90d NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE daemonset.apps/node-ca 6 6 6 6 6 kubernetes.io/os=linux 90d NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/cluster-image-registry-operator 1/1 1 1 90d deployment.apps/image-registry 1/1 1 1 15h NAME DESIRED CURRENT READY AGE replicaset.apps/cluster-image-registry-operator-74f6d954b6 1 1 1 90d replicaset.apps/image-registry-6758b547f 1 1 1 76m replicaset.apps/image-registry-78bfbd7f59 0 0 0 15h replicaset.apps/image-registry-7fcc8d6cc8 0 0 0 80m replicaset.apps/image-registry-864f88f5b 0 0 0 15h replicaset.apps/image-registry-cb47fffb 0 0 0 10h NAME COMPLETIONS DURATION AGE job.batch/image-pruner-1627257600 1/1 10s 2d9h job.batch/image-pruner-1627344000 1/1 6s 33h job.batch/image-pruner-1627430400 1/1 5s 9h NAME SCHEDULE SUSPEND ACTIVE LAST SCHEDULE AGE cronjob.batch/image-pruner 0 0 * * * False 0 9h 90d NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD route.route.openshift.io/public-routes astra-registry.apps.ocp-vmw.cie.netapp.com image-registry <all> reencrypt None
-
수신 운영자 OpenShift 레지스트리 경로에 기본 TLS 인증서를 사용하는 경우 다음 명령을 사용하여 TLS 인증서를 가져올 수 있습니다.
[netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
-
OpenShift 노드가 레지스트리에 액세스하여 이미지를 가져올 수 있도록 하려면 OpenShift 노드의 Docker 클라이언트에 인증서를 추가합니다. TLS 인증서를 사용하여 OpenShift-config 네임스페이스에 configmap을 만들고 이를 클러스터 이미지 구성에 패치하여 인증서를 신뢰할 수 있도록 합니다.
[netapp-user@rhel7 ~]$ oc create configmap astra-ca -n openshift-config --from-file=astra-registry.apps.ocp-vmw.cie.netapp.com=tls.crt [netapp-user@rhel7 ~]$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"astra-ca"}}}' --type=merge
-
OpenShift 내부 레지스트리는 인증에 의해 제어됩니다. 모든 OpenShift 사용자는 OpenShift 레지스트리에 액세스할 수 있지만 로그인한 사용자가 수행할 수 있는 작업은 사용자 권한에 따라 다릅니다.
-
사용자 또는 사용자 그룹이 레지스트리에서 이미지를 가져올 수 있도록 하려면 사용자에게 레지스트리 뷰어 역할이 할당되어 있어야 합니다.
[netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-viewer ocp-user [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-viewer ocp-user-group
-
사용자 또는 사용자 그룹이 이미지를 쓰거나 푸시할 수 있도록 하려면 사용자에게 레지스트리 편집기 역할이 할당되어 있어야 합니다.
[netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-editor ocp-user [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-editor ocp-user-group
-
-
OpenShift 노드가 레지스트리에 액세스하고 이미지를 푸시 또는 풀려면 풀 비밀을 구성해야 합니다.
[netapp-user@rhel7 ~]$ oc create secret docker-registry astra-registry-credentials --docker-server=astra-registry.apps.ocp-vmw.cie.netapp.com --docker-username=ocp-user --docker-password=password
-
그런 다음 이 풀 암호는 serviceaccount에 패치하거나 해당 pod 정의에서 참조할 수 있습니다.
-
서비스 계정에 패치를 적용하려면 다음 명령을 실행합니다.
[netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
-
POD 정의의 Pull Secret을 참조하려면, 'sepec' 부분에 다음 파라미터를 추가한다.
imagePullSecrets: - name: astra-registry-credentials
-
-
OpenShift 노드 이외의 워크스테이션에서 이미지를 푸시하거나 풀려면 다음 단계를 완료하십시오.
-
Docker 클라이언트에 TLS 인증서를 추가합니다.
[netapp-user@rhel7 ~]$ sudo mkdir /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com [netapp-user@rhel7 ~]$ sudo cp /path/to/tls.crt /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com
-
OC 로그인 명령을 사용하여 OpenShift에 로그인합니다.
[netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
-
podman/docker 명령을 사용하여 OpenShift 사용자 자격 증명을 사용하여 레지스트리에 로그인합니다.
포더맨[netapp-user@rhel7 ~]$ podman login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t) --tls-verify=false
+참고: kubadmin 사용자를 사용하여 개인 레지스트리에 로그인하는 경우 암호 대신 토큰을 사용합니다.
Docker 를 참조하십시오[netapp-user@rhel7 ~]$ docker login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t)
+참고: kubadmin 사용자를 사용하여 개인 레지스트리에 로그인하는 경우 암호 대신 토큰을 사용합니다.
-
이미지를 밀거나 당깁니다.
포더맨[netapp-user@rhel7 ~]$ podman push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest [netapp-user@rhel7 ~]$ podman pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
Docker 를 참조하십시오[netapp-user@rhel7 ~]$ docker push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest [netapp-user@rhel7 ~]$ docker pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
-