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