Cloud Workstations 아키텍처

Cloud Workstations는 프로젝트 리소스에 대한 가시성 및 제어 수준을 향상시키기 위해 Compute Engine VM영구 디스크(PD)와 같은 Google Cloud 리소스를 관리합니다. 예를 들어 모든 워크스테이션 PD에 대해 백업 정책을 적용하는 예약된 디스크 스냅샷 정책을 설정할 수 있습니다. 이와 비슷하게 프로젝트 내에 VM을 포함하면 VPC 네트워크에서 리소스를 원활하게 액세스하고 관리할 수 있습니다.

다음 다이어그램은 Cloud Workstations의 아키텍처를 보여줍니다.

아키텍처 다이어그램

그림 1. Cloud Workstations 아키텍처

워크스테이션 클러스터

워크스테이션 클러스터는 단일 클라우드 리전의 워크스테이션 컬렉션과 프로젝트 내의 VPC 네트워크를 포함하고 관리합니다. 각 워크스테이션 클러스터에는 Google Cloud에서 관리되는 두 가지 구성요소인 컨트롤러와 게이트웨이가 포함됩니다.

  • 컨트롤러: 프로젝트 내에 있는 VM 인스턴스 및 기타 워크스테이션 리소스의 수명 주기를 관리합니다.

    컨트롤러는 Compute Engine API를 사용하여 리소스 수명 주기를 관리하고 Private Service Connect를 활용하여 트래픽을 워크스테이션 VM으로 라우팅합니다.

  • 게이트웨이: 특정 워크스테이션에 바인딩된 클라이언트에서 트래픽을 수신하고 적합한 VM 인스턴스로 전달합니다. 각 워크스테이션 클러스터에는 고유한 도메인 이름이 있고, 각 워크스테이션은 워크스테이션 클러스터 도메인의 하위 도메인에서 연결할 수 있습니다. 예를 들면 $WORKSTATION_ID.$CLUSTER_ID.cloudworkstations.dev입니다.

워크스테이션 클러스터의 다른 기능은 다음과 같습니다.

  • 관리자 및 플랫폼 팀은 연결된 VPC 네트워크 및 특정 리전의 워크스테이션 그룹을 정의하는 워크스테이션 클러스터를 만듭니다.

  • 워크스테이션 클러스터는 Google Kubernetes Engine(GKE) 클러스터와 관련이 없습니다.

  • 각 워크스테이션 클러스터에는 Private Service Connect를 사용하는 워크스테이션이 포함된 VPC에 연결된 전용 컨트롤러가 있습니다. 이는 VPC 피어링 한도에 영향을 미치지 않습니다. 이 컨트롤러는 해당 수명 주기 전반에 걸쳐 워크스테이션 리소스를 관리하고 공개 클러스터 게이트웨이를 통해 워크스테이션에 네트워크 이그레스 및 인그레스를 제공합니다.

  • 각 클라우드 리전에는 하나 이상의 워크스테이션 클러스터가 필요합니다.

  • 필요한 경우 비공개 네트워크 내의 엔드포인트만 Cloud Workstations에 액세스하도록 완전히 비공개 게이트웨이를 사용 설정할 수도 있습니다.

VPC 네트워크

워크스테이션 클러스터를 만들 때는 리소스를 호스팅하기 위해 프로젝트 및 VPC 네트워크를 지정합니다. 그런 후 Cloud Workstations는 프로젝트에 다음 리소스를 프로비저닝합니다.

  • Private Service Connect: 프로젝트 내에 리소스를 만들 수 있도록 Cloud Workstations 컨트롤러와 VPC 사이의 연결을 설정합니다.

  • VM 인스턴스: 워크스테이션이 시작된 후 프로젝트 및 VPC 내에 Compute Engine VM이 동적으로 생성됩니다. 이 VM은 사용자 세션 끝에 또는 구성 가능한 세션 제한 시간 다음에 자동으로 삭제됩니다.

    • VM 게이트웨이: 워크스테이션 클러스터 게이트웨이에서 클라이언트 트래픽을 가져오고, 인증 및 권한 부여를 수행하고, 컨테이너로 전달합니다.

    • 컨테이너: IDE 또는 코드 편집기, 워크스테이션 구성으로 지정된 설정 또는 다른 프로그램과 같이 워크스테이션에 사전 설치된 도구를 정의합니다.

      Cloud Workstations는 인기 있는 IDE 및 언어 도구로 사전 구성된 다양한 기본 이미지를 제공합니다. 또는 관리자와 플랫폼팀에서 개발자 니즈를 충족하는 데 필요한 도구가 포함된 커스텀 컨테이너 이미지를 만들고 지정하여 해당 환경을 맞춤설정할 수 있습니다. 이러한 컨테이너 이미지는 Cloud Workstations 기본 이미지를 확장하거나 플랫폼팀에서 만든 새로운 커스텀 Linux 컨테이너 이미지일 수 있습니다.

  • 영구 디스크: /home 폴더에 마운트된 워크스테이션 VM에 연결된 영구 디스크이며, 세션 종료 후 데이터 및 파일을 저장할 수 있도록 허용합니다.

리소스 수명 주기

Cloud Workstations는 각 워크스테이션의 런타임 환경으로 사용할 VM, 컨테이너 이미지, 영구 디스크를 관리합니다. 워크스테이션 구성에서 이러한 리소스의 사양을 구성합니다.

워크스테이션이 시작되면 Cloud Workstations이 다음을 수행합니다.

  1. VM을 만듭니다.
  2. 워크스테이션 컨테이너 이미지를 VM으로 가져옵니다.
  3. 워크스테이션이 처음 시작될 때 워크스테이션의 /home 디렉터리로 작동할 영구 디스크를 만듭니다.
  4. 영구 디스크를 VM에 연결합니다.
  5. VM에서 컨테이너를 시작하고 영구 디스크를 컨테이너의 /home 디렉터리에 마운트합니다.

세션이 종료되면 Cloud Workstations가 VM을 삭제하지만 이후 워크스테이션 세션에 사용할 수 있도록 영구 디스크를 분리해서 보관합니다. 선택적으로 보관하도록 구성되지 않은 한 워크스테이션이 삭제되어 영구 디스크도 삭제될 때까지 워크스테이션 서비스가 디스크를 보관합니다.

리소스 풀링

관리자 및 플랫폼팀은 풀 크기 워크스테이션 구성 옵션을 사용해서 빠른 워크스테이션 시작을 위해 VM 및 영구 디스크를 선택적으로 풀링할 수 있습니다. 지정된 경우, 서비스가 지정된 영구 디스크 및 VM 수를 풀링하고 워크스테이션 할당 전 컨테이너 이미지를 VM에 미리 가져옵니다. 풀에서 할당되지 않은 VM 및 디스크는 자동으로 삭제되고 12시간마다 다시 생성됩니다. 이러한 방식은 VM을 만들고 컨테이너 이미지를 VM으로 가져오는 데 걸리는 대기 시간을 없앰으로써 워크스테이션 시작 시간을 더 빠르게 해줍니다.

풀링이 사용 설정되었으면 워크스테이션을 시작할 때 Cloud Workstations가 풀링을 수행합니다.

  1. 컨테이너 이미지를 미리 가져온 풀에서 VM을 선택합니다.
  2. 워크스테이션이 처음 시작될 때 풀에서 영구 디스크를 선택합니다.
  3. 영구 디스크를 VM에 연결합니다.
  4. VM에서 컨테이너 이미지를 시작하고 영구 디스크를 컨테이너 이미지의 /home 디렉터리에 마운트합니다.
  5. 새 VM 및 영구 디스크를 만들고 풀을 다시 채워서 할당된 항목을 대체합니다.

세션이 종료되면 Cloud Workstations가 VM을 삭제하지만 이후 워크스테이션 세션에 사용할 수 있도록 영구 디스크를 분리해서 보관합니다. 선택적으로 보관하도록 구성되지 않은 한 워크스테이션이 삭제되어 영구 디스크도 삭제될 때까지 워크스테이션 서비스가 디스크를 보관합니다.

컨테이너 이미지 업데이트

워크스테이션 컨테이너 이미지를 풀링된 VM으로 미리 가져오기 때문에 동일한 이미지 태그의 원격 이미지 저장소에서 수행한 컨테이너 이미지 업데이트는 모든 풀링된 VM이 할당되거나 12시간이 지나서 삭제될 때까지 선택되지 않습니다. 이 시점에서는 풀을 보충하기 위해 새 VM이 생성되고 업데이트된 컨테이너 이미지를 가져옵니다.

컨테이너 이미지 업데이트를 즉시 선택하도록 풀 새로고침을 강제하기 위해서는 관리자가 pool_size0으로 설정하고 이를 다시 원하는 pool_size로 설정할 수 있습니다. Google Cloud 콘솔에서 워크스테이션 구성의 빠른 시작 워크스테이션 기능을 사용 중지하고, 구성을 저장하고, 원하는 숫자로 다시 설정한 후 다시 저장합니다.

또는 관리자와 플랫폼팀에서 워크스테이션 구성의 container.image 필드에서 이미지 태그를 업데이트하여 새 컨테이너 이미지 태그를 선택하도록 풀을 강제로 새로고침할 수 있습니다.

이미지 스트리밍으로 워크스테이션 시작 시간 단축

Cloud Workstations는 워크스테이션 컨테이너 이미지 가져오기 시간을 줄여서 더 빠른 워크스테이션 시작 시간을 제공하는 이미지 스트리밍을 지원합니다.

Cloud Workstations의 이미지 스트리밍은 일반적으로 컨테이너 이미지 가져오기 시간을 몇 분에서 몇 초로 줄여주고 워크스테이션 컨테이너는 일반적으로 전체 이미지가 다운로드될 때까지 기다리지 않고 실행되기 시작합니다.

요구사항

Cloud Workstations에서 이미지 스트리밍을 사용하려면 다음 요구사항을 충족해야 합니다.

  • 워크스테이션 호스트 프로젝트에서 Container File System API를 사용 설정해야 합니다.

    Container File System API 사용 설정

    또는 다음 gcloud CLI 명령어를 실행하여 워크스테이션 호스트 프로젝트에서 Container File System API를 사용 설정할 수 있습니다.

    gcloud services enable containerfilesystem.googleapis.com
    

  • 컨테이너 이미지가 Artifact Registry에 저장되어야 합니다.

  • Artifact Registry 저장소는 Cloud Workstations 리전과 동일한 리전 또는 워크스테이션이 실행 중인 리전에 해당하는 멀티 리전에 있어야 합니다.

  • 워크스테이션 구성에 사용할 서비스 계정을 지정해야 합니다.

  • 클러스터가 VPC 서비스 제어 경계 내부에 있는 경우 서비스 계정이 컨테이너 이미지를 호스팅하는 프로젝트에서 Container File System API에 액세스할 수 있도록 허용하는 이그레스 규칙을 추가해야 합니다. 사전 구성된 IDE를 사용하는 경우 cloud-workstations-images 프로젝트(프로젝트 번호 662288601415)를 허용 목록에 추가해야 합니다.

제한사항

  • 대상 이미지를 처음 가져올 때는 이미지 스트리밍의 이점을 느끼지 못할 수 있습니다. 하지만 이미지 스트리밍이 이미지를 캐시하고 나면 워크스테이션에서 이후 이미지 가져오기에서 이미지 스트리밍의 이점을 누릴 수 있습니다.

  • 다른 GKE 이미지 스트리밍 제한사항이 적용됩니다.