고가용성을 위해 리전별로 전역 리소스에 액세스

Compute Engine에서 자동 확장 스크립트 또는 런타임 서비스를 사용하면 지속적 통합 및 지속적 배포 (CI/CD) 파이프라인을 자동화할 수 있습니다. 하지만 이러한 리소스는 전역 API 엔드포인트를 쿼리할 때 전역 리소스 정의에 크게 의존하므로 이 접근 방식은 멀티 리전 아키텍처 전반에 단일 장애점을 도입할 수 있습니다.

이 위험을 완화하려면 전역 리소스의 리전 뷰에 액세스하도록 서비스를 구성하면 됩니다. 컴퓨팅 워크로드가 실행되는 정확한 리전 내에서 리전화된 읽기 전용 엔드포인트에 GET 및 LIST 요청을 전송하면 서비스는 전역 컨트롤 플레인 또는 다른 리전의 잠재적 서비스 중단으로부터 API 소비를 격리합니다. 리전화된 읽기 전용 엔드포인트 및 복원력 권장사항에 대한 자세한 내용은 복원 가능한 제어 영역 읽기에 리전 뷰 사용을 참조하세요.

시작하기 전에

필요한 역할

전역 리소스에 리전별로 액세스하는 데 필요한 권한을 얻으려면 관리자에게 프로젝트 또는 OS 이미지에 대한 Compute 인스턴스 관리자 (v1) (roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 전역 리소스에 리전별로 액세스하는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

전역 리소스에 리전별로 액세스하려면 다음 권한이 필요합니다.

  • 프로젝트의 리전 뷰를 가져오려면 프로젝트에 대한 compute.projects.get
  • OS 이미지의 리전 뷰를 가져오려면 프로젝트 또는 OS 이미지에 대한 compute.images.get 및 compute.images.list

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한 을 부여받을 수도 있습니다.

프로젝트 리소스

projectViews 읽기 전용 엔드포인트를 사용하여 전역 프로젝트 리소스의 리전 뷰를 가져올 수 있습니다. projectViews 엔드포인트를 쿼리하면 Compute Engine 은 표준 전역 compute.Project 리소스 객체를 반환합니다. 리소스 자체는 전역으로 유지됩니다.

프로젝트 리소스의 리전 뷰 가져오기

Google Cloud CLI 또는 REST API를 사용하여 전역 프로젝트의 리전 뷰를 가져올 수 있습니다.

gcloud

특정 리전의 컨트롤 플레인을 통해 전역 프로젝트를 설명하려면 gcloud compute project-views describe 명령어를 실행합니다.

gcloud compute project-views describe \
    --region=REGION \
    --project=PROJECT_ID

다음을 바꿉니다.

  • REGION: API 요청의 Cloud de Confiance by S3NS 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID

REST

특정 리전의 컨트롤 플레인을 통해 전역 프로젝트를 설명하려면 projectViews 메서드에 GET 요청을 전송합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/projectViews"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • REGION: API 요청의 Cloud de Confiance 리전(예: us-central1)

API는 표준 compute.Project 리소스 표현을 직접 반환합니다.

{
  "kind": "compute#project",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-project12345",
  "commonInstanceMetadata": {
    "items": [
      {
        "key": "example-key",
        "value": "example-value"
      }
    ]
  },
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345",
  "defaultServiceAccount": "SERVICE_ACCOUNT_EMAIL"
}

OS 이미지 리소스

imageViews 읽기 전용 엔드포인트를 사용하여 전역 OS 이미지 리소스의 리전 뷰를 가져올 수 있습니다. imageViews 엔드포인트를 쿼리하면 Compute Engine 은 표준 전역 compute.Image 리소스 객체를 반환합니다. 리소스 자체는 전역으로 유지됩니다.

OS 이미지 리소스의 리전 목록 가져오기

gcloud CLI 또는 REST API를 사용하여 특정 리전 엔드포인트를 통해 프로젝트에서 사용할 수 있는 모든 전역 OS 이미지를 나열할 수 있습니다.

gcloud

리전 엔드포인트를 사용하여 전역 OS 이미지를 나열하려면 gcloud compute image-views list 명령어를 실행합니다.

gcloud compute image-views list \
    --region=REGION \
    --project=PROJECT_ID

다음을 바꿉니다.

  • REGION: API 요청의 Cloud de Confiance 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID

REST

리전 엔드포인트를 사용하여 전역 OS 이미지를 나열하려면 GET 요청을 imageViews 메서드에 전송합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • REGION: API 요청의 Cloud de Confiance 리전(예: us-central1)

OS 이미지 리소스의 리전 뷰 가져오기

gcloud CLI 또는 REST API를 사용하여 리전 엔드포인트를 통해 특정 전역 OS 이미지의 정보를 검색할 수 있습니다.

gcloud

리전 엔드포인트를 사용하여 전역 OS 이미지의 세부정보를 검색하려면 gcloud compute image-views describe 명령어를 실행합니다.

gcloud compute image-views describe IMAGE_NAME \
    --region=REGION \
    --project=PROJECT_ID

다음을 바꿉니다.

  • IMAGE_NAME: 전역 OS 이미지 리소스의 이름
  • REGION: API 요청의 Cloud de Confiance 리전(예: us-central1)
  • PROJECT_ID: 프로젝트 ID

REST

리전 엔드포인트를 사용하여 전역 OS 이미지의 세부정보를 검색하려면 특정 imageViews 메서드에 GET 요청을 전송합니다.

curl -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/imageViews/IMAGE_NAME"

다음을 바꿉니다.

  • PROJECT_ID: 프로젝트 ID
  • REGION: API 요청의 Cloud de Confiance 리전(예: us-central1)
  • IMAGE_NAME: 전역 OS 이미지 리소스의 이름

API는 표준 compute.Image 리소스 표현을 직접 반환합니다.

{
  "kind": "compute#image",
  "id": "1234567890123456789",
  "creationTimestamp": "2024-01-15T10:00:00.000-08:00",
  "name": "my-image12345",
  "sourceDisk": "https://www.googleapis.com/compute/v1/projects/my-project12345/zones/us-central1-a/disks/my-disk12345",
  "sourceDiskId": "1234567890123456789",
  "sourceType": "RAW",
  "status": "READY",
  "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project12345/global/images/my-image12345"
}

다음 단계