프록시리스 gRPC 서비스로 Cloud Service Mesh 설정 준비

Cloud Service Mesh 설정에는 여러 단계가 포함됩니다. 이 문서에서는 프록시리스 gRPC 애플리케이션을 사용하여 Cloud Service Mesh 구성을 준비하기 위한 안내인 첫 번째 단계에 대해 설명합니다. 이 문서는 부하 분산 API를 사용하는 경우에 적용됩니다. 하지만 서비스 라우팅 API를 사용하는 것이 좋습니다. 다른 단계는 이 문서의 뒷 부분에 나오는 설정 프로세스 계속에 나열된 플랫폼별 가이드로 설명합니다.

이 가이드를 읽기 전에 프록시리스 gRPC 애플리케이션으로 Cloud Service Mesh를 사용하는 방법에 대한 개요를 제공하는 다음 문서를 숙지하세요.

기본 요건

다음 작업을 완료하여 환경을 준비합니다.

  1. 결제를 사용하도록 설정합니다.
  2. 필수 권한을 부여합니다.
  3. 프로젝트에 Traffic Director API를 사용 설정합니다.
  4. 서비스 계정에 Traffic Director API에 액세스하기에 충분한 권한이 있는지 확인합니다.

다음 섹션에서는 각 작업에 대한 안내를 제공합니다.

결제 사용 설정

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

필수 IAM 권한 부여

VM 인스턴스를 만들고 Cloud Service Mesh 구성을 위해 네트워크를 수정할 수 있는 충분한 Identity and Access Management(IAM) 권한이 있어야 합니다. Cloud Service Mesh를 사용 설정하려는 프로젝트에 소유자 또는 편집자 프로젝트 역할(roles/owner 또는 roles/editor)이 있으면 올바른 권한이 자동으로 부여됩니다.

그렇지 않으면 다음 표에 표시된 모든 IAM 역할이 있어야 합니다. 이러한 역할이 있는 경우 Compute Engine IAM 문서에 설명된 대로 관련 권한도 갖게 됩니다.

작업 필요한 역할
서비스 계정의 IAM 정책 설정 서비스 계정 관리자
(roles/iam.serviceAccountAdmin)
Cloud Service Mesh를 사용 설정합니다. 서비스 사용량 관리자
(roles/serviceusage.serviceUsageAdmin)
네트워크, 서브넷, 부하 분산기 구성요소 만들기 Compute 네트워크 관리자
(roles/compute.networkAdmin)
방화벽 규칙 추가 및 삭제 Compute 보안 관리자
(roles/compute.securityAdmin)
인스턴스 만들기 Compute 인스턴스 관리자
(roles/compute.instanceAdmin)
포드를 사용하는 경우 GKE 클러스터를 만들고 수정합니다. 클러스터 관리자
(roles/container.clusterAdmin)
서비스 계정에 대한 액세스를 허용합니다. 서비스 계정 사용자
(roles/iam.serviceAccountUser

Compute Engine VM에 https://www.googleapis.com/auth/cloud-platform 범위가 포함되어야 합니다. 자세한 내용은 프록시리스 gRPC를 사용하는 배포 문제 해결을 참조하세요.

xDS v3를 사용하여 Cloud Service Mesh gRPC 클라이언트에 사용되는 서비스 계정에 roles/trafficdirector.client 역할을 부여합니다.

Traffic Director API 사용 설정

콘솔

  1. Google Cloud 콘솔에서 프로젝트의 API 라이브러리 페이지로 이동합니다.

    API 라이브러리로 이동

  2. API 및 서비스 검색 필드에 Traffic Director를 입력합니다.

  3. 검색결과 목록에서 Traffic Director API를 클릭합니다. Traffic Director API가 표시되지 않으면 Traffic Director API를 사용 설정하는 데 필요한 권한이 없는 것입니다.

  4. Traffic Director API 페이지에서 사용 설정을 클릭합니다.

gcloud

다음 명령어를 실행합니다.

gcloud services enable trafficdirector.googleapis.com

Traffic Director API에 액세스하도록 서비스 계정 사용 설정

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

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

다음 권한이 필요합니다. xDS 프로토콜 버전은 부트스트랩 파일에 지정됩니다. xDS v3만 지원됩니다.

xDS v2를 사용하는 경우 xDS v3로 마이그레이션해야 합니다. 마이그레이션 방법에 대한 자세한 내용은 xDS v2에서 xDS v3로 마이그레이션을 참조하세요.

xDS v3을 사용하는 경우 gRPC 애플리케이션에서 사용하는 서비스 계정에 trafficdirector.networks.reportMetricstrafficdirector.networks.getConfigs 권한이 있어야 합니다. 두 권한을 모두 래핑하는 IAM Cloud Service Mesh 클라이언트 역할(roles/trafficdirector.client)을 사용할 수 있습니다.

콘솔

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

    IAM 및 관리자로 이동

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

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

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

  5. 기타 > Cloud Service Mesh 클라이언트 역할을 선택합니다.

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

gcloud

다음 명령어를 실행합니다.

gcloud projects add-iam-policy-binding PROJECT \
    --member serviceAccount:SERVICE_ACCOUNT_EMAIL \
    --role=roles/trafficdirector.client

다음을 바꿉니다.

  • PROJECT: gcloud config get-value project를 입력합니다.
  • SERVICE_ACCOUNT_EMAIL: 서비스 계정과 연결된 이메일입니다.

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

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

이 문서에서는 처음 두 단계를 완료하기 위한 정보를 제공합니다. 3단계에서 사용하는 구성 프로세스는 배포에 Compute Engine VM을 사용하는지 또는GKE 네트워크 엔드포인트 그룹(NEG)을 사용하는지에 따라 다릅니다.

지원되는 gRPC 버전 및 언어

gRPC는 오픈소스 프로젝트이며 출시 버전 지원은 gRPC FAQ에서 설명됩니다. 알려진 보안 취약점을 해결할 수 있도록 최신 gRPC 버전을 사용하는 것이 좋습니다. 이렇게 하면 또한 애플리케이션이 Cloud Service Mesh에서 지원하는 최신 기능에 액세스할 수 있습니다. gRPC의 다양한 구현 및 버전에서 지원되는 서비스 메시 기능이 GitHub에 나열됩니다. Cloud Service Mesh 및 프록시리스 gRPC 서비스에서 지원하는 gRPC 언어 및 기능은 Cloud Service Mesh 기능을 참조하세요.

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

gRPC 클라이언트 업데이트

애플리케이션의 gRPC 라이브러리를 필요한 기능을 지원하는 버전으로 업데이트합니다. 자세한 내용은 이전 섹션을 참조하세요.

xDS 이름 리졸버를 gRPC 애플리케이션에 종속 항목으로 추가합니다. Java 및 Go의 언어별 요구사항은 다음 섹션에 나와 있습니다. 다른 언어에는 추가적인 요구사항이 없습니다.

자바 요구사항

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

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

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

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

Go 요구사항

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

xds를 사용하도록 gRPC 이름 리졸버 설정

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

Cloud Service Mesh 구성에서 대상 URI에 사용되는 서비스 이름을 포함합니다. 예를 들어 Java에서는 서비스 이름이 helloworld인 이 구조를 사용하여 채널을 만듭니다.

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

부트스트랩 파일 만들기 및 구성

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

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

설정 안내에는 부트스트랩 파일을 생성하는 방법을 보여주는 예시가 있습니다. 편의를 위해 최신 버전의 Cloud Service Mesh gRPC 부트스트랩 생성기를 사용할 수 있습니다.

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

{
  "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 서버에서 사용할 사용자 인증 정보입니다.
type google_default 값을 사용합니다. 사용자 인증 정보를 가져오는 방법에 대한 자세한 내용은 인증 시작하기를 참조하세요.
server_features xDS v3 지원과 같은 서버에서 지원하는 기능의 목록입니다. 기본값은 비어 있습니다.
node xDS 서버에 연결하는 클라이언트에 대한 정보입니다.
id

id는 이전 예시와 같이 다음 형식이어야 합니다.

projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID

ID 값으로 고유 문자열을 제공합니다. 이는 Cloud Service Mesh에 연결되는 gRPC 클라이언트를 식별하는 데 도움이 됩니다.

metadata xDS 서버 관련 정보입니다.
TRAFFICDIRECTOR_NETWORK_NAME 필드가 비어 있거나 지정되지 않으면 값이 default로 설정됩니다.
locality gRPC 클라이언트가 실행되는 Google Cloud 영역입니다.

설정 프로세스 계속하기

이 문서에 설명된 기본 요건을 완료한 후 다음 문서 중 하나를 진행합니다.