6.8. 이미지 및 이미지 스트림 가져오기 및 작업
다음 섹션에서는 이미지 스트림을 가져오고 작업하는 방법을 설명합니다.
6.8.1. 개인 레지스트리에서 이미지 및 이미지 스트림 가져 오기
인증이 필요한 개인 이미지 레지스트리에서 태그 및 이미지 메타 데이터를 가져 오도록 이미지 스트림을 구성할 수 있습니다. 이 절차는 Cluster Samples Operator가 콘텐츠를 registry.redhat.io 이외의 항목에서 가져오는 데 사용하는 레지스트리를 변경하는 경우에 적용됩니다.
안전하지 않거나 보안된 레지스트리에서 가져올 때 시크릿에 정의 된 레지스트리 URL에는 :80
포트 접미사가 포함되어야 합니다. 그렇지 않으면 레지스트리에서 가져 오려고 할 때 시크릿을 사용할 수 없습니다.
프로세스
다음 명령을 입력하여 인증 정보를 저장하는 데 사용되는
secret
개체를 만들어야 합니다.$ oc create secret generic <secret_name> --from-file=.dockerconfigjson=<file_absolute_path> --type=kubernetes.io/dockerconfigjson
시크릿을 구성한 후 새 이미지 스트림을 생성하거나
oc import-image
명령을 입력합니다.$ oc import-image <imagestreamtag> --from=<image> --confirm
가져 오기 프로세스 중에 OpenShift Container Platform은 시크릿을 선택하여 원격 당사자에게 제공합니다.
6.8.1.1. 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
파일 예
{ "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
6.8.2. 매니페스트 목록으로 작업
--import-mode
플래그를 추가하여 oc import-image
또는 oc tag
CLI 명령을 사용할 때 매니페스트 목록의 단일 하위 매니페스트 또는 모든 매니페스트를 가져올 수 있습니다.
아래 명령을 참조하여 단일 하위 영구 또는 다중 아키텍처 이미지를 포함하는 이미지 스트림을 생성합니다.
프로세스
다중 아키텍처 이미지가 포함된 이미지 스트림을 생성하고 다음 명령을 입력하여 가져오기 모드를
PreserveOriginal
로 설정합니다.$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --reference-policy=local --confirm
출력 예
--- Arch: <none> Manifests: linux/amd64 sha256:6e325b86566fafd3c4683a05a219c30c421fbccbf8d87ab9d20d4ec1131c3451 linux/arm64 sha256:d8fad562ffa75b96212c4a6dc81faf327d67714ed85475bf642729703a2b5bf6 linux/ppc64le sha256:7b7e25338e40d8bdeb1b28e37fef5e64f0afd412530b257f5b02b30851f416e1 ---
또는 다음 명령을 입력하여
Legacy
가져오기 모드로 이미지를 가져오십시오. 이 모드에서는 매니페스트 목록을 삭제하고 단일 하위 명령을 가져옵니다.$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='Legacy' --confirm
참고--import-mode=
기본값은Legacy
입니다. 이 값을 제외하거나Legacy
또는PreserveOriginal
를 지정하지 않으면 단일 하위 매니페스트를 가져옵니다. 유효하지 않은 가져오기 모드에서는 다음 오류를 반환합니다:error: valid ImportMode values are Legacy or PreserveOriginal
.
제한
매니페스트 목록으로 작업하는 데는 다음과 같은 제한 사항이 있습니다.
경우에 따라 사용자가 하위 매니페스트를 직접 사용하려는 경우도 있습니다.
oc adm prune images
가 실행되거나CronJob
pruner가 실행되는 경우 하위 영구 목록이 사용되는 시기를 감지할 수 없습니다. 결과적으로oc adm prune images
또는CronJob
pruner를 사용하는 관리자는 하위 매니페스트 목록을 포함하여 전체 매니페스트 목록을 삭제할 수 있습니다.이러한 제한을 방지하려면 매니페스트 목록을 태그 또는 다이제스트로 대신 사용할 수 있습니다.
6.8.2.1. 주기적으로 매니페스트 목록 가져오기 구성
매니페스트 목록을 정기적으로 다시 가져오려면 --scheduled
플래그를 사용하면 됩니다.
프로세스
다음 명령을 입력하여 매니페스트 목록을 주기적으로 업데이트하도록 이미지 스트림을 설정합니다.
$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --scheduled=true
6.8.2.2. 매니페스트 목록을 가져올 때 SSL/TSL 구성
매니페스트 목록을 가져올 때 SSL/TSL을 구성하려면 --insecure
플래그를 사용할 수 있습니다.
프로세스
매니페스트 목록을 가져오려면 SSL/TSL 확인을 건너뛰도록
--insecure=true
를 설정합니다. 예를 들면 다음과 같습니다.$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --insecure=true
6.8.3. --import-mode의 아키텍처 지정
--import-mode=
플래그를 제외하거나 포함하여 멀티 아키텍처와 단일 아키텍처 간에 가져온 이미지 스트림을 스왑할 수 있습니다.
프로세스
다음 명령을 실행하여
--import-mode=
플래그를 제외하여 다중 아키텍처에서 단일 아키텍처로 이미지 스트림을 업데이트합니다.$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name>
다음 명령을 실행하여 단일 아키텍처에서 다중 아키텍처로 이미지 스트림을 업데이트합니다.
$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal'
6.8.4. --import-mode의 구성 필드
다음 표에서는 --import-mode=
플래그에 사용할 수 있는 옵션을 설명합니다.
매개변수 | 설명 |
---|---|
Legacy |
|
PreserveOriginal | 지정하면 원래 매니페스트가 유지됩니다. 매니페스트 목록의 경우 매니페스트 목록과 모든 하위 매니페스트를 가져옵니다. |