5.4. 이미지 풀 시크릿 사용

OpenShift Container Platform의 내부 레지스트리를 사용하며 동일한 프로젝트에 있는 이미지 스트림에서 이미지를 가져오는 경우 pod 서비스 계정에 이미 올바른 권한이 있어야 하며 추가 작업이 필요하지 않습니다.

하지만 OpenShift Container Platform 프로젝트 간에 이미지를 참조하거나 보안 레지스트리의 이미지를 참조하는 경우와 같은 다른 시나리오에서는 추가 구성 단계가 필요합니다.

Red Hat OpenShift Cluster Manager에서 이미지 풀 시크릿을 가져올 수 있습니다. 이 풀 시크릿을 pullSecret 이라고 합니다.

이 풀 시크릿을 사용하여 OpenShift Container Platform 구성 요소에 대한 컨테이너 이미지를 제공하는 인증 기관, Quay.ioregistry.redhat.io 에서 제공하는 서비스로 인증합니다.

config.json 파일 예

{
   "auths":{
      "cloud.openshift.com":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      },
      "quay.io":{
         "auth":"b3Blb=",
         "email":"you@example.com"
      }
   }
}

5.4.1. 프로젝트 간에 pod가 이미지를 참조할 수 있도록 허용

내부 레지스트리를 사용하는 경우 project-a의 pod가 project-b의 이미지를 참조하도록 허용하려면 project-a의 서비스 계정이 project-bsystem:image-puller 역할에 바인딩되어 있어야 합니다.

참고

Pod 서비스 계정 또는 네임스페이스를 생성할 때 docker pull secret을 사용하여 서비스 계정을 프로비저닝할 때까지 기다립니다. 서비스 계정이 완전히 프로비저닝되기 전에 Pod를 생성하면 Pod가 OpenShift Container Platform 내부 레지스트리에 액세스하지 못합니다.

프로세스

  1. project-a의 pod가 project-b의 이미지를 참조하도록 허용하려면 project-a의 서비스 계정을 project-bsystem:image-puller 역할에 바인딩합니다.

    $ oc policy add-role-to-user \
        system:image-puller system:serviceaccount:project-a:default \
        --namespace=project-b

    해당 역할을 추가한 후에는 기본 서비스 계정을 참조하는 project-a의 pod가 project-b의 이미지를 가져올 수 있습니다.

  2. project-a의 모든 서비스 계정에 액세스를 허용하려면 다음 그룹을 사용합니다.

    $ oc policy add-role-to-group \
        system:image-puller system:serviceaccounts:project-a \
        --namespace=project-b