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

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

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

시작하기 전에

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

대상 클러스터에 배포

다음 섹션에서는 클러스터에 워크로드를 배포하는 데 사용할 수 있는 옵션을 설명합니다.

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

대상 클러스터에 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 파일을 수정하여 spec.template.spec 정의에 imagePullSecrets 값을 추가합니다.

      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 이미지 레지스트리에 대한 읽기 액세스 권한이 있는지 확인합니다.

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

    kubectl apply -f deployment_spec.yaml

다음 단계