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

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

시작하기 전에

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

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

일반 준비

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

결제 사용 설정

Google Cloud 프로젝트에 결제가 사용 설정되어 있는지 확인합니다. 자세한 내용은 프로젝트의 결제 사용 설정, 사용 중지, 변경을 참조하세요.

필수 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 사용 설정

Console

  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에 할당된 서비스 계정을 사용합니다.

gRPC 애플리케이션이 사용하는 xDS 프로토콜 버전에 따라 다음과 같은 권한이 필요합니다. xDS 프로토콜 버전은 부트스트랩 파일에 지정됩니다. xDS v3을 사용하여 애플리케이션을 구성하거나, xDS v2를 사용하는 기존 배포가 있는 경우 xDS v3으로 마이그레이션하는 것이 좋습니다.

  • xDS v3을 사용하는 경우 gRPC 애플리케이션에서 사용하는 서비스 계정에 trafficdirector.networks.reportMetricstrafficdirector.networks.getConfigs 권한이 있어야 합니다. 두 권한을 래핑하는 IAM 역할 trafficdirector.client을 사용할 수 있습니다.
  • xDS v2를 사용하는 경우 gRPC 애플리케이션에서 사용하는 서비스 계정에 compute.globalForwardingRules.get 프로젝트 수준 IAM 권한이 있어야 합니다. 서비스 계정에 compute.networkViewer 역할을 할당하여 이 권한을 부여할 수도 있습니다.

Console

  1. Cloud Console에서 IAM 및 관리자 페이지로 이동합니다.

    IAM 및 관리자 페이지로 이동

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

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

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

  5. 기타 > Traffic Director 클라이언트 역할을 선택합니다.

  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/trafficdirector.client

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

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

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

지원되는 gRPC 버전 및 언어

gRPC는 오픈소스 프로젝트이며 출시 버전 지원은 여기에 설명되어 있습니다. 가장 최신의 gRPC 버전을 사용하여 알려진 보안 취약점을 완화하는 것이 좋습니다. 이렇게 하면 또한 애플리케이션이 Traffic Director에서 지원하는 최신 기능에 액세스할 수 있습니다. gRPC의 다양한 구현 및 버전에서 지원하는 서비스 메시 기능은 여기에 나와 있습니다. Traffic Director 및 프록시리스 gRPC 서비스에서 지원하는 gRPC 언어 및 기능은 여기에 나와 있습니다.

Traffic Director는 Google Cloud Platform 서비스 약관에 따라 gRPC의 최신 및 지원되는 버전의 호환성을 유지하고 1년 미만의 gRPC 버전과의 호환되도록 노력합니다.

gRPC 클라이언트 업데이트

먼저 애플리케이션의 gRPC 라이브러리를 필요한 기능을 지원하는 버전으로 업데이트해야 합니다. 자세한 내용은 이전 섹션을 참조하세요. xDS 이름 리졸버를 gRPC 애플리케이션에 종속 항목으로 추가합니다. 자바 및 Go의 언어별 요구사항이 아래에 나와 있습니다. 다른 언어에는 추가적인 요구사항이 없습니다.

자바 요구사항

자바에서 Gradle을 사용하는 경우 build.gradle 파일에 grpc-xds 종속 항목을 추가합니다. 아래 표시된 LATEST_GRPC_VERSIONgRPC의 최신 버전으로 바꿉니다.

dependencies {
  runtimeOnly 'io.grpc:grpc-xds:LATEST_GRPC_VERSION'
}

Maven을 사용하는 경우 pom.xml의 <dependencies> 섹션에 다음을 추가합니다. 아래 표시된 버전을 최신 버전의 gRPC로 바꿉니다.

    <dependency>
      <groupId>io.grpc</groupId>
      <artifactId>grpc-xds</artifactId>
      <version>LATEST_GRPC_VERSION</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 gRPC 부트스트랩 생성기를 사용할 수 있습니다.

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

{
  "xds_servers": [
    {
      "server_uri": "trafficdirector.googleapis.com:443",
      "channel_creds": [
        {
          "type": "google_default"
        }
      ],
      "server_features": ["xds_v3"]
    }
  ],
  "node": {
    "id": "projects/123456789012/networks/default/nodes/b7f9c818-fb46-43ca-8662-d3bdbcf7ec18",
    "metadata": {
      "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 서버에서 사용할 사용자 인증 정보입니다.
server_features xDS v3 지원과 같은 서버에서 지원하는 기능의 목록입니다. 기본값은 비어 있습니다.
type google_default 값을 사용합니다. 사용자 인증 정보를 얻는 방법에 대한 자세한 내용은 인증 시작하기를 참조하세요.
node xDS 서버에 연결하는 클라이언트에 대한 정보입니다.
id id는 위의 예시와 같이 'projects/{project number}/networks/{network name}/nodes/{id}' 형식이어야 합니다. {id} 값으로 고유 문자열을 제공합니다. 이는 Traffic Director에 연결되는 gRPC 클라이언트를 식별하는 데 도움이 됩니다.
metadata xDS 서버의 특정 정보입니다.
TRAFFICDIRECTOR_NETWORK_NAME 필드가 비어 있거나 지정되지 않으면 값이 default로 설정됩니다.
locality gRPC 클라이언트가 실행되는 GCP 영역입니다.

다음 단계

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