API de plano de control xDS de Traffic Director

Traffic Director y sus clientes (proxies de Envoy o bibliotecas de gRPC sin proxy) intercambian información mediante la API de código abierto xDS. Cuando configuras Traffic Director (por ejemplo, mediante recursos como reglas de reenvío y servicios de backend), Traffic Director convierte estos recursos en una configuración de xDS que comparte con sus clientes.

Compatibilidad con la versión xDS

xDS es una versión con API y Traffic Director es compatible con xDS v2 y xDS v3. En la siguiente tabla, se describe la compatibilidad de la API de xDS por tipo de cliente.

xDS v2 xDS v3
Envoy Compatibilidad de Google Analytics con las versiones de Envoy 1.9.1 - 1.16.2 Compatibilidad de vista previa con las versiones de Envoy 1.15.0+
gRPC sin proxy Compatibilidad de Google Analytics con versiones de gRPC 1.30.0+ Aún no se admite

Ten en cuenta que la comunidad de Envoy dejó de ser compatible con xDS v2 en las versiones recientes de Envoy. La comunidad planea finalizar la compatibilidad de xDS v2 a finales de 2020. Después del primer trimestre de 2021, las versiones nuevas de Envoy solo serán compatibles con xDS v3. Para obtener más información, consulta las versiones de API compatibles de Envoy.

Vista previa de xDS v3

Traffic Director tiene compatibilidad de vista previa para las API de xDS v3 cuando se implementa Envoy de forma manual. A fin de probar esta compatibilidad de vista previa, puedes seguir las guías de configuración manual de Envoy para Compute Engine o Google Kubernetes Engine. Ten en cuenta que deberás realizar las siguientes modificaciones a las guías de configuración.

Nuevos permisos de Traffic Director en la cuenta de servicio

La cuenta de servicio debe tener los permisos trafficdirector.configurations.get y trafficdirector.endpointmetrics.report. Puedes usar la función de IAM trafficdirector.client, que une ambos permisos. El permiso compute.forwardingRules.get ya no es necesario.

Para agregar esta función de IAM a la cuenta de servicio, usa el siguiente comando:

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

Actualiza el paquete de referencia para Compute Engine

Si sigues la guía de configuración de Compute Engine, usa la siguiente muestra de código cuando crees la plantilla de instancias, en lugar de usar la muestra de código proporcionada en la guía de configuración.

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"

Actualiza el paquete de referencia de Google Kubernetes Engine

Si sigues la guía de configuración de Google Kubernetes Engine, reemplaza las siguientes líneas durante el paso Inserta un proxy de sidecar en los Pods de Google Kubernetes Engine o Kubernetes.

Antiguo:

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

Nuevo:

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