Envoy 및 프록시리스 워크로드로 서비스 라우팅 API 설정 준비
이 문서에서는 Envoy 프록시 또는 프록시리스 gRPC를 데이터 플레인으로 사용해서 서비스 라우팅 API로 Cloud Service Mesh를 설정하기 위한 기본 요건 태스크에 대해 설명합니다.
Cloud Service Mesh 설정에는 여러 단계가 포함됩니다. 이 문서에서는 VM 인스턴스 또는 프록시리스 gRPC 애플리케이션을 사용하여 Cloud Service Mesh 구성을 준비하기 위한 안내인 첫 번째 단계에 대해 설명합니다. 추가 단계는 이 문서의 뒷부분에 나오는 설정 프로세스 계속에 나열된 플랫폼별 가이드에서 설명합니다.
이 가이드를 읽으려면 먼저 서비스 라우팅 API 및 Gateway API에서 Cloud Service Mesh 사용에 대한 개요를 제공하는 다음 문서를 숙지해야 합니다.
기본 요건
다음 작업을 완료하여 환경을 준비합니다.
- 비즈니스 요구에 맞게 프로젝트를 설정합니다.
- 결제를 사용하도록 설정합니다.
- 필수 권한을 부여합니다.
- 프로젝트에 대해 Traffic Director API 및 기타 API를 사용 설정합니다.
- 서비스 계정에 Traffic Director API에 액세스하기에 충분한 권한이 있는지 확인합니다.
- Cloud DNS API를 사용 설정하고 Cloud DNS를 구성합니다.
다음 섹션에서는 각 작업에 대한 안내를 제공합니다.
프로젝트 설정
프로젝트를 설정하고 관리하려면 프로젝트 만들기 및 관리와 관련 문서를 참조하세요.
결제 사용 설정
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 ) |
서비스 계정에 대한 액세스를 허용합니다. | 서비스 계정 사용자 ( roles/iam.serviceAccountUser ) |
필요한 작업을 수행하도록 서비스 계정을 사용 설정합니다. | 서비스 계정 사용자
( roles.trafficdirector.client) |
Compute Engine VM에 https://www.googleapis.com/auth/cloud-platform
범위가 포함되어야 합니다. 자세한 내용은 프록시리스 gRPC를 사용하는 배포 문제 해결을 참조하세요.
Traffic Director API에 액세스하도록 서비스 계정 사용 설정
데이터 플레인을 설정하고 이를 Cloud Service Mesh에 연결하면 Envoy 프록시 또는 프록시리스 gRPC 클라이언트에 관계없이 xDS 클라이언트가 trafficdirector.googleapis.com
xDS 서버에 연결됩니다. 이러한 xDS 클라이언트는 xDS 서버에 서비스 계정 ID를 제공하여 데이터 플레인과 컨트롤 플레인 간의 통신이 제대로 승인되도록 합니다.
Compute Engine VM의 경우 xDS 클라이언트는 VM에 할당된 서비스 계정을 사용합니다.
구성을 수정하지 않으면 Google Cloud에 Compute Engine 기본 서비스 계정이 사용됩니다.
서비스 계정에 Traffic Director API에 대한 액세스 권한을 부여하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 IAM 및 관리자 페이지로 이동합니다.
프로젝트를 선택합니다.
역할을 추가할 서비스 계정을 찾습니다.
- 서비스 계정이 구성원 목록에 아직 없는 경우 어떠한 역할도 할당되지 않은 것입니다. 추가를 클릭하고 서비스 계정의 이메일 주소를 입력합니다.
- 서비스 계정이 구성원 목록에 이미 있는 경우 기존 역할이 있는 것입니다. 서비스 계정을 선택하고 역할 탭을 클릭합니다.
역할을 확장합니다. 수정하려는 서비스 계정에 대해
수정을 클릭합니다.기타 > Traffic Director 클라이언트 역할을 선택합니다.
서비스 계정에 역할을 적용하려면 저장을 클릭합니다.
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
: 서비스 계정과 연결된 이메일입니다.
필요한 API 사용 설정
다음과 같이 필요한 API를 사용 설정합니다.
- osconfig.googleapis.com
- trafficdirector.googleapis.com
- compute.googleapis.com
- networkservices.googleapis.com
필요한 API를 사용 설정하려면 다음 안내를 따르세요.
콘솔
Google Cloud 콘솔에서 프로젝트의 API 라이브러리 페이지로 이동합니다.
API 및 서비스 검색 필드에
Traffic Director
를 입력합니다.검색결과 목록에서 Traffic Director API를 클릭합니다. Traffic Director API가 표시되지 않으면 Traffic Director API를 사용 설정하는 데 필요한 권한이 없는 것입니다.
Traffic Director API 페이지에서 사용 설정을 클릭합니다.
API 및 서비스 검색 필드에
OS Config
를 입력합니다.검색 결과 목록에서 OS 구성을 클릭합니다. OS Config API가 표시되지 않으면 Traffic Director API를 사용 설정하는 데 필요한 권한이 없는 것입니다.
OS Config API 페이지에서 사용 설정을 클릭합니다.
API 및 서비스 검색 필드에
Compute
를 입력합니다.검색 결과 목록에서 Compute Engine API를 클릭합니다. Compute Engine API가 표시되지 않으면 Compute Engine API 사용 설정에 필요한 권한이 없는 것입니다.
Compute Engine API 페이지에서 사용 설정을 클릭합니다.
API 및 서비스 검색 필드에
Network Services
를 입력합니다.검색 결과 목록에서 Network Services API를 클릭합니다. Network Services API가 표시되지 않으면 Network Services API를 사용 설정하는 데 필요한 권한이 없는 것입니다.
Network Services API 페이지에서 사용 설정을 클릭합니다.
gcloud
다음 명령어를 실행합니다.
gcloud services enable osconfig.googleapis.com \ trafficdirector.googleapis.com \ compute.googleapis.com \ networkservices.googleapis.com
xDS 버전
서비스 라우팅 API를 사용하려면 xDS v3를 사용해야 합니다. xDS v2에서 xDS v3로 배포를 업데이트하는 방법은 xDS 컨트롤 플레인 API를 참조하세요.
Envoy 프록시의 추가 요구사항
이 섹션에서는 서비스 라우팅 API와 Envoy 프록시에 Cloud Service Mesh를 사용하기 위한 추가 요구사항에 대해 설명합니다. 프록시리스 gRPC로 배포하는 경우 프록시 gRPC의 추가 요구사항을 참조하세요.
Envoy 설치 방법
Cloud Service Mesh 배포 프로세스 중에 애플리케이션이 실행되는 VM에 Envoy를 자동으로 설치하는 VM 템플릿을 만듭니다.
Envoy 버전 정보
Cloud Service Mesh에 사용하려면 Envoy 버전이 1.20.0 이상이어야 합니다. 알려진 보안 취약점을 완화하려면 항상 최신 Envoy 버전을 사용하는 것이 좋습니다.
자동화된 방법 중 하나를 사용하여 Envoy를 배포하는 경우 다음과 같이 작업을 처리합니다.
Compute Engine VM에 Envoy를 자동으로 배포하면 Cloud Service Mesh에서 작동하는 것으로 검증된 Envoy 버전이 설치됩니다. 인스턴스 템플릿을 사용하여 새 VM이 생성되면 VM은 검증된 최신 버전을 수신합니다. 장기 실행 VM이 있는 경우 순차적 업데이트를 사용하여 기존 VM을 대체하고 최신 버전을 선택할 수 있습니다.
특정 Envoy 버전에 대한 자세한 내용은 버전 기록을 참조하세요. 보안 취약점에 대한 자세한 내용은 보안 권고를 참조하세요.
프록시리스 gRPC의 추가 요구사항
이 섹션에서는 서비스 라우팅 API 및 프록시리스 gRPC에 Cloud Service Mesh를 사용하기 위한 추가 요구사항에 대해 설명합니다. Envoy 프록시로 배포하는 경우에는 Envoy 프록시의 추가 요구사항을 참조하세요.
프록시리스 gRPC의 전체 프로세스
서비스 메시에서 프록시리스 gRPC 애플리케이션을 설정하는 다음 전체 절차를 따릅니다.
- gRPC 클라이언트를 최신 패치가 적용된 최신 버전의 gRPC로 업데이트합니다.
- 채널을 만들고 Cloud Service Mesh 부트스트랩 파일을 지정할 때 클라이언트의 gRPC 이름 리졸버 스킴을 업데이트합니다.
- 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_VERSION
을 gRPC의 최신 버전으로 바꿉니다.
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 |
projects/PROJECT_NUMBER/networks/NETWORK_NAME/nodes/ID
|
metadata |
xDS 서버 관련 정보입니다. |
TRAFFICDIRECTOR_MESH_NAME |
필드가 비어 있거나 지정되지 않으면 값이 default 로 설정됩니다. |
locality |
gRPC 클라이언트가 실행되는 Google Cloud 영역입니다. |
설정 프로세스 계속하기
이 문서에 설명된 기본 요건을 완료한 후 서비스 라우팅 API로 Cloud Service Mesh를 구성하는 경우에는 계속해서 다음 문서 중 하나를 진행합니다.
Mesh
리소스로 프록시리스 gRPC 서비스 설정- HTTP 서비스로 Envoy 프록시 설정
- 인그레스 게이트웨이 설정
TCPRoute
리소스로 TCP 서비스 설정Mesh
및Route
리소스로 프로젝트 간 참조 설정- 게이트웨이 TLS 라우팅 설정