6.7. 이미지 및 이미지 스트림 가져오기 및 작업
다음 섹션에서는 이미지 스트림을 가져오고 작업하는 방법을 설명합니다.
6.7.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
가져오기 프로세스 중에 AWS의 Red Hat OpenShift Service는 시크릿을 선택하여 원격 당사자에게 제공합니다.
6.7.1.1. Pod에서 다른 보안 레지스트리의 이미지를 참조하도록 허용
Docker 클라이언트의 .dockercfg
$HOME/.docker/config.json
파일은 이전에 보안 또는 비보안 레지스트리에 로그인한 적이 있는 경우 인증 정보를 저장하는 Docker 인증 정보 파일입니다.
OpenShift 이미지 레지스트리가 아닌 보안 컨테이너 이미지를 가져오려면 Docker 인증 정보에서 풀 시크릿을 생성하여 서비스 계정에 추가해야 합니다.
Docker 인증 정보 파일과 연결된 풀 암호에는 각각 고유한 인증 정보 세트가 있는 동일한 레지스트리에 대한 여러 참조가 포함될 수 있습니다.
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
절차
보안 레지스트리의
.dockercfg
파일이 이미 있는 경우 다음을 실행하여 해당 파일에서 시크릿을 생성할 수 있습니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockercfg=<path/to/.dockercfg> \ --type=kubernetes.io/dockercfg
$HOME/.docker/config.json
파일이 있는 경우 다음을 실행합니다.$ oc create secret generic <pull_secret_name> \ --from-file=.dockerconfigjson=<path/to/.docker/config.json> \ --type=kubernetes.io/dockerconfigjson
보안 레지스트리의 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.7.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.7.2.1. 주기적으로 매니페스트 목록 가져오기 구성
매니페스트 목록을 정기적으로 다시 가져오려면 --scheduled
플래그를 사용하면 됩니다.
프로세스
다음 명령을 입력하여 매니페스트 목록을 주기적으로 업데이트하도록 이미지 스트림을 설정합니다.
$ oc import-image <multiarch-image-stream-tag> --from=<registry>/<project_name>/<image-name> \ --import-mode='PreserveOriginal' --scheduled=true
6.7.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.7.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.7.4. --import-mode의 구성 필드
다음 표에서는 --import-mode=
플래그에 사용할 수 있는 옵션을 설명합니다.
매개변수 | 설명 |
---|---|
Legacy |
|
PreserveOriginal | 지정하면 원래 매니페스트가 유지됩니다. 매니페스트 목록의 경우 매니페스트 목록과 모든 하위 매니페스트를 가져옵니다. |