이미지 가져오기 인증으로 인해 빌드 오류가 발생한 이유는 무엇입니까?
가상 프라이빗 클라우드 클래식 인프라
오퍼레이터 허브 또는 기본 제공 개발자 컨텐츠 카탈로그와 같은 빌드 시 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>"
-
- 내부 레지스트리의 이미지 스트림 사용: 개인용 레지스트리에서 가져온 이미지의 내부 레지스트에서 이미지 스트림을 작성하십시오. 그런 다음 개인용 레지스트리에서 직접 이미지를 가져오는 대신 이미지 스트림을 참조하도록 빌드 구성 파일을 업데이트하십시오.
- 개인용 레지스트리에서 이미지 가져오기: