8.3.8. 프라이빗 레지스트리에 Docker 자격 증명 사용
개인 컨테이너 레지스트리에 유효한 인증 정보를 사용하여 .docker/config.json 파일을 사용하여 빌드를 제공할 수 있습니다. 이 경우 출력 이미지를 개인 컨테이너 이미지 레지스트리로 내보내거나 인증이 필요한 개인 컨테이너 이미지 레지스트리에서 빌더 이미지를 가져올 수 있습니다.
OpenShift Container Platform 컨테이너 이미지 레지스트리의 경우 OpenShift Container Platform에서 보안이 자동으로 생성되므로 필요하지 않습니다.
.docker/config.json 파일은 기본적으로 홈 디렉터리에 있으며 다음과 같은 형식입니다.
auths: https://index.docker.io/v1/: 1 auth: "YWRfbGzhcGU6R2labnRib21ifTE=" 2 email: "user@example.com" 3
이 파일에서 여러 컨테이너 이미지 레지스트리 항목을 정의할 수 있습니다. 또는 docker login
명령을 실행하여 이 파일에 인증 항목을 추가할 수도 있습니다. 파일이 없는 경우 생성됩니다.
Kubernetes는 구성 및 암호를 저장하는 데 사용할 수 있는 Secret
오브젝트를 제공합니다.
로컬 .docker/config.json 파일에서 보안을 생성합니다.
$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
이 명령은
dockerhub
라는 보안의 JSON 사양을 생성한 후 오브젝트를 생성합니다.보안이 생성되면 builder 서비스 계정에 추가합니다. 각 빌드는
builder
역할로 실행되므로 다음 명령을 사용하여 시크릿에 액세스 권한을 부여해야 합니다.$ oc secrets link builder dockerhub
BuildConfig
의output
섹션에pushSecret
필드를 추가하고 생성한 보안 이름(위의 예에서dockerhub
:)으로 설정합니다.spec: output: to: kind: "DockerImage" name: "private.registry.com/org/private-image:latest" pushSecret: name: "dockerhub"
oc set build-secret
명령을 사용하여 빌드 구성에 내보내기 보안을 설정할 수도 있습니다.$ oc set build-secret --push bc/sample-build dockerhub
빌드 전략 정의의 일부인
pullSecret
필드를 지정하여 개인 컨테이너 이미지 레지스트리에서 빌더 컨테이너 이미지를 가져옵니다.strategy: sourceStrategy: from: kind: "DockerImage" name: "docker.io/user/private_repository" pullSecret: name: "dockerhub"
oc set build-secret
명령을 사용하여 빌드 구성에 가져오기 보안을 설정할 수도 있습니다.$ oc set build-secret --pull bc/sample-build dockerhub
이 예제에서는 소스 빌드에 pullSecret
을 사용하지만 Docker 및 Custom 빌드에도 적용할 수 있습니다.