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 애플리케이션 마이그레이션 튜토리얼을 참조하세요.