Traffic Director xDS 제어 영역 API

Traffic Director 및 해당 클라이언트 (Envoy 프록시 또는 프록시 없는 gRPC 라이브러리)는 오픈소스 xDS API를 사용하여 정보를 교환합니다. Traffic Director를 구성하면 (예: 전달 규칙 및 백엔드 서비스와 같은 리소스 사용) Traffic Director가 이러한 리소스를 xDS 구성으로 변환하고, 클라이언트와 공유합니다.

xDS 버전 지원

xDS는 버전이 지정된 API이며 Traffic Director는 xDS v2 및 xDS v3를 지원합니다. 다음 표에서는 클라이언트 유형별 xDS API 지원을 설명합니다.

xDS v2 xDS v3
Envoy Envoy 버전 1.9.1 - 1.16.2에서 GA 지원 Envoy 버전 1.15.0 이상에서 미리보기 지원
프록시 없는 gRPC gRPC 버전 1.30.0+에서 GA 지원 아직 지원되지 않음

Envoy 커뮤니티는 Envoy 최신 버전에서 xDS v2를 더 이상 지원하지 않습니다. 이 커뮤니티는 2020년 말에 xDS v2 지원을 중단할 계획입니다. 2021년 1분기 이후에는 Envoy의 새 버전이 xDS v3만 지원합니다. 자세한 내용은 Envoy의 지원되는 API 버전을 참조하세요.

xDS v3 미리보기

Traffic Director는 수동으로 Envoy를 배포할 때 xDS v3 API를 위한 미리보기 지원 기능을 제공합니다. 이 미리보기 지원 기능을 테스트하려면 Compute Engine 또는 Google Kubernetes Engine을 위한 수동 Envoy 설정 가이드를 따르세요. 설정 가이드를 다음과 같이 수정해야 합니다.

서비스 계정에 대한 새로운 Traffic Director 권한

서비스 계정에는 trafficdirector.configurations.gettrafficdirector.endpointmetrics.report 권한이 있어야 합니다. 두 권한을 래핑하는 IAM 역할 trafficdirector.client을 사용할 수 있습니다. compute.forwardingRules.get 권한이 더 이상 필요하지 않습니다.

이 IAM 역할을 서비스 계정에 추가하려면 다음 명령어를 사용합니다.

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

Compute Engine 참조 패키지 업데이트

Compute Engine 설정 가이드를 따르는 경우 인스턴스 템플릿을 만들 때 설정 가이드에 제공된 코드 샘플 대신 다음 코드 샘플을 사용합니다.

gcloud compute instance-templates create td-vm-template \
  --scopes=https://www.googleapis.com/auth/cloud-platform \
  --tags=http-td-tag,http-server,https-server \
  --image-family=debian-9 \
  --image-project=debian-cloud \
  --metadata=startup-script="#! /bin/bash

# Add a system user to run Envoy binaries. Login is disabled for this user
sudo adduser --system --disabled-login envoy
# Download and extract the Traffic Director tar.gz file
sudo wget -P /home/envoy https://storage.googleapis.com/traffic-director/traffic-director-xdsv3.tar.gz
sudo tar -xzf /home/envoy/traffic-director-xdsv3.tar.gz -C /home/envoy
sudo cat << END > /home/envoy/traffic-director-xdsv3/sidecar.env
ENVOY_USER=envoy
# Exclude the proxy user from redirection so that traffic doesn't loop back
# to the proxy
EXCLUDE_ENVOY_USER_FROM_INTERCEPT='true'
# Intercept all traffic by default
SERVICE_CIDR='*'
GCP_PROJECT_NUMBER=project number
VPC_NETWORK_NAME=network name
ENVOY_IMAGE='envoyproxy/envoy:v1.15.0'
ENVOY_PORT='15001'
ENVOY_ADMIN_PORT='15000'
LOG_DIR='/var/log/envoy/'
LOG_LEVEL='info'
XDS_SERVER_CERT='/etc/ssl/certs/ca-certificates.crt'
END
sudo apt-get update -y
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common -y
sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository 'deb [arch=amd64] https://download.docker.com/linux/debian stretch stable' -y
sudo apt-get update -y
sudo apt-get install docker-ce apache2 -y
sudo service apache2 restart
echo '<!doctype html><html><body><h1>'`/bin/hostname`'</h1></body></html>' | sudo tee /var/www/html/index.html
cd /home/envoy/traffic-director-xdsv3
sudo ./run.sh start"

Google Kubernetes Engine용 참조 패키지 업데이트

Google Kubernetes Engine 설정 가이드를 따르는 경우 Google Kubernetes Engine / Kubernetes pod에 사이드카 프록시를 삽입 하는 동안 다음 줄을 바꿉니다.

이전:

wget -q -O - \
https://storage.googleapis.com/traffic-director/demo/trafficdirector_client_sample.yaml \
| kubectl apply -f -

신규:

wget -q -O - https://storage.googleapis.com/traffic-director/demo/trafficdirector_client_sample_xdsv3.yaml
sed -i "s/PROJECT_NUMBER/project number/g" trafficdirector_client_sample_xdsv3.yaml
sed -i "s/NETWORK_NAME/network name/g" trafficdirector_client_sample_xdsv3.yaml
kubectl apply -f trafficdirector_client_sample_xdsv3.yaml