이미지 가져오기 인증으로 인해 빌드 오류가 발생한 이유는 무엇입니까?
가상 사설 클라우드 클래식 인프라
오퍼레이터 허브 또는 기본 제공 개발자 컨텐츠 카탈로그와 같은 빌드 시 Red Hat 레지스트리에서 이미지를 가져오려는 경우 다음과 같은 인증 오류로 인해 빌드에 실패할 수 있습니다.
error: build error: After retrying 2 times, Pull image still failed due to error: unauthorized: authentication required
기본적으로 클러스터는 registry.redhat.io, registry.connect.redhat.com 및 cloud.openshift.com과 같은 Red Hat 등록에 대한 이미지 풀 시크릿으로 설정됩니다. 또한 default 프로젝트에서 클러스터에는 IBM Cloud Container Registry에 대한 <region>.icr.io 레지스트리에 액세스하기 위한 이미지 풀 시크릿이 있습니다.
그러나 오퍼레이터 또는 기본 제공 템플리트에 개인용 레지스트리에서 이미지를 가져와야 하는 기본 제공 컴포넌트가 있는 경우, 빌드에는 서비스 계정의 기본 이미지 풀 시크릿에 대한 액세스 권한이 없으므로 인증 오류로 인해 빌드에 실패할 수 있습니다. 기본적으로 빌드는 내부 레지스트리에만 저장되는 이미지를 가져올 수 있습니다.
개인용 레지스트리에서 이미지를 가져오거나 개인용 레지스트리에서 내부 레지스트리로 이미지를 가져와서 이미지에 대한 액세스 권한으로 빌드를 설정하십시오.
자세한 정보는 Red Hat OpenShift 문서를 참조하십시오.
-
빌드에 어떠한 레지스트리에 대한 풀 액세스가 필요한지 확인하려면 빌드 구성 파일을 확인하십시오. 예를 들어, 빌드가 Red Hat OpenShift 템플릿의 일부인 경우, 빌드 구성의
spec.strategy.sourceStrategy.from.name값은registry.redhat.io비공개 레지스트리를 가리킵니다.oc -n openshift get template react-web-app-example -o yaml출력 예
strategy: sourceStrategy: from: kind: DockerImage name: registry.redhat.io/rhoar-nodejs-tech-preview/rhoar-nodejs-10-webapp -
이미지 풀 액세스 권한이 있는 빌드를 설정하십시오. 개인용 레지스트리에서 이미지를 가져오기 또는 내부 레지스트리에서 이미지 스트림 사용하기 중에서 선택할 수 있습니다.
- 개인용 레지스트리에서 이미지 가져오기:
-
각 프로젝트에서 풀 액세스 권한이 있는 이미지 풀 시크릿을 빌드에서 사용하는 개인용 레지스트리로 추가하십시오.
- Red Hat 레지스트리:
pull-secret프로젝트에서 시크릿openshift-config프로젝트를 복사하십시오. 이 시크릿에는cloud.openshift.com,quay.io,registry.connect.redhat.com및registry.redhat.io의 개인용 레지스트리에 대한 풀 액세스 권한이 포함됩니다. - IBM Cloud Container Registry:
default프로젝트에서<region>.icr.io시크릿을 복사하십시오. - 개인용 레지스트리: 개인용 레지스트리에 대한 이미지 풀 액세스 권한이 있는 이미지 풀 시크릿을 작성하십시오.
- Red Hat 레지스트리:
-
시크릿을 빌더 서비스 계정에 추가하거나 빌드 구성 파일에서 이미지 풀 시크릿을 지정하십시오.
프로젝트에서 빌더 서비스 계정에 대한 시크릿을 링크하는 예입니다.
oc secrets link builder <pull-secret>빌드 구성 파일에서 시크릿을 참조하는 예입니다.
spec: output: to: kind: "DockerImage" name: "<private.registry.com>/<namespace>/<image>:<tag>" pushSecret: name: "<pull-secret>"
-
- 내부 레지스트리의 이미지 스트림 사용: 개인용 레지스트리에서 가져온 이미지의 내부 레지스트에서 이미지 스트림을 작성하십시오. 그런 다음 개인용 레지스트리에서 직접 이미지를 가져오는 대신 이미지 스트림을 참조하도록 빌드 구성 파일을 업데이트하십시오.
- 개인용 레지스트리에서 이미지 가져오기: