Migrate to Containers CLI를 사용한 Linux VM 마이그레이션
이 빠른 시작에서는 Compute Engine 가상 머신(VM) 인스턴스를 만든 다음 Migrate to Containers CLI를 사용하여 VM을 Google Kubernetes Engine(GKE)으로 마이그레이션합니다.
시작하기 전에
- Google Cloud 콘솔의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다. 
- Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요. 
- Compute Engine API를 사용 설정합니다. 
- GKE API 사용 설정 내용을 참조합니다. 
소스 VM으로 사용할 웹 서버가 있는 Compute Engine VM 만들기
이 섹션에서는 마이그레이션 완료 후 테스트에 사용할 수 있는 Hello World! 웹 페이지를 제공하는 Compute Engine VM을 생성하는 방법에 대해 설명합니다.
- Google Cloud 콘솔에서 - Cloud Shell 활성화를 클릭합니다. 
- VM을 만듭니다. - gcloud compute instances create quickstart-source-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-source-vm- VM 만들기가 완료될 때까지 몇 분 정도 기다립니다. 
- HTTP를 통해 인스턴스에 대한 요청을 허용하는 방화벽 규칙을 만듭니다. - gcloud compute firewall-rules create default-allow-http \ --direction=INGRESS --priority=1000 --network=default --action=ALLOW \ --rules=tcp:80 --source-ranges=0.0.0.0/0 --target-tags=http-server
- VM 인스턴스 페이지로 이동합니다. 
- VM - quickstart-source-vm에 연결하려면 VM의 행을 찾은 다음 SSH를 클릭합니다.- 연결이 새 탭에서 설정됩니다. 
- quickstart-source-vm명령어 탭에서- apache2패키지를 설치합니다.- sudo apt-get update && sudo apt-get install apache2 -y- Apache를 설치하면 운영체제가 자동으로 Apache 서버를 시작합니다. 
- 동일한 탭에서 Apache 웹 서버 기본 웹페이지를 새 페이지로 덮어씁니다. - echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
- VM 인스턴스 페이지로 돌아가서 - quickstart-source-vm에 표시된 외부 IP 주소를 복사합니다.
- 브라우저 주소 표시줄에 VM의 IP 주소를 붙여넣습니다. - http://를 프리픽스로 사용합니다.- Hello World! 페이지가 나타납니다. 
로컬 머신으로 사용할 Compute Engine VM 만들기
이 섹션에서는 소스 VM 마이그레이션을 위한 다양한 Migrate to Containers 작업을 수행하기 위해 로컬 머신으로 사용할 수 있는 Linux VM을 만듭니다.
- Google Cloud 콘솔에서 - Cloud Shell 활성화를 클릭합니다. 
- VM을 만듭니다. - gcloud compute instances create quickstart-local-vm \ --zone=us-central1-a --machine-type=e2-medium \ --subnet=default --scopes="cloud-platform" \ --tags=http-server,https-server --image=ubuntu-2204-jammy-v20240208 \ --image-project=ubuntu-os-cloud --boot-disk-size=50GB --boot-disk-type=pd-standard \ --boot-disk-device-name=quickstart-local-vm- VM 만들기가 완료될 때까지 몇 분 정도 기다립니다. 
GKE 클러스터 만들기
이 섹션에서는 Google Cloud에서 GKE 클러스터를 만들고 이 빠른 시작 뒷부분에서 컨테이너화된 워크로드를 배포합니다.
- Cloud Shell에서 새 Kubernetes 클러스터를 만듭니다. - gcloud container clusters create quickstart-cluster \ --zone=us-central1-a --machine-type=e2-medium \ --image-type=ubuntu_containerd --num-nodes=1 \ --logging=SYSTEM,WORKLOAD,API_SERVER,SCHEDULER,CONTROLLER_MANAGER- 클러스터 만들기가 완료될 때까지 몇 분 정도 기다립니다. 
마이그레이션을 수행할 로컬 VM 준비
- VM 인스턴스 페이지로 이동합니다. 
- VM - quickstart-local-vm에 연결하려면 VM의 행을 찾은 다음 SSH를 클릭합니다.- 연결이 새 탭에서 설정됩니다. 
- quickstart-local-vm명령어 탭에서 Google Cloud CLI를 설치합니다.- # Import the Google Cloud public key. curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/cloud.google.gpg # Add the gcloud CLI distribution URI as a package source echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] https://packages.cloud.google.com/apt cloud-sdk main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list # Update and install gcloud sudo apt-get update && sudo apt-get install google-cloud-cli # Get started gcloud init- gcloud CLI 설정을 완료하려면 - quickstart-local-vm명령어 탭에 표시된 안내를 따릅니다.- 여러 작업을 수행하는 데 사용할 계정을 선택하려면 1을 입력합니다.
- VM을 만든 프로젝트를 선택하려면 1을 입력합니다.
- 기본 리전 및 영역 구성을 건너뛰려면 n을 입력합니다.
 
- 여러 작업을 수행하는 데 사용할 계정을 선택하려면 
- Docker를 설치하고 루트가 아닌 사용자가 컨테이너를 실행하도록 허용합니다. - # Download the convenience script curl -fsSL https://get.docker.com -o install-docker.sh # Install Docker sudo sh install-docker.sh # Allow the non-root user to access Docker sudo usermod -aG docker $USER # Activate the group changes newgrp docker
- Skaffold를 설치합니다. - curl -Lo skaffold https://storage.googleapis.com/skaffold/releases/latest/skaffold-linux-amd64 && \ sudo install skaffold /usr/local/bin/
- Migrate to Containers CLI를 다운로드합니다. - curl -O "https://m2c-cli-release.storage.googleapis.com/$(curl -s https://m2c-cli-release.storage.googleapis.com/latest)/linux/amd64/m2c" chmod +x ./m2c
소스 VM 마이그레이션
마이그레이션에는 일반적으로 소스 VM 파일 시스템 복사, 파일 시스템을 분석하여 마이그레이션 계획 만들기, 마이그레이션 아티팩트 생성의 세 단계가 포함됩니다.
다음 섹션에서는 Migrate to Containers CLI를 사용해서 로컬 Linux VM으로 소스 VM을 마이그레이션하는 방법을 설명합니다.
소스 VM 파일 시스템 복사
소스 VM 파일 시스템을 복사할 때 Migrate to Containers CLI는 기본 필터를 사용해서 복사된 파일 시스템 크기를 줄입니다. 하지만 Apache 서버를 시작할 수 있도록 하려면 서버에 /var/log 디렉터리가 필요하며 이 디렉터리는 기본 필터에서 삭제됩니다.
이 섹션에서는 /var/log/*가 소스 VM 파일 시스템과 함께 복사되도록 기본 필터를 수정하는 방법을 설명합니다.
- quickstart-local-vm명령어 탭에서- filters.txt파일의 기본 Migrate to Containers 필터 목록을 가져옵니다.- ./m2c copy default-filters > filters.txt
- 기본 필터를 수정하려면 다음 안내를 따르세요. - 텍스트 편집기에서 - filters.txt파일을 엽니다.- vi filters.txt
- 파일을 변경하려면 - i를 누릅니다.
- 다음 문을 삭제합니다. - - /var/log/*
- 파일을 저장하고 텍스트 편집기를 종료하려면 - Esc를 누른 후- :wq를 입력합니다.
 
- 소스 머신의 파일 시스템을 복사합니다. - ./m2c copy gcloud \ --project PROJECT_ID --zone us-central1-a \ --vm-name quickstart-source-vm --output quickstart-vm-filesystem \ --filters filters.txt- PROJECT_ID를 프로젝트의 ID로 바꿉니다. - 소스 머신의 파일 시스템 사본은 - quickstart-vm-filesystem디렉터리에서 제공됩니다.
마이그레이션 계획 만들기
- quickstart-local-vm명령어 탭에서 마이그레이션 계획을 만듭니다.- ./m2c analyze \ --source quickstart-vm-filesystem --plugin linux-vm-container \ --output analysis-output- 분석이 완료되면 마이그레이션 계획인 - config.yaml이 포함된- analysis-output이라는 새 디렉터리가 생성됩니다.
마이그레이션 아티팩트 생성
- quickstart-local-vm명령어 탭에서 마이그레이션 아티팩트를 생성합니다.- ./m2c generate --input analysis-output --output migration-artifacts- 생성된 마이그레이션 아티팩트가 - migration-artifacts디렉터리에 추가됩니다.
마이그레이션된 워크로드 배포
이 섹션에서는 로컬 VM quickstart-local-vm에서 마이그레이션된 워크로드를Google Cloud에서 실행되는 GKE 클러스터로 배포합니다.
- quickstart-local-vm명령어 탭에서- gke-gcloud-auth-plugin플러그인을 설치합니다.- sudo apt-get install google-cloud-sdk-gke-gcloud-auth-plugin
- kubectl을 설치합니다.- sudo apt-get install kubectl
- quickstart-cluster클러스터에 연결합니다.- gcloud container clusters get-credentials quickstart-cluster \ --zone us-central1-a --project PROJECT_ID
- migration-artifacts폴더를 엽니다.- cd migration-artifacts
- 워크로드를 인터넷에 노출하려면 - deployment_spec.yaml파일에 새- LoadBalancer서비스를 추가합니다.- deployment_spec.yaml파일을 수정하려면 다음을 수행합니다.- 텍스트 편집기에서 - deployment_spec.yaml파일을 엽니다.- vi deployment_spec.yaml
- 파일을 변경하려면 - i를 누릅니다.
- 이름이 - linux-system인- Service객체를 찾습니다. 다음과 비슷하게 표시됩니다.- apiVersion: v1 kind: Service metadata: labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP
- linux-system바로 뒤에- hello-service라는 다른- Service객체를 추가합니다.- apiVersion: v1 kind: Service metadata: labels: anthos-migrate.cloud.google.com/type: linux-container migrate-for-anthos-optimization: "true" migrate-for-anthos-version: m2c-cli-1.2.2 name: linux-system spec: clusterIP: None selector: app: linux-system type: ClusterIP --- # Add the hello-service object apiVersion: v1 kind: Service metadata: name: hello-service spec: selector: app: linux-system ports: - protocol: TCP port: 80 targetPort: 80 type: LoadBalancer
- 파일을 저장하고 텍스트 편집기를 종료하려면 - Esc를 누른 후- :wq를 입력합니다.
 
- 마이그레이션된 VM을 배포합니다. - skaffold run -d eu.gcr.io/PROJECT_ID
- 마이그레이션된 VM의 외부 IP 주소를 가져옵니다. - kubectl get service hello-service
- 웹 서버가 준비되면 추가한 - hello-service의 외부 IP 주소가 표시됩니다.- NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE hello-service LoadBalancer 10.23.241.124 EXTERNAL_IP 80:32611/TCP 5m4s
- 마이그레이션이 성공했는지 확인하려면 새 브라우저 탭을 열고 외부 IP 주소의 웹페이지를 방문합니다. - http://EXTERNAL_IP- HTTPS가 아닌- HTTP를 사용해야 합니다.
- 화면에 Hello World! 텍스트가 표시되면 VM 마이그레이션이 성공한 것입니다. - 마이그레이션된 워크로드에 액세스할 수 없는 경우 알려진 문제 해결 방법을 참조하세요. 
삭제
이 페이지에서 사용한 리소스 비용이 Google Cloud 계정에 청구되지 않도록 하려면 다음 단계를 수행합니다.
GKE 클러스터 삭제
- Google Cloud 콘솔에서 GKE 페이지로 이동합니다.
- quickstart-cluster를 선택한 후 삭제를 클릭합니다.
- 확인 메시지가 표시되면 삭제를 다시 클릭합니다.
VM 삭제
- Google Cloud 콘솔에서 VM 인스턴스 페이지로 이동합니다.
- quickstart-source-vm이름을 클릭합니다.
- 인스턴스 세부정보 페이지 상단에서 삭제를 클릭합니다.
- quickstart-local-vm이라는 이름을 클릭합니다.
- 인스턴스 세부정보 페이지 상단에서 삭제를 클릭합니다.
다음 단계
- 게스트 일괄 검색 및 데이터 수집 방법을 알아보세요.
- 보다 복잡한 애플리케이션을 마이그레이션하는 방법은 Migrate to Containers GitHub 저장소에서 제공되는 Spring Framework 애플리케이션 마이그레이션 튜토리얼을 참조하세요.