프록시리스 gRPC 서비스로 Traffic Director 설정 준비

이 가이드에는 프록시리스 gRPC 애플리케이션을 사용하는 Traffic Director를 준비하기 위한 안내가 포함되어 있습니다.

시작하기 전에

일반적인 Traffic Director 개념에 익숙해져야 합니다. 다음 문서를 읽어보세요.

이 문서는 프록시리스 gRPC 애플리케이션을 사용하는 Traffic Director를 사용하는 방법에 대한 개요를 제공합니다.

일반 준비

먼저 다음 섹션에 설명된 대로 작업을 수행하여 환경을 준비합니다.

필수 IAM 권한 부여

Traffic Director를 구성하려면 VM을 만들고 네트워크를 수정할 수 있는 권한이 있어야 합니다. Traffic Director를 사용 설정하려는 프로젝트에 대한 소유자 또는 편집자 역할이 있는 경우 올바른 권한이 자동으로 부여됩니다.

그렇지 않으면 다음 Compute Engine IAM 역할을 모두 맡아야 합니다. 이러한 역할을 맡는 경우 Compute Engine IAM 문서에 설명된 대로 관련 권한이 있습니다.

작업 필요한 역할
서비스 계정의 IAM 정책 설정 서비스 계정 관리자
글로벌 전달 규칙 리소스 가져오기 Compute 네트워크 뷰어
Traffic Director 사용 설정 서비스 사용량 관리자
네트워크, 서브넷, 부하 분산기 구성요소 만들기 네트워크 관리자
방화벽 규칙 추가 및 삭제 보안 관리자
인스턴스 만들기 Compute 인스턴스 관리자

또한 Compute Engine VM에 https://www.googleapis.com/auth/cloud-platform 범위가 있어야 합니다.

Traffic Director API 사용 설정

콘솔

  1. Cloud Console에서 해당 프로젝트의 API 및 서비스로 이동합니다.
    API 라이브러리 페이지로 이동
  2. Traffic Director API를 찾으려면 검색 필드를 사용합니다. Traffic Director API가 나열되어 있지 않으면 Traffic Director API를 사용 설정하는 데 필요한 권한이 없는 것입니다.
  3. Traffic Director API를 클릭합니다.
  4. API에 대한 정보를 표시하는 페이지에서 사용 설정을 클릭합니다.

gcloud

gcloud services enable trafficdirector.googleapis.com

서비스 계정에 Traffic Director API 액세스 권한 부여

데이터 영역을 설정하고 Traffic Director에 연결하면 xDS 클라이언트가 trafficdirector.googleapis.com xDS 서버에 연결됩니다. 이러한 xDS 클라이언트는 xDS 서버에 서비스 계정 ID를 제공하여 데이터 영역과 제어 영역 간의 통신이 제대로 승인되도록 합니다.

Compute Engine VM의 경우 xDS 클라이언트는 VM에 할당된 서비스 계정을 사용합니다.

xDS 클라이언트에서 사용하는 서비스 계정에는 compute.globalForwardingRules.get 프로젝트 수준 IAM 권한이 있어야 합니다. 서비스 계정에 compute.networkViewer 역할을 할당하여 이 권한을 부여할 수도 있습니다.

Console

  1. Cloud Console에서 IAM 및 관리자 페이지를 엽니다.

    IAM 및 관리자 페이지 열기

  2. 프로젝트를 선택합니다.

  3. 역할을 추가할 서비스 계정을 찾습니다.

    • 서비스 계정이 구성원 목록에 아직 없는 경우 어떠한 역할도 할당되지 않은 것입니다. 추가를 클릭하고 서비스 계정의 이메일 주소를 클릭합니다.
    • 서비스 계정이 구성원 목록에 이미 있는 경우 기존 역할이 있는 것입니다. 서비스 계정을 선택하고 역할 탭을 클릭합니다.
  4. 수정하려는 서비스 계정에서 수정 버튼을 클릭합니다.

  5. Compute Engine > Compute 네트워크 뷰어 역할을 선택합니다.

  6. 저장을 클릭하여 서비스 계정에 역할을 적용합니다.

gcloud

${SERVICE_ACCOUNT_EMAIL} 변수를 올바른 값으로 바꿉니다.

PROJECT=`gcloud config get-value project`
gcloud projects add-iam-policy-binding ${PROJECT} \
   --member serviceAccount:${SERVICE_ACCOUNT_EMAIL} \
   --role roles/compute.networkViewer

그런 다음 메시에서 프록시리스 gRPC 애플리케이션을 설정하는 다음 전체 절차를 따릅니다.

  1. gRPC 클라이언트를 최신 패치가 적용된 1.30.0 이상 버전으로 업데이트합니다.
  2. 채널을 만들고 Traffic Director 부트스트랩 파일을 지정할 때 클라이언트의 gRPC 이름 리졸버 스키마를 업데이트합니다.
  3. Traffic Director 및 Cloud Load Balancing 리소스를 구성합니다.

이 가이드에서는 처음 두 단계를 완료하기 위한 정보를 제공합니다. 3단계에서 사용하는 구성 프로세스는 배포가 Compute Engine VM을 사용하는지 또는 Google Kubernetes Engine NEG를 사용하는지에 따라 다릅니다.

gRPC 클라이언트 업데이트

먼저 gRPC 클라이언트를 최신 패치가 적용된 1.30.0 이상 버전으로 업데이트해야 합니다. 대부분의 gRPC 서버 버전은 1.30.0 이상을 사용하고 최신 패치가 적용된 gRPC 클라이언트와 상호작용할 수 있으므로 모든 gRPC 서버를 동시에 업데이트할 필요가 없습니다.

지원 언어 및 gRPC 버전

gRPC 클라이언트는 최신 패치가 적용된 gRPC 1.30.0 이상 버전을 사용해야 합니다. C++, 자바, Go, Python, PHP, Ruby, C# 언어는 xDSv2를 지원하며 Traffic Director에서 지원됩니다. xDS 이름 리졸버를 gRPC 애플리케이션에 종속 항목으로 추가합니다. 자바 및 Go의 언어별 요구사항이 아래에 나와 있습니다. 다른 언어에는 추가적인 요구사항이 없습니다.

자바 요구사항

자바에서 Gradle을 사용하는 경우 build.gradle 파일에 스냅샷 저장소 및 grpc-xds 종속 항목을 추가합니다.

repositories {
    mavenLocal()
}
dependencies {
  runtimeOnly 'io.grpc:grpc-xds:1.30.0-SNAPSHOT'
}

Maven을 사용하는 경우 pom.xml의 <dependencies> 섹션에 다음을 추가합니다.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>1.30.0-SNAPSHOT</version>
      <scope>runtime</scope>
    </dependency>

Go 요구사항

Go를 사용하는 경우 xds Go 패키지를 가져와야 합니다.

gRPC 이름 리졸버는 xds여야 함

DNS나 다른 리졸버 스키마가 아닌 대상 URI에서 xds 이름 확인 스키마를 사용하도록 gRPC 애플리케이션을 설정하거나 변경합니다. 이렇게 하려면 gRPC 채널을 만들 때 대상 이름에 xds:/// 프리픽스를 사용합니다. gRPC 클라이언트의 부하 분산은 채널 단위로 이루어집니다.

또한 Traffic Director 구성의 대상 URI에 사용된 서비스 이름도 포함해야 합니다. 예를 들어 자바에서는 서비스 이름이 helloworld인 이 구조를 사용하여 채널을 만듭니다.

ManagedChannelBuilder.forTarget("xds:///helloworld[:PORT_NUMBER]")

부트스트랩 파일

xds 리졸버 스키마는 gRPC 애플리케이션에 Traffic Director에 연결하여 대상 서비스의 구성 정보를 가져오도록 지시합니다. 따라서 다음을 수행하세요.

  • 아래와 같이 부트스트랩 파일을 만듭니다. 이 파일은 gRPC에 xDS 서버(Traffic Director)에 연결하여 특정 서비스의 구성을 가져오도록 지시합니다.
  • 부트스트랩 파일 이름을 환경 변수의 값으로 사용하는 GRPC_XDS_BOOTSTRAP이라는 환경 변수를 정의합니다.

설정 안내에는 부트스트랩 파일을 생성하는 방법을 보여주는 예시가 있습니다.

Traffic Director에 연결하는 데 필요한 정보가 들어 있는 부트스트랩 파일은 애플리케이션과 함께 포함되어야 합니다. 샘플 부트스트랩 파일은 다음과 같습니다.

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ]
    }
  ],
  "node": {
    "id": "b7f9c818-fb46-43ca-8662-d3bdbcf7ec18~10.0.0.1",
    "metadata": {
      "TRAFFICDIRECTOR_GCP_PROJECT_NUMBER": "123456789012",
      "TRAFFICDIRECTOR_NETWORK_NAME": "default"
    },
    "locality": {
      "zone": "us-central1-a"
    }
  }
}

다음 표에서 부트스트랩 파일의 필드를 설명합니다.

필드 값 및 설명
xds_servers xDS 서버 목록입니다. gRPC는 목록의 첫 번째 항목만 사용합니다.
server_uri 1개 이상 지정합니다. gRPC는 `xds_servers` 목록의 첫 번째 xDS 서버에만 연결을 시도합니다. 기본값은 trafficdirector.googleapis.com:443입니다.
channel_creds xDS 서버에서 사용할 사용자 인증 정보입니다.
type google_default 값을 사용합니다. 사용자 인증 정보를 얻는 방법에 대한 자세한 내용은 인증 시작하기를 참조하세요.
node xDS 서버에 연결하는 클라이언트에 대한 정보입니다.
id id 필드에 고유 문자열을 입력합니다. 이는 Traffic Director에 연결되는 gRPC 클라이언트를 식별하는 데 도움이 됩니다.
metadata xDS 서버의 특정 정보입니다.
TRAFFICDIRECTOR_GCP_PROJECT_NUMBER Traffic Director가 실행되는 프로젝트 번호입니다.
TRAFFICDIRECTOR_NETWORK_NAME 필드가 비어 있거나 지정되지 않으면 값이 default로 설정됩니다.
locality gRPC 클라이언트가 실행되는 GCP 영역입니다.

다음 단계

이 문서에 설명된 준비를 완료한 후에는 다음 문서 중 하나의 안내를 계속 진행합니다.