3.5.2. 이미지 스트림
이미지 스트림 및 관련 태그는 OpenShift Container Platform 내에서 컨테이너 이미지를 참조하기 위한 추상화를 제공합니다. 이미지 스트림 및 해당 태그를 사용하면 사용 가능한 이미지를 볼 수 있으며 리포지터리의 이미지가 변경되어도 필요한 특정 이미지를 사용하도록 할 수 있습니다.
이미지 스트림에는 실제 이미지 데이터가 포함되어 있지 않지만 이미지 리포지터리와 유사하게 관련 이미지에 대한 단일 가상 뷰가 있습니다.
새 이미지가 추가되는 경우 이미지 스트림에서 알림을 보고 빌드 또는 배포를 각각 수행하여 대응하도록 빌드 및 배포를 구성할 수 있습니다.
예를 들어 배포에서 특정 이미지를 사용하고 있는데 해당 이미지의 새 버전이 생성되는 경우 배포가 자동으로 수행되어 새 버전의 이미지를 가져올 수 있습니다.
그러나 배포 또는 빌드에서 사용하는 이미지 스트림 태그가 업데이트되지 않으면 컨테이너 이미지 레지스트리의 컨테이너 이미지가 업데이트되어도 빌드 또는 배포에서 이전(알려진 정상) 이미지를 계속 사용합니다.
소스 이미지를 저장할 수 있는 위치는 다음과 같습니다.
- OpenShift Container Platform의 통합 레지스트리
-
외부 레지스트리(예:
registry.redhat.io
또는hub.docker.com
) - OpenShift Container Platform 클러스터의 기타 이미지 스트림
이미지 스트림 태그(예: 빌드 또는 배포 구성)를 참조하는 오브젝트를 정의하는 경우 Docker 리포지토리가 아닌 이미지 스트림 태그를 가리킵니다. 애플리케이션을 빌드하거나 배포할 때 OpenShift Container Platform은 이미지 스트림 태그를 사용하여 Docker 리포지토리를 쿼리하여 관련 이미지 ID를 찾고 바로 그 이미지를 사용합니다.
이미지 스트림 메타데이터는 다른 클러스터 정보와 함께 etcd 인스턴스에 저장됩니다.
다음 이미지 스트림에는 두 개의 태그가 포함되어 있습니다. 34
Python v3.4 이미지와 35
를 가리켜 Python v3.5 이미지를 가리킵니다.
$ oc describe is python
출력 예
Name: python Namespace: imagestream Created: 25 hours ago Labels: app=python Annotations: openshift.io/generated-by=OpenShiftWebConsole openshift.io/image.dockerRepositoryCheck=2017-10-03T19:48:00Z Docker Pull Spec: docker-registry.default.svc:5000/imagestream/python Image Lookup: local=false Unique Images: 2 Tags: 2 34 tagged from centos/python-34-centos7 * centos/python-34-centos7@sha256:28178e2352d31f240de1af1370be855db33ae9782de737bb005247d8791a54d0 14 seconds ago 35 tagged from centos/python-35-centos7 * centos/python-35-centos7@sha256:2efb79ca3ac9c9145a63675fb0c09220ab3b8d4005d35e0644417ee552548b10 7 seconds ago
이미지 스트림을 사용하면 다음과 같은 여러 중요한 이점이 있습니다.
- 명령줄을 사용하여 다시 푸시하지 않고도 태그하고, 태그를 롤백하고, 이미지를 빠르게 처리할 수 있습니다.
- 새 이미지가 레지스트리로 푸시되면 빌드 및 배포를 트리거할 수 있습니다. 또한 OpenShift Container Platform에는 다른 리소스(예: Kubernetes 오브젝트)에 대한 일반 트리거가 있습니다.
- 정기적인 다시 가져오기를 위해 태그를 표시할 수 있습니다. 소스 이미지가 변경되면 해당 변경 사항이 이미지 스트림에 반영되며, 이 변경 사항은 빌드 또는 배포 구성에 따라 빌드 및/또는 배포 흐름을 트리거합니다.
- 세분화된 액세스 제어를 사용하여 이미지를 공유하고 팀 전체에 이미지를 빠르게 배포할 수 있습니다.
- 소스 이미지가 변경되면 이미지 스트림 태그는 계속 알려진 양호한 버전의 이미지를 가리키므로 애플리케이션이 예기치 않게 손상되지 않도록 합니다.
- 이미지 스트림 오브젝트에 대한 권한을 통해 이미지를 보고 사용할 수 있는 사람에 대한 보안을 구성할 수 있습니다.
- 클러스터 수준에서 이미지를 읽거나 나열할 수 있는 권한이 없는 사용자도 이미지 스트림을 사용하여 프로젝트의 태그된 이미지를 검색할 수 있습니다.
조정된 이미지 스트림 세트는 OpenShift Image Streams 및 Templates 라이브러리 를 참조하십시오.
이미지 스트림을 사용할 때는 이미지 스트림 태그가 가리키는 사항과 태그 및 이미지를 변경하는 방법을 이해해야 합니다. 예를 들면 다음과 같습니다.
-
이미지 스트림 태그가 컨테이너 이미지 태그를 가리키는 경우 컨테이너 이미지 태그 업데이트 방법을 이해해야 합니다. 예를 들어 컨테이너 이미지 태그
docker.io/ruby:2.5
는 v2.5 ruby 이미지를 가리키지만 컨테이너 이미지 태그docker.io/ruby:latest
는 주요 버전에서 변경됩니다. 따라서 이미지 스트림 태그가 가리키는 컨테이너 이미지 태그는 이미지 스트림 태그의 안정성을 나타낼 수 있습니다. - 이미지 스트림 태그가 컨테이너 이미지 태그를 직접 가리키는 대신 다른 이미지 스트림 태그를 따르는 경우 나중에 다른 이미지 스트림 태그를 따르도록 이미지 스트림 태그를 업데이트할 수 있습니다. 이러한 변경으로 인해 호환되지 않는 버전 변경이 발생할 수 있습니다.
3.5.2.1. 중요한 용어
- Docker 리포지토리
관련 컨테이너 이미지와 이를 식별하는 태그의 컬렉션입니다. 예를 들어 OpenShift Jenkins 이미지는 Docker 리포지토리에 있습니다.
docker.io/openshift/jenkins-2-centos7
- 컨테이너 레지스트리
Docker 리포지토리에서 이미지를 저장하고 서비스할 수 있는 콘텐츠 서버입니다. 예를 들면 다음과 같습니다.
registry.redhat.io
- 컨테이너 이미지
- 컨테이너로 실행할 수 있는 특정 콘텐츠 세트입니다. 일반적으로 Docker 리포지토리 내의 특정 태그와 연결됩니다.
- 컨테이너 이미지 태그
- 특정 이미지를 구분하는 리포지토리의 컨테이너 이미지에 적용되는 레이블입니다. 예를 들어, 여기에서 3.6.0 은 태그입니다.
docker.io/openshift/jenkins-2-centos7:3.6.0
언제든지 새 컨테이너 이미지 콘텐츠를 가리키도록 컨테이너 이미지 태그를 업데이트할 수 있습니다.
- 컨테이너 이미지 ID
- 이미지를 가져오는 데 사용할 수 있는 SHA(Secure Hash Algorithm) 코드입니다. 예를 들면 다음과 같습니다.
docker.io/openshift/jenkins-2-centos7@sha256:ab312bda324
SHA 이미지 ID는 변경할 수 없습니다. 특정 SHA 식별자는 항상 정확히 동일한 컨테이너 이미지 콘텐츠를 참조합니다.
- 이미지 스트림
- 태그로 식별되는 Docker 형식 컨테이너 이미지의 포인터가 포함된 OpenShift Container Platform 오브젝트입니다. 이미지 스트림을 Docker 리포지토리에 해당하는 것으로 간주할 수 있습니다.
- 이미지 스트림 태그
- 이미지 스트림의 이미지에 대한 명명된 포인터. 이미지 스트림 태그는 컨테이너 이미지 태그와 유사합니다. 아래 이미지 스트림 태그를 참조하십시오.
- 이미지 스트림 이미지
- 태그된 특정 이미지 스트림에서 특정 컨테이너 이미지를 검색할 수 있는 이미지입니다. 이미지 스트림 이미지는 특정 이미지 SHA 식별자에 대한 일부 메타데이터를 함께 가져오는 API 리소스 오브젝트입니다. 아래 이미지 스트림 이미지를 참조하십시오.
- 이미지 스트림 트리거
- 이미지 스트림 태그가 변경되면 특정 작업을 수행하는 트리거입니다. 예를 들어 가져오기로 인해 태그 값이 변경되고 이어서 해당 태그를 수신하는 배포, 빌드 또는 기타 리소스에서 트리거가 실행될 수 있습니다. 아래 이미지 스트림 트리거 를 참조하십시오.