빠른 시작

이 빠른 시작에서는 간단한 Compute Engine 가상 머신(VM)을 만든 다음 Migrate for Anthos를 사용하여 VM을 클라우드의 Google Kubernetes Engine(GKE) 처리 클러스터로 마이그레이션합니다.

migctl 도구 또는 Google Cloud Console을 사용하여 빠른 시작에 필요한 단계를 수행할 수 있습니다. migctl은 Google Cloud에서 Migrate for Anthos 마이그레이션 환경을 설정하고 관리하기 위한 명령줄 도구입니다. migctlCloud Shell에서 사용할 수 있습니다.

시작하기 전에

Compute Engine 지원 사용 설정

  1. Google Cloud 계정에 로그인합니다. Google Cloud를 처음 사용하는 경우 계정을 만들고 Google 제품의 실제 성능을 평가해 보세요. 신규 고객에게는 워크로드를 실행, 테스트, 배포하는 데 사용할 수 있는 $300의 무료 크레딧이 제공됩니다.
  2. Google Cloud Console의 프로젝트 선택기 페이지에서 Google Cloud 프로젝트를 선택하거나 만듭니다.

    프로젝트 선택기로 이동

  3. Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 프로젝트에 결제가 사용 설정되어 있는지 확인하는 방법을 알아보세요.

  4. Compute Engine API를 사용 설정합니다.

    API 사용 설정

GKE 사용 설정 및 구성

시작하기 전에 다음 태스크를 수행했는지 확인합니다.

다음 방법 중 하나를 사용하여 기본 gcloud 설정을 진행합니다.

  • gcloud init를 사용하여 기본값 설정 과정을 진행합니다.
  • gcloud config를 사용하여 프로젝트 ID, 영역, 리전을 개별적으로 설정합니다.

gcloud init 사용

One of [--zone, --region] must be supplied: Please specify location 오류가 표시되면 이 섹션을 완료합니다.

  1. gcloud init를 실행하고 다음 안내를 따르세요.

    gcloud init

    원격 서버에서 SSH를 사용하는 경우 --console-only 플래그를 사용하여 다음 명령어로 브라우저를 실행하지 못하게 할 수 있습니다.

    gcloud init --console-only
  2. 안내를 따라 gcloud에서 Google Cloud 계정을 사용하도록 승인합니다.
  3. 새 구성을 만들거나 기존 구성을 선택합니다.
  4. Google Cloud 프로젝트를 선택합니다.
  5. 영역 클러스터의 기본 Compute Engine 영역이나 리전 또는 Autopilot 클러스터의 리전을 선택합니다.

gcloud config 사용

  • 기본 프로젝트 ID를 설정합니다.
    gcloud config set project PROJECT_ID
  • 영역 클러스터를 사용하는 경우 기본 컴퓨팅 영역을 설정합니다.
    gcloud config set compute/zone COMPUTE_ZONE
  • Autopilot 또는 리전 클러스터를 사용하는 경우 기본 컴퓨팅 리전을 설정합니다.
    gcloud config set compute/region COMPUTE_REGION
  • gcloud를 최신 버전으로 업데이트합니다.
    gcloud components update

웹 서버에 VM 만들기

다음 단계에서는 'Hello World!' 웹페이지를 제공하는 간단한 Compute Engine VM을 만듭니다. 페이지가 준비되면 마이그레이션 후 기능을 테스트할 수 있습니다.

  1. 다음 명령어를 실행하여 마이그레이션할 VM 인스턴스를 만듭니다.

    이 주제의 후반부에서 GKE 클러스터를 만들 영역과 동일한 영역을 지정합니다.

    gcloud compute instances create quickstart-instance \
      --project=project-id  --zone=zone --machine-type=n1-standard-1 \
      --subnet=default --scopes="cloud-platform" \
      --tags=http-server,https-server --image=ubuntu-minimal-1604-xenial-v20210119a \
      --image-project=ubuntu-os-cloud --boot-disk-size=10GB --boot-disk-type=pd-standard \
      --boot-disk-device-name=quickstart-instance
    
  2. 다음 명령어를 실행하여 HTTP를 통한 인스턴스 요청을 허용하는 방화벽 규칙을 만듭니다.

    gcloud compute --project=project-id 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
    
  3. Google Cloud Console에서 VM 인스턴스 페이지로 이동합니다.

    VM 인스턴스 페이지로 이동

  4. 가상 머신 인스턴스 목록의 바로 전에 만든 인스턴스 행에서 SSH를 클릭합니다.

    SSH를 통한 연결은 인스턴스에 연결을 참조하세요.

  5. 빠른 시작 인스턴스 명령어 창에서 패키지 관리자를 사용하여 apache2 패키지를 설치합니다.

    sudo apt-get update && sudo apt-get install apache2 -y
    

    Apache를 설치하면 운영체제가 자동으로 Apache 서버를 시작합니다.

  6. 동일한 명령어 창에서 Apache 웹 서버 기본 웹페이지를 다음 명령어로 덮어씁니다.

    echo '<!doctype html><html><body><h1>Hello World!</h1></body></html>' | sudo tee /var/www/html/index.html
    
  7. VM 인스턴스 페이지에서 만든 인스턴스 행을 찾고 외부 IP 주소를 복사합니다.

  8. 인스턴스의 IP 주소를 브라우저 주소 표시줄에 붙여넣습니다. http://를 프리픽스로 사용합니다.

    이제 'Hello World!' 페이지가 표시됩니다.

  9. VM 인스턴스 페이지에서 만든 인스턴스의 행 왼쪽에 있는 체크박스를 선택합니다.

  10. 페이지 상단에서 중지 버튼을 클릭하여 VM을 중지합니다.

처리 클러스터 만들기 및 Migrate for Anthos 설치

다음 단계에서는 처리 클러스터로 사용하는 클라우드에 GKE 클러스터를 만듭니다. 여기에 Migrate for Anthos를 설치하고 마이그레이션을 실행합니다.

  1. Cloud Shell에서 다음 명령어를 사용하여 처리 클러스터로 사용할 새 Kubernetes 클러스터를 만듭니다.

    machine-type 값을 지정할 때는 최소 15GB 이상이 있는 머신 유형을 지정해야 합니다.

    gcloud container clusters create migration-processing \
      --project=project-id --zone=zone --machine-type n1-standard-4 \
      --image-type ubuntu --num-nodes 1 --enable-stackdriver-kubernetes \
      --subnetwork "projects/project-id/regions/region/subnetworks/default"
    
  2. Migrate for Anthos 설치.

    migctl

    Migrate for Anthos에서 Container Registry 및 Cloud Storage에 액세스할 수 있도록 하려면 storage.admin 역할을 가진 서비스 계정을 만들어야 합니다.

    1. Cloud Shell에서 m4a-install 서비스 계정을 만듭니다.

      gcloud iam service-accounts create m4a-install \
        --project=PROJECT_ID
    2. 서비스 계정에 storage.admin 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-install@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/storage.admin"
    3. 서비스 계정의 키 파일을 다운로드합니다.

      gcloud iam service-accounts keys create m4a-install.json \
        --iam-account=m4a-install@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    4. 클러스터에 연결합니다.

      gcloud container clusters get-credentials migration-processing \
        --zone zone --project project-id
      
    5. Cloud Shell에서 Migrate for Anthos에 포함된 migctl 명령줄 도구를 사용하여 처리 클러스터에서 Migrate for Anthos 구성요소를 설정합니다.

      migctl setup install --json-key=m4a-install.json
      
    6. Migrate for Anthos 설치를 검사합니다.

      migctl doctor 명령어를 사용하여 배포가 성공했는지 확인합니다.

      migctl doctor
      

      명령어가 다음 성공 결과를 반환하려면 1분 이상 걸릴 수 있습니다.

      [✓] Deployment
      

    Console

    Google Cloud Console은 필요한 설치 명령어를 생성하고 Cloud Shell에서 이를 실행하여 설치 프로세스를 지원해 줍니다.

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 처리 클러스터 추가를 클릭합니다.

    3. 드롭다운 목록에서 위에서 만든 migration-processing 클러스터를 선택합니다.

    4. Cloud Shell에서 각 명령어를 실행하여 다음을 수행합니다.

      • Migrate for Anthos가 Container Registry 및 Cloud Storage에 액세스할 수 있도록 허용하는 서비스 계정을 만듭니다.
      • Migrate for Anthos 구성요소를 설치합니다.
    5. 마지막 Cloud Shell 명령어를 사용하여 설치 상태를 모니터링합니다.

      설치가 완료되기 전에 다음과 같은 메시지가 표시될 수 있습니다. 이 경우 설치가 완료될 때까지 몇 분 정도 기다린 후 migctl doctor를 다시 실행합니다.

      migctl doctor
      [!] Deployment
       validation job is in-progress
      

      다음 출력 예시에서 체크표시는 Migrate for Anthos가 성공적으로 배포되었음을 나타냅니다.

      migctl doctor
      [✓] Deployment
      
    6. 설치가 완료되면 완료를 선택합니다.

VM 마이그레이션

다음 단계에서는 마이그레이션 세부정보가 포함된 마이그레이션 계획을 만들고 이를 사용해서 VM을 마이그레이션합니다.

  1. 마이그레이션 소스를 Compute Engine VM으로 지정합니다. 그러면 마이그레이션 계획에 소스 사양이 추가됩니다.

    migctl

    Compute Engine을 마이그레이션 소스로 사용하려면 먼저 compute.viewercompute.storageAdmin 역할이 있는 서비스 계정을 만들어야 합니다.

    1. Cloud Shell에서 m4a-ce-src 서비스 계정을 만듭니다.

      gcloud iam service-accounts create m4a-ce-src \
        --project=PROJECT_ID
    2. 서비스 계정에 compute.viewer 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.viewer"
    3. 서비스 계정에 compute.storageAdmin 역할을 부여합니다.

      gcloud projects add-iam-policy-binding PROJECT_ID  \
        --member="serviceAccount:m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com" \
        --role="roles/compute.storageAdmin"
    4. 서비스 계정의 키 파일을 다운로드합니다.

      gcloud iam service-accounts keys create m4a-ce-src.json \
        --iam-account=m4a-ce-src@PROJECT_ID.iam.gserviceaccount.com \
        --project=PROJECT_ID 
    5. 마이그레이션 소스를 만듭니다.

      migctl source create ce quickstart-source --project project-id --json-key=m4a-ce-src.json
      

      여기서 m4a-ce-src.json은 위에서 만든 서비스 계정을 지정합니다.

    Console

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 소스 추가를 클릭합니다.

    3. 드롭다운 목록에서 Migrate for Anthos 구성요소를 이미 설치한 클러스터를 선택합니다.

    4. 다음을 클릭합니다.

    5. 마이그레이션 이름을 quickstart-source로 지정합니다.

    6. 소스 유형Compute Engine으로 설정합니다.

    7. 다음을 클릭합니다.

    8. 마이그레이션하려는 VM이 포함된 프로젝트를 선택합니다.

    9. 새 서비스 계정 만들기를 선택하여 Compute Engine을 마이그레이션 소스로 사용할 수 있는 서비스 계정을 만드세요. 새 서비스 계정의 이름을 입력하라는 메시지가 표시됩니다.

    10. 다음을 클릭합니다.

    11. 소스 추가를 선택합니다.

  2. 마이그레이션을 만듭니다.

    migctl

    이 명령어는 마이그레이션할 대상을 정의하는 마이그레이션 계획을 만듭니다.

    migctl migration create my-migration --source quickstart-source \
      --vm-id quickstart-instance --intent Image
    

    마이그레이션 상태에 마이그레이션이 표시되면 다음 단계로 넘어갈 수 있습니다.

    migctl migration status my-migration
    
    NAME           CURRENT-OPERATION      PROGRESS STEP                   STATUS   AGE
    my-migration   GenerateMigrationPlan  [1/3]    CreateSourceSnapshots  Running  13s

    Console

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 마이그레이션 만들기를 클릭합니다.

    3. 마이그레이션 이름migration으로 설정합니다.

    4. 앞 단계에서 만든 마이그레이션 소스(quickstart-source)를 선택합니다.

    5. 소스 VM 이름 또는 IDquickstart-instance로 설정합니다.

    6. 마이그레이션 인텐트Image로 설정합니다.

    7. 마이그레이션 만들기를 클릭합니다.

      마이그레이션이 완료되면 상태 열에 마이그레이션 계획 생성됨이 표시됩니다.

  3. 마이그레이션 계획을 검토합니다.

    이 빠른 시작에서는 마이그레이션 계획을 검토만 합니다. 그러나 수정할 수도 있습니다. 자세한 내용은 마이그레이션 계획 맞춤설정을 참조하세요.

    migctl

    마이그레이션을 검토하려면 마이그레이션 계획을 다운로드해야 합니다.

    1. 마이그레이션 계획을 다운로드합니다.

      migctl migration get my-migration
      
    2. 텍스트 편집기에서 다운로드한 마이그레이션 계획 my-migration.yaml을 열어 검토합니다.

    3. 변경한 경우 수정된 마이그레이션 계획을 업로드합니다(변경이 없어도 빠른 시작을 완료할 수 있음).

      migctl migration update my-migration --file my-migration.yaml
      

    Console

    YAML 편집기를 사용하여 Google Cloud Console에서 마이그레이션 계획을 검토합니다.

    1. 원하는 마이그레이션 행에서 마이그레이션 이름을 선택하여 세부정보 탭을 엽니다.

    2. YAML 탭을 선택합니다.

    3. 마이그레이션 계획을 검토합니다.

    4. 수정하지 않고 계획을 닫으려면 오른쪽 상단의 'X' 아이콘을 클릭합니다.

  4. 마이그레이션 계획에 따라 VM을 마이그레이션합니다.

    이 단계에서는 VM을 마이그레이션하고 워크로드를 배포하는 데 사용할 수 있는 아티팩트를 생성합니다.

    migctl

    migctl migration generate-artifacts my-migration
    

    Console

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 원하는 마이그레이션 행의 다음 단계 드롭다운에서 아티팩트 생성을 선택합니다.

  5. 마이그레이션이 시작된 후 완료될 때까지 해당 상태를 확인합니다.

    마이그레이션은 몇 분 정도 걸릴 수 있습니다. 이 기간 동안 상태 확인에는 마이그레이션의 현재 상태가 보고됩니다.

    migctl

    migctl migration status my-migration
    

    마이그레이션이 완료되면 다음과 같은 메시지가 표시됩니다.

    migctl migration status my-migration
    
    NAME            CURRENT-OPERATION       PROGRESS        STEP            STATUS    AGE
    my-migration    GenerateArtifacts       [1/1]           ExtractImage    Completed 14m23s

    Console

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 다음 방법으로 마이그레이션 상태를 확인합니다.

      • 마이그레이션 행의 상태 열을 봅니다.

      • 마이그레이션 이름을 클릭합니다. 마이그레이션 세부정보 페이지가 열립니다. 모니터링 탭을 클릭하여 상태 세부정보를 확인하거나 이벤트 탭을 클릭하여 마이그레이션 이벤트를 확인합니다.

    3. 마이그레이션이 완료되면 상태마이그레이션 계획 생성됨이 표시됩니다.

마이그레이션된 워크로드 배포

다음 단계에서는 마이그레이션 중에 생성한 배포 아티팩트를 가져온 후 이를 사용하여 마이그레이션된 워크로드를 클러스터에 배포합니다. 마지막 단계에서는 마이그레이션된 앱에서 'Hello World!' 웹페이지를 사용할 수 있는지 확인합니다.

  1. 마이그레이션이 완료되었으면 생성된 YAML 아티팩트를 다운로드합니다.

    migctl

    migctl migration get-artifacts my-migration
    

    Console

    1. Cloud Console에서 Migrate for Anthos 페이지를 엽니다.

      Migrate for Anthos 페이지로 이동

    2. 원하는 마이그레이션 행에서 마이그레이션 이름을 클릭합니다. 마이그레이션 세부정보 탭이 열립니다.

    3. 아티팩트 탭을 선택합니다.

    4. 각 파일을 선택하여 개별적으로 다운로드합니다.

    마이그레이션 중에 생성되는 아티팩트 파일에는 다음이 포함됩니다.

    • deployment_spec.yaml -- 워크로드를 구성하는 YAML 파일입니다.
    • Dockerfile -- 마이그레이션된 VM의 이미지를 빌드하기 위해 사용되는 Dockerfile입니다.
    • migration.yaml -- 마이그레이션 계획의 사본입니다.
  2. deployment_spec.yaml 파일을 열고 이름이 quickstart-instanceService 객체를 찾으세요.

  3. Service 정의 아래에 HTTP를 통한 웹 서버 액세스를 위해 포트 80을 노출하는 또 다른 Service를 붙여넣은 후 파일을 저장합니다.

    배포 사양에 다음이 포함되도록 강조표시된 코드를 붙여넣습니다.

    apiVersion: v1
    kind: Service
    metadata:
      creationTimestamp: null
      name: quickstart-instance
    spec:
      clusterIP: None
      selector:
        app: quickstart-instance
      type: ClusterIP
    status:
      loadBalancer: {}
    
    ---
    
    apiVersion: v1
    kind: Service
    metadata:
      name: hello-service
    spec:
      selector:
        app: quickstart-instance
      ports:
        - protocol: TCP
          port: 80
          targetPort: 80
      type: LoadBalancer
    
    

  4. 워크로드 배포를 위해 배포 사양 YAML을 적용합니다.

    kubectl apply -f deployment_spec.yaml
    

    배포가 완료되려면 몇 분 정도 걸릴 수 있습니다.

  5. 외부 IP 주소를 확인합니다.

    kubectl get service hello-service
    

    웹 서버가 준비되면 추가한 hello-service의 외부 IP 주소가 표시됩니다.

    kubectl get service hello-service
    NAME            TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)        AGE
    hello-service   LoadBalancer   10.23.241.124   ##.##.###.##   80:32611/TCP   5m4s
    
  6. 브라우저를 열고 외부 IP 주소로 웹 페이지를 방문하여 마이그레이션을 테스트합니다. HTTPS 대신 HTTP를 사용하세요.

    http://##.##.###.##
    

마이그레이션된 워크로드를 사용하여 컨테이너에서 bash 명령어를 실행할 수 있습니다. 자세한 내용은 문제해결 주제를 참조하세요.

정리

불필요한 Google Cloud 요금이 부과되지 않도록 하려면 Google Cloud Console에서 필요하지 않은 프로젝트를 삭제해야 합니다.

다음 단계