5.4. 이미지 풀 시크릿 사용
OpenShift 이미지 레지스트리를 사용하고 동일한 프로젝트에 있는 이미지 스트림에서 이미지를 가져오는 경우 pod 서비스 계정에 이미 올바른 권한이 있어야 하며 추가 작업이 필요하지 않습니다.
그러나 OpenShift Container Platform 프로젝트나 보안 레지스트리에서 이미지를 참조하는 등의 다른 시나리오에서는 추가 구성 단계가 필요합니다.
Red Hat OpenShift Cluster Manager에서 이미지 풀 시크릿을 얻을 수 있습니다. 이 풀 시크릿을 pullSecret
이라고 합니다.
이 풀 시크릿을 사용하여 OpenShift Container Platform 구성 요소에 대한 컨테이너 이미지를 제공하는 인증 기관, Quay.io 및 registry.redhat.io 에서 제공하는 서비스로 인증합니다.
5.4.1. 프로젝트 간에 pod가 이미지를 참조할 수 있도록 허용 링크 복사링크가 클립보드에 복사되었습니다!
OpenShift 이미지 레지스트리를 사용하는 경우 project-a
의 pod가 project-b
의 이미지를 참조하도록 허용하려면 project-a
의 서비스 계정을 project-b
의 system:image-puller
역할에 바인딩해야 합니다.
Pod 서비스 계정 또는 네임스페이스를 생성할 때 docker pull secret을 사용하여 서비스 계정이 프로비저닝될 때까지 기다립니다. 서비스 계정이 완전히 프로비저닝되기 전에 pod를 생성하면 Pod가 OpenShift 이미지 레지스트리에 액세스하지 못합니다.
프로세스
project-a
의 pod가project-b
의 이미지를 참조하도록 허용하려면project-a
의 서비스 계정을project-b
의system:image-puller
역할에 바인딩합니다.oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
$ oc policy add-role-to-user \ system:image-puller system:serviceaccount:project-a:default \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 해당 역할을 추가한 후에는 기본 서비스 계정을 참조하는
project-a
의 pod가project-b
의 이미지를 가져올 수 있습니다.project-a
의 모든 서비스 계정에 액세스를 허용하려면 다음 그룹을 사용합니다.oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
$ oc policy add-role-to-group \ system:image-puller system:serviceaccounts:project-a \ --namespace=project-b
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2. Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 허용 링크 복사링크가 클립보드에 복사되었습니다!
다른 개인 또는 보안 레지스트리에서 보안 컨테이너를 가져오려면 Docker나 Podman과 같은 컨테이너 클라이언트 자격 증명에서 풀 시크릿을 생성하고 서비스 계정에 추가해야 합니다.
Docker와 Podman은 모두 보안 또는 비보안 레지스트리에 로그인하기 위한 인증 세부 정보를 저장하는 구성 파일을 사용합니다.
-
Docker : 기본적으로 Docker는
$HOME/.docker/config.json을
사용합니다. -
Podman : 기본적으로 Podman은
$HOME/.config/containers/auth.json을
사용합니다.
이러한 파일은 이전에 보안 또는 비보안 레지스트리에 로그인한 적이 있는 경우 인증 정보를 저장합니다.
Docker 및 Podman 자격 증명 파일과 관련 풀 시크릿은 고유한 경로를 갖는 경우 동일한 레지스트리에 대한 여러 참조를 포함할 수 있습니다(예: quay.io
및 quay.io/<example_repository>
). 그러나 Docker 또는 Podman은 정확히 동일한 레지스트리 경로에 대해 여러 항목을 지원하지 않습니다.
config.json
파일 예
pull secret의 예
5.4.2.1. 풀 시크릿 생성 링크 복사링크가 클립보드에 복사되었습니다!
프로세스
기존 인증 파일에서 비밀을 만듭니다.
.docker/config.json을
사용하는 Docker 클라이언트의 경우 다음 명령을 입력합니다.oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow .config/containers/auth.json을
사용하는 Podman 클라이언트의 경우 다음 명령을 입력합니다.oc create secret generic <pull_secret_name> \ --from-file=<path/to/.config/containers/auth.json> \ --type=kubernetes.io/podmanconfigjson
$ oc create secret generic <pull_secret_name> \ --from-file=<path/to/.config/containers/auth.json> \ --type=kubernetes.io/podmanconfigjson
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
보안 레지스트리에 대한 Docker 자격 증명 파일이 아직 없으면 다음 명령을 실행하여 비밀을 만들 수 있습니다.
oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
$ oc create secret docker-registry <pull_secret_name> \ --docker-server=<registry_server> \ --docker-username=<user_name> \ --docker-password=<password> \ --docker-email=<email>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.2. 워크로드에서 풀 시크릿 사용 링크 복사링크가 클립보드에 복사되었습니다!
다음 방법 중 하나를 사용하여 풀 시크릿을 사용하면 워크로드가 개인 레지스트리에서 이미지를 끌어올 수 있습니다.
-
비밀을
ServiceAccount
에 연결하면 해당 서비스 계정을 사용하는 모든 포드에 비밀이 자동으로 적용됩니다. -
GitOps나 ArgoCD와 같은 환경에 유용한 워크로드 구성에서
imagePullSecrets를
직접 정의합니다.
프로세스
서비스 계정에 비밀을 추가하면 포드의 이미지를 가져오는 데 비밀을 사용할 수 있습니다. 서비스 계정의 이름은 Pod가 사용하는 서비스 계정의 이름과 일치해야 합니다. 기본 서비스 계정은
default
입니다.다음 명령을 입력하여 풀 시크릿을
ServiceAccount
에 연결합니다.oc secrets link default <pull_secret_name> --for=pull
$ oc secrets link default <pull_secret_name> --for=pull
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 변경 사항을 확인하려면 다음 명령을 입력하세요.
oc get serviceaccount default -o yaml
$ oc get serviceaccount default -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 출력 예
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
비밀을 서비스 계정에 연결하는 대신, 포드나 워크로드 정의에서 직접 참조할 수도 있습니다. 이 기능은 ArgoCD와 같은 GitOps 워크플로에 유용합니다. 예를 들면 다음과 같습니다.
포드 사양 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ArgoCD 워크플로우 예시
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.2.3. 위임된 인증을 사용하여 개인 레지스트리에서 가져오기 링크 복사링크가 클립보드에 복사되었습니다!
개인 레지스트리는 별도의 서비스에 인증을 위임할 수 있습니다. 이 경우 인증 및 레지스트리 끝점 둘 다에 대해 이미지 풀 시크릿을 정의해야 합니다.
프로세스
위임된 인증 서버에 대한 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 개인 레지스트리에 대한 시크릿을 생성합니다.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
5.4.3. 글로벌 클러스터 풀 시크릿 업데이트 링크 복사링크가 클립보드에 복사되었습니다!
현재 풀 시크릿을 교체하거나 새 풀 시크릿을 추가하여 클러스터의 글로벌 풀 시크릿을 업데이트할 수 있습니다.
클러스터를 다른 소유자에게 이전하려면 먼저 OpenShift Cluster Manager 에서 이전을 시작한 다음 클러스터에서 풀 시크릿을 업데이트해야 합니다. OpenShift Cluster Manager에서 전송을 시작하지 않고 클러스터의 풀 시크릿을 업데이트하면 클러스터에서 OpenShift Cluster Manager에서 Telemetry 지표 보고를 중지합니다.
클러스터 소유권 이전에 대한 자세한 내용은 Red Hat OpenShift Cluster Manager 문서의 "클러스터 소유권 이전"을 참조하세요.
사전 요구 사항
-
cluster-admin
역할의 사용자로 클러스터에 액세스할 수 있어야 합니다.
프로세스
선택 사항: 기존 풀 시크릿에 새 풀 시크릿을 추가하려면 다음 단계를 완료합니다.
다음 명령을 입력하여 풀 시크릿을 다운로드합니다.
oc get secret/pull-secret -n openshift-config \ --template='{{index .data ".dockerconfigjson" | base64decode}}' \ ><pull_secret_location>
$ oc get secret/pull-secret -n openshift-config \ --template='{{index .data ".dockerconfigjson" | base64decode}}' \ ><pull_secret_location>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 풀 시크릿 파일에 경로를 제공합니다.
다음 명령을 입력하여 새 풀 시크릿을 추가합니다.
oc registry login --registry="<registry>" \ --auth-basic="<username>:<password>" \ --to=<pull_secret_location>
$ oc registry login --registry="<registry>" \
1 --auth-basic="<username>:<password>" \
2 --to=<pull_secret_location>
3 Copy to Clipboard Copied! Toggle word wrap Toggle overflow 또는 가져오기 시크릿 파일에 대한 수동 업데이트를 수행할 수 있습니다.
다음 명령을 입력하여 클러스터의 글로벌 풀 시크릿을 업데이트합니다.
oc set data secret/pull-secret -n openshift-config \ --from-file=.dockerconfigjson=<pull_secret_location>
$ oc set data secret/pull-secret -n openshift-config \ --from-file=.dockerconfigjson=<pull_secret_location>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 새 풀 시크릿 파일의 경로를 제공합니다.
이 업데이트는 모든 노드로 롤아웃되며 클러스터 크기에 따라 작업에 약간의 시간이 걸릴 수 있습니다.
참고OpenShift Container Platform 4.7.4부터 글로벌 풀 시크릿을 변경해도 더 이상 노드 드레이닝 또는 재부팅이 트리거되지 않습니다.