13.6.2. Pod가 다른 보안 레지스트리의 이미지를 참조하도록 허용
.dockercfg 파일(또는 최신 Docker 클라이언트의 경우 $HOME/.docker/config.json )은 이전에 보안 또는 비보안 레지스트리에 로그인한 경우 정보를 저장하는 Docker 인증 정보 파일입니다.
OpenShift Container Platform의 내부 레지스트리가 아닌 보안 컨테이너 이미지를 가져오려면 Docker 인증 정보에서 풀 시크릿 을 생성하여 서비스 계정에 추가해야 합니다.
보안 레지스트리의 .dockercfg 파일이 이미 있는 경우 다음을 실행하여 해당 파일에서 보안을 생성할 수 있습니다.
$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$HOME/.docker/config.json 파일이 있는 경우 다음을 수행합니다.
$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
보안 레지스트리의 Docker 인증 정보 파일이 아직 없는 경우 다음을 실행하여 시크릿을 생성할 수 있습니다.
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Pod의 이미지 가져오기에 시크릿을 사용하려면 서비스 계정에 이 시크릿을 추가해야 합니다. 이 예제의 서비스 계정 이름은 Pod에서 사용하는 서비스 계정 이름과 일치해야 합니다. default 는 기본 서비스 계정입니다.
$ oc secrets link default <pull_secret_name> --for=pull
빌드 이미지를 푸시하고 가져오는 데 시크릿을 사용하려면 Pod 내부에서 보안을 마운트할 수 있어야 합니다. 다음을 실행하여 수행할 수 있습니다.
$ oc secrets link builder <pull_secret_name>
13.6.2.1. eapd 인증을 사용하여 프라이빗 레지스트리에서 가져오기
개인 레지스트리는 별도의 서비스에 인증을 위임할 수 있습니다. 이 경우 인증 및 레지스트리 끝점 둘 다에 대해 이미지 풀 시크릿을 정의해야 합니다.
Red Hat Container Catalog의 타사 이미지는 Red Hat Connect 파트너 레지스트리(registry.connect.redhat.com
)를 통해 제공됩니다. 이 레지스트리는 sso.redhat.com
에 인증을 위임하므로 다음 절차가 적용됩니다.
위임된 인증 서버에 대한 시크릿을 생성합니다.
$ oc create secret docker-registry \ --docker-server=sso.redhat.com \ --docker-username=developer@example.com \ --docker-password=******** \ --docker-email=unused \ redhat-connect-sso secret/redhat-connect-sso
개인 레지스트리에 대한 시크릿을 생성합니다.
$ oc create secret docker-registry \ --docker-server=privateregistry.example.com \ --docker-username=developer@example.com \ --docker-password=******** \ --docker-email=unused \ private-registry secret/private-registry
Red Hat Connect 파트너 레지스트리(registry.connect.redhat.com
)는 자동 생성된 dockercfg
보안 유형(BZ#1476330)을 허용하지 않습니다. 일반 파일 기반 보안은 docker login
명령에서 생성된 파일을 사용하여 생성해야 합니다.
$ docker login registry.connect.redhat.com --username developer@example.com Password: ************* Login Succeeded $ oc create secret generic redhat-connect --from-file=.dockerconfigjson=.docker/config.json $ oc secrets link default redhat-connect --for=pull