API de plan de contrôle xDS Traffic Director

Traffic Director et ses clients (proxys Envoy ou bibliothèques gRPC sans proxy) échangent des informations à l'aide de l'API xDS Open Source. Lorsque vous configurez Traffic Director (par exemple, en utilisant des ressources telles que des règles de transfert et des services de backend), Traffic Director convertit ces ressources en configuration xDS, qu'il partage avec ses clients.

Compatibilité des versions xDS

xDS est une API avec versions gérées, et Traffic Director est compatible avec xDS v2 et xDS v3. Le tableau suivant décrit la compatibilité de l'API xDS par type de client.

xDS v2 xDS v3
Envoy Compatibilité DG avec les versions Envoy 1.9.1 - 1.16.2 Compatibilité bêta avec les versions Envoy 1.15.0+
Services gRPC sans proxy Compatibilité DG avec les versions gRPC 1.30.0+ Pas encore compatibles

Veuillez noter que la communauté Envoy n'accepte plus xDS v2 dans les versions récentes d'Envoy. La communauté prévoit de mettre fin à la compatibilité de xDS v2 en fin d'année 2020. Après le 1er trimestre 2021, les nouvelles versions d'Envoy ne seront compatibles qu'avec xDS v3. Pour plus d'informations, consultez la page Versions d'API compatibles d'Envoy.

xDS v3 bêta

Traffic Director est compatible en bêta avec les API xDS v3 lors du déploiement manuel d'Envoy. Pour tester cette compatibilité bêta, vous pouvez suivre les guides de configuration manuelle d'Envoy pour Compute Engine ou Google Kubernetes Engine. Notez que vous devrez apporter les modifications suivantes par rapport aux guides de configuration.

Nouvelles autorisations Traffic Director sur le compte de service

Le compte de service doit disposer des autorisations trafficdirector.configurations.get et trafficdirector.endpointmetrics.report. Vous pouvez utiliser le rôle IAM trafficdirector.client, qui encapsule les deux autorisations. L'autorisation compute.forwardingRules.get n'est plus nécessaire.

Pour ajouter ce rôle IAM au compte de service, exécutez la commande suivante :

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

Mettre à jour le package de référence pour Compute Engine

Si vous suivez le guide de configuration de Compute Engine, utilisez l'exemple de code suivant lors de la création du modèle d'instance, plutôt que l'exemple de code fourni dans le guide de configuration.

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"

Mettre à jour le package de référence pour Google Kubernetes Engine

Si vous suivez le guide de configuration de Google Kubernetes Engine, remplacez les lignes suivantes lors de l'étape d'injection d'un proxy side-car dans les pods Google Kubernetes Engine/Kubernetes.

Ancien :

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

Nouveau :

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