Linux 시스템 컨테이너 정보

Migrate to Containers CLI를 사용하면 Linux 기반 애플리케이션을 컨테이너화된 환경으로 마이그레이션할 수 있으며, 이 도구는 현대화된 애플리케이션에 필요한 서비스의 부트로더로 작동하는 사전 빌드된 Linux 시스템 컨테이너를 사용합니다. Linux용 Migrate to Containers 애플리케이션을 사용함으로써 Google Kubernetes Engine(GKE), Cloud Run, GKE 클러스터에서 실행되도록 다양한 스테이트리스(Stateless) 애플리케이션을 현대화할 수 있습니다.

자세한 내용은 Migrate to Containers CLI 아키텍처를 참조하세요.

이 문서에서는 Migrate to Containers를 사용하여 마이그레이션된 애플리케이션을 실행하기 위한 솔루션의 일부로 사용되는 Migrate to Containers Linux 시스템 컨테이너에 대해 자세히 설명합니다.

Linux 시스템 컨테이너를 사용하여 마이그레이션

Migrate to Containers는 소스 애플리케이션 파일과 프로세스를 검색합니다. 그런 후 Dockerfile, Kubernetes 매니페스트, Skaffold 구성을 포함하는 아티팩트를 생성합니다.

Linux 시스템 컨테이너의 기본 기능은 관련 운영체제 및 애플리케이션 서비스를 포함하여 원래 소스 가상 머신(VM) 인스턴스에서 실행되었던 서비스를 시작하는 것입니다.

Dockerfile은 마이그레이션된 VM의 이미지를 빌드하기 위해 사용됩니다. Linux 시스템 컨테이너 Dockerfile은 일반적으로 다음과 유사합니다.

# Please refer to the documentation:
# https://cloud.google.com/migrate/anthos/docs/dockerfile-reference

FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime

FROM scratch

# Tar containing data captured from the source VM
ADD vmFiles.tar.gz /

COPY --from=service-manager-runtime / /

ADD blocklist.yaml /.m4a/blocklist.yaml

ADD logs.yaml /code/config/logs/logsArtifact.yaml

ADD services-config.yaml /.m4a/

ADD tempfiles.yaml  /.m4a/

# If you want to update parts of the image, add your commands here.
# For example:
# RUN apt-get update
# RUN apt-get install -y \
#       package1=version \
#       package2=version \
#       package3=version
# RUN yum update
# RUN wget http://github.com

ENTRYPOINT ["/ko-app/service-manager-runtime", "start", "-c", "/.m4a/"]

마이그레이션을 실행할 때 다음 Dockerfile 문은 원본 소스에서 Docker 이미지로 VM 데이터를 복사하거나 추가합니다.

  • 다음 문은 소스 VM에서 Docker 이미지로 캡처된 데이터가 포함된 tar 파일을 추가합니다.

    ADD vmFiles.tar.gz /
    

    이 tar 파일은 Migrate to Containers에서 생성됩니다. 여기에는 마이그레이션 계획의 필터에 제공된 모든 항목과 필터링된 데이터 마이그레이션 계획에 제공된 폴더와 함께 소스 VM의 루트 파일 시스템이 포함됩니다.

  • 다음 문은 Docker 저장소에서 Docker 이미지로 Migrate to Containers 런타임을 가져옵니다.

    FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/service-manager-runtime:1.0.0 as service-manager-runtime
    
  • 그런 후 다음 문은 Migrate to Containers 런타임을 Docker 이미지로 복사합니다.

    COPY --from=service-manager-runtime / /
    

클릭하여 Migrate to Containers 런타임 파일에 대한 세부정보 보기

/ko-app/service-manager-runtime는 기본 Migrate to Containers 런타임 파일이며, 컨테이너를 위해 만들어진 초기화 시스템입니다. 이 파일은 다음을 수행합니다.

  • /.m4a/services-config.yaml 파일을 읽고 데몬화, 비데몬화, 완료 대기와 같은 지정된 실행 메서드에 따라 지정된 바이너리를 순서대로 실행합니다.
  • /code/config/logs/logsArtifact.yaml 파일에 지정된 로그를 수집하고 컨테이너의 stdout에 출력합니다. 또한 GKE 및 GKE 클러스터의 경우 로그가 Cloud Logging에 전송되도록 보장합니다.

마이그레이션된 워크로드 유지보수

마이그레이션된 아티팩트에서 애플리케이션의 새 파이프라인을 만들 수 있습니다. 각 애플리케이션에 대해 서로 다른 파이프라인을 지정할 수 있습니다. 원래 VM 기반 애플리케이션을 생성한 기존의 지속적 통합 및 배포 파이프라인을 유지하고 생성된 실행 파일을 Linux 시스템 컨테이너로 전환하는 관련 단계를 추가할 수 있습니다.

다음 다이어그램은 Migrate to Containers를 사용하는 샘플 파이프라인을 보여줍니다.

Migrate to Containers를 사용하는 애플리케이션 리플랫폼을 위한 자동화된 CI/CD 흐름

이 다이어그램은 기존 애플리케이션의 변경 프로세스를 보여줍니다.

소스 코드 또는 새로운 OS 경로의 변경사항이 기존 Git 저장소에 푸시됩니다. 소스가 기존 설정에 따라 컴파일되고 새 이미지가 빌드됩니다. 새 이미지에는 Migrate to Containers 런타임 레이어가 포함됩니다.

테스트 환경에서 개발자는 가전 테스트를 실행하여 새 이미지가 예상대로 작동하는지 확인합니다. 테스트 단계 후에는 새 시스템 컨테이너 이미지가 생성되고 개발 또는 테스트 환경에 푸시되고, 나중에 프로덕션으로 출시됩니다.