3.8. 개인 레지스트리에 Docker 자격 증명 사용
개인 컨테이너 레지스트리에 유효한 자격 증명이 있는 docker/config.json
파일을 사용하여 빌드를 제공할 수 있습니다. 이 경우 출력 이미지를 개인 컨테이너 이미지 레지스트리로 내보내거나 인증이 필요한 개인 컨테이너 이미지 레지스트리에서 빌더 이미지를 가져올 수 있습니다.
동일한 레지스트리에 있는 여러 리포지토리에 대한 인증 정보를 제공하고 각각 해당 레지스트리 경로와 관련된 인증 정보를 제공할 수 있습니다.
OpenShift Container Platform 컨테이너 이미지 레지스트리의 경우 OpenShift Container Platform에서 보안이 자동으로 생성되므로 필요하지 않습니다.
.docker/config.json
파일은 기본적으로 홈 디렉터리에 있으며 다음과 같은 형식을 취합니다.
auths: index.docker.io/v1/: 1 auth: "YWRfbGzhcGU6R2labnRib21ifTE=" 2 email: "user@example.com" 3 docker.io/my-namespace/my-user/my-image: 4 auth: "GzhYWRGU6R2fbclabnRgbkSp="" email: "user@example.com" docker.io/my-namespace: 5 auth: "GzhYWRGU6R2deesfrRgbkSp="" email: "user@example.com"
여러 컨테이너 이미지 레지스트리를 정의하거나 동일한 레지스트리에 여러 리포지토리를 정의할 수 있습니다. 또는 docker login
명령을 실행하여 이 파일에 인증 항목을 추가할 수도 있습니다. 파일이 없는 경우 생성됩니다.
Kubernetes는 구성 및 암호를 저장하는 데 사용할 수 있는 Secret
오브젝트를 제공합니다.
사전 요구 사항
-
.docker/config.json
파일이 있어야 합니다.
프로세스
로컬
.docker/config.json
파일에서 보안을 생성합니다.$ oc create secret generic dockerhub \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
이 명령은
dockerhub
라는 보안의 JSON 사양을 생성한 후 오브젝트를 생성합니다.BuildConfig
의output
섹션에pushSecret
필드를 추가하고 생성한secret
이름(위 예의 경우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
pushSecret
필드를 지정하는 대신 빌드에서 사용하는 서비스 계정에 내보내기 보안을 연결할 수도 있습니다. 기본적으로 빌드에서는builder
서비스 계정을 사용합니다. 보안에 빌드의 출력 이미지를 호스팅하는 리포지토리와 일치하는 자격 증명이 포함된 경우 내보내기 보안이 빌드에 자동으로 추가됩니다.$ oc secrets link builder 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 빌드에도 적용할 수 있습니다.pullSecret
필드를 지정하는 대신 빌드에서 사용하는 서비스 계정에 가져오기 보안을 연결할 수도 있습니다. 기본적으로 빌드에서는builder
서비스 계정을 사용합니다. 보안에 빌드의 입력 이미지를 호스팅하는 리포지토리와 일치하는 자격 증명이 포함된 경우 가져오기 보안이 빌드에 자동으로 추가됩니다.pullSecret
필드를 지정하는 대신 빌드에서 사용하는 서비스 계정에 가져오기 보안을 연결하려면 다음을 실행합니다.$ oc secrets link builder dockerhub
참고이 기능을 사용하려면
BuildConfig
사양에from
이미지를 지정해야 합니다.oc new-build
또는oc new-app
으로 생성한 Docker 전략 빌드는 특정 상황에서 이러한 작업을 수행하지 못할 수 있습니다.