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 문이 원래 소스의 VM 데이터를 Docker 이미지에 복사하거나 추가합니다.

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

    ADD vmFiles.tar.gz /
    

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

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

    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 런타임 레이어가 포함되어 있습니다.

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