전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]

티스토리 뷰

OCP의 기본 local image registry는 아래와 같이 openshift-image-registry 네임스페이스의 image-registry이며 포트는 5000번입니다. 

따라서 regitry를 접근하기 위한 Service 주소는 image-registry.openshift-image-registry.svc:5000가 됩니다. 

(참고: 동일 클러스터 내에 있으므로 image-registry.openshift-image-registry.svc.cluster.local:5000와 같이 cluster.local까지 붙일 필요는 없음)

그럼 이 registry에 image를 어떻게 push해야 할까요 ?

먼저 bastion서버를 ssh로 접속합니다. bastion서버의 ip, id, pw, ssh port는 관리자에게 문의합니다. 

(본인 단말기에서 접속해도 되지만 보통 클러스터를 본인 단말기에서 접속하게 하지 못하게 하기 때문에 bastion서버를 들어가서 작업해야 합니다. 또한 podman이라는 docker CLI와 동일한 역할을 하는 container CLI를 설치하는게 복잡하기도 합니다.)

아래 부터는 bastion서버에서 작업합니다. 

podman의 명령은 docker와 거의 유사합니다. 따라서 docker 에서 image를 푸시할때의 순서와 동일하게 작업하면 됩니다. 

registry login ==> image tagging ==> image push

사전작업) kubepia라는 namespace를 먼저 작성하십시오. 

 

1. Login registry

위에서 구한 image-registry.openshift-image-registry.svc가 registry의 주소가  맞긴 하지만 이 주소는 container 내부에서만 접근이 가능합니다. 따라서 외부에서 접근할 주소가 필요합니다. 아래와 같이 openshift-image-registry의 Routes URL이 그것입니다. 

그럼 이제 주소는 알았으니, 아래와 같이 login하면 되는데, id와 pw를 알아야 합니다. 

$ podman login default-route-openshift-image-registry.apps.hcp.darumtech.net -u <user> -p <password>

우리가 배포할 image의 full 경로가 아래와 같다고 생각해 봅시다. 

default-route-openshift-image-registry.apps.hcp.darumtech.net/kubepia/busybox

여기서 kubepia가 reposory의 이름이고, namespace 'kubepia'에 push되게 되는것입니다.

따라서 image registry가 있는 'openshift-image-registry'가 아니라 image가 deploy될 'kubepia'에 권한이 있는 무언가로 로그인 해야 합니다.

아래와 같은 순서로 id와 pw를 구합니다. 

1) 'kubepia'네임 스페이스의 Service Account중 pipeline의 정보를 봅니다.  

2) secret중 pipeline-dockercfg로 시작하는 secret을 클릭합니다.

3) 아래로 쭉 내려서 우측에 'Reveal values'를 누릅니다. 

아래 값에서 username과 password값을 복사합니다. 

4) 이제 registry에 로그인 합니다. 

* default, builder, deploy라는 service account도 있는데 왜 꼭 pipeline 서비스어카운트의 secret값으로 로그인해야 하는지는 모르겠습니다. rolebinding된거 봐도 잘 이해가 안가더군요.

2. Image tagging

테스트를 위해 busybox이용해 보겠습니다.

$ podman pull docker.io/busybox

$ podman images

$ podman tag docker.io/library/busybox default-route-openshift-image-registry.apps.hcp.darumtech.net/kubepia/busybox

 

3. Image push

$ podman push default-route-openshift-image-registry.apps.hcp.darumtech.net/kubepia/busybox

 

위와 같이 정상적으로 푸시되면 성공입니다. 

댓글

전자책 출간 알림 [마이크로서비스패턴 쉽게 개발하기]