4.4. S2I(Source-to-Image) 이미지 테스트 정보
S2I(Source-to-Image) 빌더 이미지 작성자는 S2I 이미지를 로컬에서 테스트하고 AWS 빌드 시스템에서 Red Hat OpenShift Service를 사용하여 자동화된 테스트 및 지속적인 통합을 수행할 수 있습니다.
S2I 빌드를 성공적으로 실행하려면 S2I에 assemble
및 run
스크립트가 있어야 합니다. save-artifacts
스크립트를 제공하면 빌드 아티팩트를 재사용하고 usage
스크립트를 제공하면 S2I 외부에서 컨테이너 이미지를 실행하는 경우 사용 정보가 콘솔에 인쇄되도록 합니다.
S2I 이미지 테스트는 기본 컨테이너 이미지가 변경되거나 명령에 사용된 도구가 업데이트되어도 설명한 모든 명령이 제대로 작동하는지 확인하기 위한 것입니다.
4.4.1. 테스트 요구 사항 이해
test
스크립트의 표준 위치는 test/run
입니다. 이 스크립트는 AWS S2I 이미지 빌더의 Red Hat OpenShift Service에서 호출하며 간단한 Bash 스크립트 또는 정적 Go 바이너리일 수 있습니다.
test/run
스크립트는 S2I 빌드를 수행하므로 $PATH
에서 S2I 바이너리를 사용할 수 있어야 합니다. 필요한 경우 S2I README의 설치 지침을 따르십시오.
S2I는 애플리케이션 소스 코드와 빌더 이미지를 결합하므로 테스트를 하려면 소스가 실행 가능한 컨테이너 이미지로 변환되는지 확인할 샘플 애플리케이션 소스가 있어야 합니다. 샘플 애플리케이션은 단순하되 assemble
및 run
스크립트의 중요한 단계를 수행해야 합니다.
4.4.2. 스크립트 및 도구 생성
S2I 도구는 새로운 S2I 이미지 생성 프로세스를 더욱 빠르게 수행할 수 있도록 강력한 생성 도구와 함께 제공됩니다. s2i create
명령에서는 모든 필요한 S2I 스크립트와 테스트 도구를 Makefile
과 함께 생성합니다.
$ s2i create <image_name> <destination_directory>
생성된 test/run
스크립트는 유용하게 조정되어야 하지만 개발을 시작하기에 좋은 시작점을 제공합니다.
s2i create
명령으로 생성된 test/run
스크립트를 사용하려면 샘플 애플리케이션 소스가 test/test-app
디렉토리 내에 있어야 합니다.
4.4.3. 로컬에서 테스트
S2I 이미지 테스트를 로컬에서 실행하는 가장 쉬운 방법은 생성된 Makefile
을 사용하는 것입니다.
s2i create
명령을 사용하지 않은 경우 다음 Makefile
템플릿을 복사하고 IMAGE_NAME
매개변수를 이미지 이름으로 교체할 수 있습니다.
샘플 Makefile
IMAGE_NAME = openshift/ruby-20-centos7 CONTAINER_ENGINE := $(shell command -v podman 2> /dev/null | echo docker) build: ${CONTAINER_ENGINE} build -t $(IMAGE_NAME) . .PHONY: test test: ${CONTAINER_ENGINE} build -t $(IMAGE_NAME)-candidate . IMAGE_NAME=$(IMAGE_NAME)-candidate test/run
4.4.4. 기본 테스트 워크플로
test
스크립트에서는 테스트할 이미지를 이미 빌드했다고 가정합니다. 필요한 경우 먼저 S2I 이미지를 빌드합니다. 다음 명령 중 하나를 실행합니다.
Podman을 사용하는 경우 다음 명령을 실행합니다.
$ podman build -t <builder_image_name>
Docker를 사용하는 경우 다음 명령을 실행합니다.
$ docker build -t <builder_image_name>
다음 단계에서는 S2I 이미지 빌더를 테스트하는 기본 워크플로를 설명합니다.
usage
스크립트가 작동 중인지 확인합니다.Podman을 사용하는 경우 다음 명령을 실행합니다.
$ podman run <builder_image_name> .
Docker를 사용하는 경우 다음 명령을 실행합니다.
$ docker run <builder_image_name> .
이미지를 빌드합니다.
$ s2i build file:///path-to-sample-app _<BUILDER_IMAGE_NAME>_ _<OUTPUT_APPLICATION_IMAGE_NAME>_
-
선택사항:
save-artifacts
를 지원하는 경우 2단계를 다시 한번 실행하여 아티팩트 저장 및 복원이 제대로 작동하는지 확인합니다. 컨테이너를 실행합니다.
Podman을 사용하는 경우 다음 명령을 실행합니다.
$ podman run <output_application_image_name>
Docker를 사용하는 경우 다음 명령을 실행합니다.
$ docker run <output_application_image_name>
- 컨테이너가 실행 중이고 애플리케이션이 응답하는지 확인합니다.
일반적으로 이러한 단계를 실행하면 빌더 이미지가 예상대로 작동하는지 충분히 확인할 수 있습니다.
4.4.5. AWS에서 Red Hat OpenShift Service를 사용하여 이미지 빌드
새 S2I 빌더 이미지를 구성하는 Dockerfile
과 기타 아티팩트가 있으면 Git 리포지토리에 배치하고 AWS에서 Red Hat OpenShift Service를 사용하여 이미지를 빌드하고 푸시할 수 있습니다. 리포지터리를 가리키는 Docker 빌드를 정의합니다.
AWS 인스턴스의 Red Hat OpenShift Service가 공용 IP 주소에서 호스팅되는 경우 S2I 빌더 이미지 GitHub 리포지토리로 내보낼 때마다 빌드를 트리거할 수 있습니다.
ImageChangeTrigger
를 사용하면 업데이트된 S2I 빌더 이미지를 기반으로 하는 애플리케이션의 다시 빌드를 트리거할 수도 있습니다.