5.4. 이미지 풀 시크릿 사용


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

그러나 AWS 프로젝트의 Red Hat OpenShift Service 또는 보안 레지스트리에서 이미지를 참조하는 것과 같은 다른 시나리오의 경우 추가 구성 단계가 필요합니다.

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

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

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

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

참고

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

프로세스

  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

5.4.2. Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 허용

다른 개인 또는 보안 레지스트리에서 보안 컨테이너를 가져오려면 Docker 또는 Podman과 같은 컨테이너 클라이언트 인증 정보에서 풀 시크릿을 생성하여 서비스 계정에 추가해야 합니다.

Docker 및 Podman 모두 구성 파일을 사용하여 보안 또는 비보안 레지스트리에 로그인할 인증 세부 정보를 저장합니다.

  • Docker: 기본적으로 Docker는 $HOME/.docker/config.json 을 사용합니다.
  • Podman: 기본적으로 Podman은 $HOME/.config/containers/auth.json 을 사용합니다.

이러한 파일은 이전에 보안 또는 비보안 레지스트리에 로그인한 경우 인증 정보를 저장합니다.

참고

Docker 및 Podman 인증 정보 파일과 관련 풀 시크릿 모두 고유한 경로가 있는 경우 동일한 레지스트리에 대한 여러 참조를 포함할 수 있습니다(예: quay.ioquay.io/<example_repository> ). 그러나 Docker 또는 Podman은 정확히 동일한 레지스트리 경로에 대해 여러 항목을 지원하지 않습니다.

config.json 파일 예

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

pull secret의 예

apiVersion: v1
data:
  .dockerconfigjson: ewogICAiYXV0aHMiOnsKICAgICAgIm0iOnsKICAgICAgIsKICAgICAgICAgImF1dGgiOiJiM0JsYj0iLAogICAgICAgICAiZW1haWwiOiJ5b3VAZXhhbXBsZS5jb20iCiAgICAgIH0KICAgfQp9Cg==
kind: Secret
metadata:
  creationTimestamp: "2021-09-09T19:10:11Z"
  name: pull-secret
  namespace: default
  resourceVersion: "37676"
  uid: e2851531-01bc-48ba-878c-de96cfe31020
type: Opaque

절차

  • 기존 인증 파일에서 보안을 생성합니다.

    • .docker/config.json 을 사용하는 Docker 클라이언트의 경우 다음 명령을 입력합니다.

      $ oc create secret generic <pull_secret_name> \
          --from-file=.dockerconfigjson=<path/to/.docker/config.json> \
          --type=kubernetes.io/dockerconfigjson
    • .config/containers/auth.json 을 사용하는 Podman 클라이언트의 경우 다음 명령을 입력합니다.

      $ oc create secret generic <pull_secret_name> \
           --from-file=<path/to/.config/containers/auth.json> \
           --type=kubernetes.io/podmanconfigjson
  • 보안 레지스트리의 Docker 인증 정보 파일이 아직 없는 경우 다음을 실행하여 시크릿을 생성할 수 있습니다.

    $ oc create secret docker-registry <pull_secret_name> \
        --docker-server=<registry_server> \
        --docker-username=<user_name> \
        --docker-password=<password> \
        --docker-email=<email>
  • Pod의 이미지 가져오기에 시크릿을 사용하려면 서비스 계정에 이 시크릿을 추가해야 합니다. 이 예제의 서비스 계정 이름은 Pod에서 사용하는 서비스 계정 이름과 일치해야 합니다. default는 기본 서비스 계정입니다.

    $ oc secrets link default <pull_secret_name> --for=pull

5.4.2.1. 위임된 인증을 사용하여 개인 레지스트리에서 가져오기

개인 레지스트리는 별도의 서비스에 인증을 위임할 수 있습니다. 이 경우 인증 및 레지스트리 끝점 둘 다에 대해 이미지 풀 시크릿을 정의해야 합니다.

프로세스

  1. 위임된 인증 서버에 대한 시크릿을 생성합니다.

    $ oc create secret docker-registry \
        --docker-server=sso.redhat.com \
        --docker-username=developer@example.com \
        --docker-password=******** \
        --docker-email=unused \
        redhat-connect-sso
    
    secret/redhat-connect-sso
  2. 개인 레지스트리에 대한 시크릿을 생성합니다.

    $ oc create secret docker-registry \
        --docker-server=privateregistry.example.com \
        --docker-username=developer@example.com \
        --docker-password=******** \
        --docker-email=unused \
        private-registry
    
    secret/private-registry
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

© 2024 Red Hat, Inc.