Image Registry - Public 프로젝트 관리

Print

Image Registry 서비스는 오픈소스프로젝트인 Harbor를 이용해 서비스 됩니다. Docker Image 관리를 위한 저장소 기능과 사용자 인증 기능을 제공합니다. 

여러 사용자 대상으로 서비스를 제공하기 위해 Public/Private 프로젝트를 생성해 이미지를 관리 할 수 있습니다. 추가 사항은 아래 가이드나 오픈소스 프로젝트 사이트의 사용자 가이드를 참고합니다. 



서비스를 사용하기 위해서 ZCP Console 사이드 메뉴에서 Image Registry 를 클릭합니다.

계정 생성

클러스터 관리자는 임의의 사용자를 직접 등록할 수 있습니다. 관리자로 로그인 하면 아래와 같이 Administration > Users > NEW USER 버튼을 클릭합니다.


아래와 같이 사용자 정보를 입력하고 OK 버튼을 누르면 사용자가 생성됩니다.

Public 프로젝트 생성

이미지 저장소를 프로젝트 별로 분리해 사용할 수 있습니다. 프로젝트 유형을 Public과 Private으로 설정할 수 있으며, 다음과 같은 차이가 있습니다. 

사용자 구분권한PublicPrivate
익명 사용자Pull (Read)OX
Push (Write)XX
로그인 사용자Pull (Read)OX
Push (Write)XX

Projects 메뉴를 선택하고 NEW PROJECT 버튼을 클릭합니다.

Project Name 을 입력하고 Public 의 메뉴를 체크한 후 OK 버튼을 클릭합니다.

Access level 의 Public 을 check 하면 누구나 해당 프로젝트를 볼 수 있습니다. 단 이미지를 Push하기 위해서는 프로젝트 멤버여야 합니다.

Access level 의 Public 을 check 하지 않으면 Private으로 생성되고 프로젝트 멤버가 아니면 해당 프로젝트를 볼 수 없습니다.

Project 가 생성된 모습입니다.

Project 명을 클릭하고, 우측의 PUSH IMAGE 메뉴를 클릭하면 이 프로젝트에 Image 를 올리는 docker command 를 확인할 수 있습니다.

프로젝트에 Image Push

Docker Client로...

Image Registry에 로그인

Public 프로젝트에 Image를 Push하거나 Private 프로젝트에 Image Pull 또는 Push 하기 위해서는 Image Registry에 로그인 해야 합니다. 

로그인은 다음 명령어를 수행하면 바로 로그인 됩니다. 로그인을 하기 위해서는 프로젝트 멤버로 등록되어 있어야만 합니다. 

$ docker login [IMAGE_REGISTRY_URL]
Username:                           # Image Registry 사용자 계정
Password:                           # Image Registry 사용자 비밀번호

Image Push 하기

Docker 명령어를 이용해서 Push 하는 방법은 기존 Image Push 하는 방법과 같습니다. Push 하기 전에 docker login을 수행해야 합니다. 

# 이미지 Tag를 생성합니다.
$ docker tag SOURCE_IMAGE[:TAG] [IMAGE_REGISTRY_URL]/[프로젝트명]/IMAGE[:TAG]


# 이미지를 Push 합니다.
$ docker push [IMAGE REGISTRY URL]/[프로젝트명]/IMAGE[:TAG]

Image Pull 하기 

Docker 명령어를 이용해서 Pull하는 방법은 접근할 수 있는 Image를 입력하면 됩니다. 

$ docker pull [IMAGE_REGISTRY_URL]/[프로젝트명]/IMAGE[:TAG]


Kubernetes Pod에서...

ImagePullSecret 생성 및 등록 하기

Kubernetes Pod에서 Private Image Registry를 사용할 경우 Docker login과 같은 인증 처리를 해야 합니다. 이를 위해 ImagePullSecret를 사용합니다.

네임스페이스에 생성된 Secret 을 아래 명령어로 확인합니다.

$ kubectl get secret --namespace my-namespace
NAME                  TYPE                                  DATA      AGE
my-docker-secret      kubernetes.io/dockerconfigjson        1         1d
my-tls-secret         kubernetes.io/tls                     2         1d

Pod을 생성하기 위해서 아래와 같이 imagePullSecrets에 Secret 명을 추가하면 Pod 생성시 해당 이미지를 사용할 수 있습니다. 

apiVersion: v1
kind: Pod
metadata:
  name: private-reg
spec:
  containers:
  - name: private-reg-container
    image: [IMAGE_REGISTRY_URL]/[프로젝트명]/IMAGE[:TAG]
  imagePullSecrets:
  - name: my-docker-secret

프로젝트 멤버 관리

프로젝트를 조회하거나 이미지를 Push하기 위해서는 프로젝트 Member로 등록되어 있어야만 합니다. 

화면에서와 같이 프로젝트에 들어가 Members 탭을 클릭하고 NEW MEMBER 버튼을 누르면 Member를 추가 할 수 있습니다.


다음과 같이 신규 Member 아이디와 역할을 입력할 수 있습니다. 


각 역할별로 수행할 수 있는 것들은 다음과 같습니다. 

역할수행 권한
Project Admin

프로젝트가 생성 됐을때, 생성자에게 권한이 부여됩니다.

프로젝트의 Read/Write 권한을 가집니다.

프로젝트 멤버 추가 삭제 권한을 가집니다.

Developer

프로젝트의 Read/Write 권한을 가집니다.

Guest

프로젝트의 Read 권한을 가집니다.

 

이 답변이 유용합니까? 아니오

Send feedback
도움이 되어드리지 못해 죄송합니다. 아티클 개선을 위해 의견을 제공해 주시기 바랍니다.