대상 클러스터에 Linux 워크로드 배포

소스 플랫폼에서 워크로드를 마이그레이션 한 후에는 해당 프로세스에서 생성된 배포 아티팩트를 사용하여 마이그레이션된 워크로드 컨테이너를 다른 클러스터에 배포할 수 있습니다.

Skaffold는 애플리케이션 빌드, 푸시, 배포를 위한 워크플로를 처리할 수 있습니다. 자세한 내용은 Skaffold를 사용하여 여러 이미지 빌드 및 배포를 참조하세요.

시작하기 전에

워크로드를 배포하기 전에 먼저 다음을 수행해야 합니다.

처리 클러스터에 워크로드 배포

마이그레이션을 수행하는 데 사용한 것과 동일한 클러스터에 마이그레이션된 워크로드를 배포할 수 있습니다. 이를 Migrate to Containers 처리 클러스터라고 합니다. 대부분의 경우 클러스터에는 이미 마이그레이션을 수행하기 위해 Docker 레지스트리에 대한 읽기/쓰기 액세스 권한이 필요하므로 처리 클러스터에서 추가 구성을 수행할 필요가 없습니다.

GCR을 Docker 레지스트리로 사용하여 대상 클러스터에 배포

대상 클러스터에 Google Container Registry(GCR)에 대한 액세스 권한이 있는지 확인하려면 GCR에 액세스하는 데 필요한 사용자 인증 정보가 포함된 Kubernetes 보안 비밀을 만듭니다.

  1. Container Registry 및 Cloud Storage에 액세스하기 위한 서비스 계정 만들기에 설명된 대로 마이그레이션 배포용 서비스 계정을 만듭니다.

    이 과정에서 m4a-install.json이라는 JSON 키 파일을 다운로드했습니다.

  2. GCR에 액세스하는 데 필요한 사용자 인증 정보가 포함된 Kubernetes 보안 비밀을 만듭니다.

    kubectl create secret docker-registry gcr-json-key \
     --docker-server=gcr.io --docker-username=_json_key --docker-password="$(cat ~/m4a-install.json)" \
     --docker-email=account@project.iam.gserviceaccount.com

    각 항목의 의미는 다음과 같습니다.

    • docker-registry는 Kubernetes 보안 비밀 이름(이 예시에서 gcr-json-key)을 지정합니다.
    • docker-server=gcr.io는 GCR을 서버로 지정합니다.
    • docker-username=_json_key는 사용자 이름이 JSON 키 파일에 포함되어 있음을 지정합니다.
    • docker-password는 JSON 키 파일의 비밀번호를 사용하도록 지정합니다.
    • docker-email은 서비스 계정의 이메일 주소를 지정합니다.
  3. 다음 방법 중 하나를 통해 Kubernetes 보안 비밀을 설정합니다.

    • imagePullSecrets 기본값을 변경합니다.

      kubectl patch serviceaccount default -p '{"imagePullSecrets": [{"name": "gcr-json-key"}]}'
    • deployment_spec.yaml 파일을 수정하여 아래와 같이 imagePullSecrets 값을 spec.template.spec 정의에 추가합니다.

      spec:
        containers:
        - image: gcr.io/PROJECT_ID/mycontainer-instance:v1.0.0
          name: mycontainer-instance
          ...
        volumes:
        - hostPath:
            path: /sys/fs/cgroup
            type: Directory
          name: cgroups
        imagePullSecrets:
        - name: gcr-json-key

기본 인증을 지원하는 Docker 레지스트리를 사용하여 대상 클러스터에 배포

Docker 레지스트리를 사용하여 마이그레이션 이미지를 저장하는 경우 레지스트리는 사용자 이름과 비밀번호를 사용하여 기본 인증을 지원해야 합니다. Docker 레지스트리에 대한 읽기 전용 연결을 구성하는 방법은 다양하므로 클러스터 플랫폼 및 Docker 레지스트리에 적합한 방법을 사용해야 합니다.

생성된 배포 YAML 파일 적용

kubectl을 사용하여 프로덕션 클러스터와 같은 대상 클러스터에 배포 사양을 적용합니다.

kubectl

  1. 대상 클러스터에 Docker 이미지 레지스트리에 대한 읽기 액세스 권한이 있는지 확인에 설명된 대로 대상 클러스터에 Docker 이미지 레지스트리에 대한 읽기 액세스 권한이 있는지 확인합니다.

  2. 컨테이너를 배포합니다.

    kubectl apply -f deployment_spec.yaml
  3. 마이그레이션된 워크로드가 올바르게 작동하는지 확인하기 위해 마이그레이션된 워크로드에 대해 검증 테스트를 완료한 후에는 리소스를 비우기 위해 마이그레이션을 삭제해야 합니다. 자세한 내용은 마이그레이션 삭제를 참조하세요.

마이그레이션 삭제

마이그레이션된 워크로드를 검증하고 테스트하여 제대로 작동하는지 확인한 후 마이그레이션을 삭제해야 합니다. 마이그레이션을 삭제하면 마이그레이션에 사용되는 리소스가 확보됩니다.

migctl

  1. 다음 명령어를 사용하여 완료된 마이그레이션을 삭제합니다.

    migctl migration delete MIGRATION_NAME

    여기서 MIGRATION_NAME은 마이그레이션의 이름입니다.

콘솔

  1. Google Cloud 콘솔에서 Migrate to Containers 페이지를 엽니다.

    Migrate to Containers 페이지로 이동

  2. 마이그레이션 탭을 클릭하여 사용 가능한 마이그레이션이 포함된 테이블을 표시합니다.

  3. 삭제하려는 마이그레이션에서 테이블 오른쪽에 있는 휴지통 아이콘 를 클릭한 후 마이그레이션 삭제를 선택합니다.

다음 단계