2.4.3. 수동으로 보안 레지스트리 노출
OpenShift Container Platform 클러스터 내에서 OpenShift Container Platform 레지스트리에 로그인하는 대신 먼저 레지스트리를 보안한 다음 경로로 노출하여 외부에서 액세스할 수 있습니다. 이를 통해 라우팅 주소를 사용하여 클러스터 외부에서 레지스트리에 로그인하고 라우팅 호스트를 사용하여 이미지에 태그를 지정하거나 푸시할 수 있습니다.
다음 각 전제 조건 단계는 일반적인 클러스터 설치 중에 기본적으로 수행됩니다. 해당 노드가 없는 경우 수동으로 수행합니다.
초기 클러스터 설치 중에 레지스트리에 대해 기본적으로 passthrough 경로가 생성되어야 합니다.
경로가 있는지 확인합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고보안 레지스트리 노출에도 재암호화 경로가 지원됩니다.
존재하지 않는 경우 레지스트리를 경로의 서비스로 지정하여
oc create route passthrough
명령을 통해 경로를 만듭니다. 기본적으로 생성된 경로의 이름은 서비스 이름과 동일합니다.docker-registry 서비스 세부 정보를 가져옵니다.
oc get svc
$ oc get svc NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR AGE docker-registry 172.30.69.167 <none> 5000/TCP docker-registry=default 4h kubernetes 172.30.0.1 <none> 443/TCP,53/UDP,53/TCP <none> 4h router 172.30.172.132 <none> 80/TCP router=router 4h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 경로를 생성합니다.
oc create route passthrough \ --service=docker-registry \ --hostname=<host>
$ oc create route passthrough \ --service=docker-registry \
1 --hostname=<host> route "docker-registry" created
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
다음으로 호스트가 이미지를 푸시하고 가져올 수 있도록 호스트 시스템의 레지스트리에 사용되는 인증서를 신뢰해야 합니다. 레지스트리를 보호할 때 참조된 인증서가 생성되었습니다.
sudo mkdir -p /etc/docker/certs.d/<host> sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> sudo systemctl restart docker
$ sudo mkdir -p /etc/docker/certs.d/<host> $ sudo cp <ca_certificate_file> /etc/docker/certs.d/<host> $ sudo systemctl restart docker
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 레지스트리 보안 정보를 사용하여 레지스트리에 로그인합니다. 그러나 이번에는 서비스 IP가 아닌 경로에 사용된 호스트 이름을 가리킵니다. 보안 및 노출된 레지스트리에 로그인할 때
docker login
명령에서 레지스트리를 지정해야 합니다.docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
# docker login -e user@company.com \ -u f83j5h6 \ -p Ju1PeM47R0B92Lk3AZp-bWJSck2F7aGCiZ66aFGZrs2 \ <host>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제 경로 호스트를 사용하여 이미지에 태그를 지정하고 내보낼 수 있습니다. 예를 들어
test
라는 프로젝트에서busybox
이미지에 태그를 지정하고 푸시하려면 다음을 수행합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고이미지 스트림에는 경로 이름과 포트가 아닌 레지스트리 서비스의 IP 주소 및 포트가 있습니다. 자세한 내용은
oc get imagestreams
를 참조하십시오.