Cette page explique comment activer des fonctionnalités facultatives dans un plan de contrôle au sein du cluster. Pour en savoir plus sur le plan de contrôle géré par Google, consultez la page Configurer la plate-forme Anthos Service Mesh gérée.
Lorsque vous installez Anthos Service Mesh, les fonctionnalités activées par défaut diffèrent selon la plate-forme. Vous activez les fonctionnalités facultatives en incluant un fichier overlay lorsque vous installez (ou mettez à niveau) Anthos Service Mesh. Un fichier de superposition est un fichier YAML contenant une ressource personnalisée (RP) IstioOperator
que vous utilisez pour configurer le plan de contrôle. Vous pouvez ignorer la configuration par défaut et activer une fonctionnalité facultative, ou désactiver une fonctionnalité par défaut dans un fichier de superposition. Spécifiez une fonctionnalité par fichier de superposition. Vous pouvez effectuer plusieurs couches de superpositions. Chaque fichier de superposition remplace la configuration dans les couches précédentes.
À propos des fichiers de superposition
Les fichiers de superposition utilisés sur cette page se trouvent dans le package anthos-service-mesh
sur GitHub. Ces fichiers contiennent des personnalisations courantes de la configuration par défaut. Vous pouvez utiliser ces fichiers tels quels ou vous pouvez apporter des modifications supplémentaires si nécessaire.
Lorsque vous installez Anthos Service Mesh à l'aide du script asmcli
fourni par Google, vous pouvez spécifier un ou plusieurs fichiers de superposition avec les options --option
ou --custom_overlay
. Si vous n'avez pas besoin de modifier les fichiers du dépôt anthos-service-mesh
, vous pouvez utiliser --option
. Le script récupère alors le fichier de GitHub à votre place. Sinon, vous pouvez apporter des modifications au fichier de superposition, puis utiliser l'option --custom_overlay
pour le transmettre au script asmcli
.
N'incluez pas plusieurs ressources personnalisées dans un même fichier de superposition. | Créer des fichiers de superposition distincts pour chaque ressource personnalisée |
---|---|
Télécharger le package anthos-service-mesh
Pour télécharger le package anthos-service-mesh
, procédez comme suit :
Les étapes suivantes utilisent kpt
pour télécharger le package asm
à partir du dépôt GitHub. Si vous préférez, vous pouvez utiliser à la place git clone
.
Si ce n'est pas déjà fait, installez
kpt
:gcloud components install kpt
Téléchargez le package contenant les fichiers :
kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.11 asm
Les exemples suivants supposent que le package
asm
se trouve dans votre répertoire de travail actuel.
Activer les fonctionnalités facultatives
Les exemples suivants sont simplifiés pour montrer uniquement l'utilisation des superpositions personnalisées pour activer les fonctionnalités facultatives. Remplacez OTHER_FLAGS
par les autres options de ligne de commande.
La commande asmcli install
propose deux méthodes pour activer une fonctionnalité facultative. La méthode à utiliser dépend de la nécessité ou non de modifier le fichier de superposition.
Utilisez
--option
lorsque vous n'avez pas besoin de modifier le fichier de superposition. Avec--option
,asmcli
extrait automatiquement le fichier du dépôt GitHub. Vous devez donc disposer d'une connexion Internet../asmcli install \ OTHER_FLAGS \ --option OPTION_NAME
Remplacez
OPTION_NAME
par l'option que vous souhaitez activer. Pour obtenir la liste des options, consultez le packageanthos-service-mesh
.Utilisez
--custom_overlay
lorsque vous devez personnaliser le fichier de superposition../asmcli install \ OTHER_FLAGS \ --custom_overlay PATH_TO_FILE
Remplacez
PATH_TO_FILE
par le chemin d'accès au fichier de superposition que vous souhaitez utiliser.
Format YAML pour les fonctionnalités facultatives
Les sections suivantes fournissent le code YAML permettant d'activer les fonctionnalités facultatives compatibles.
Mode mTLS STRICT
La configuration global.mtls.enabled
a été supprimée de la ressource personnalisée IstioOperator
pour éviter les problèmes liés aux mises à niveau et fournir une installation plus flexible.
Pour activer le mode TLS STRICT
, configurez une règle d'authentification des pairs à la place.
Diriger Envoy vers stdout
Pour en savoir plus, consultez la page Activer la journalisation des accès Envoy.
Cloud Trace
Cloud Trace est disponible avec les installations Anthos Service Mesh sur les plates-formes suivantes :
- GKE sur Google Cloud
- Clusters GKE Enterprise sur site si vous les installez avec l'autorité de certification Anthos Service Mesh (Mesh CA)
Pour en savoir plus sur la tarification, consultez la page des tarifs de Cloud Trace.
Le taux d'échantillonnage par défaut est de 1 %, mais vous pouvez remplacer la valeur par défaut en spécifiant une valeur tracing.sampling
. La valeur doit être comprise entre 0 et 100 avec une précision de 0,01. Par exemple, pour tracer cinq requêtes sur 10 000, spécifiez 0,05.
L'exemple suivant montre un taux d'échantillonnage de 100 % (ce qui n'est destiné qu'à des fins de démonstration ou de dépannage).
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
enableTracing: true
defaultConfig:
tracing:
sampling: 100
values:
global:
proxy:
tracer: stackdriver
Notez qu'à l'heure actuelle, la configuration du traceur fait partie de la configuration d'amorçage du proxy. Par conséquent, le pod doit redémarrer et être réinjecté pour récupérer la mise à jour du traceur. Par exemple, vous pouvez utiliser la commande suivante pour redémarrer les pods faisant partie d'un déploiement :
kubectl rollout restart deployment -n NAMESPACE DEPLOYMENT_NAME
Propagation du contexte de trace
Même si les proxys side-car peuvent envoyer automatiquement des délais de trace, ils ont besoin d'indications pour relier l'intégralité de la trace. Les applications doivent propager les en-têtes HTTP appropriés de sorte que, lorsque les proxys envoient des informations de délais, ceux-ci soient correctement corrélés en une seule trace.
Pour ce faire, une application doit collecter et propager les en-têtes appropriés de la requête entrante vers les requêtes sortantes : La configuration de traçage Stackdriver d'Anthos Service Mesh accepte l'un des formats d'en-tête suivants et propage tous les formats suivants :
- B3 (
x-b3-traceid
,x-b3-spanid
,x-b3parentspanid
,x-b3-sampled
,x-b3-flags
) - W3C TraceContext (
traceparent
) - Google Cloud Trace (
x-cloud-trace-context
) - gRPC TraceBin (
grpc-trace-bin
)
Cela signifie que vos applications peuvent utiliser n'importe lequel de ces formats pour propager le contexte de traçage, et les traces sont générées et définies de manière appropriée sur Stackdriver.
Exemple
Voici un exemple de requête HTTP-Get avec un en-tête traceparent
dans la requête d'origine. Notez les en-têtes de contexte de trace supplémentaires ajoutés par le proxy.
$ kubectl exec -it sleep-557747455f-n6flv -- curl "httpbin:8000/anything?freeform=" -H "accept: application/json" -H "Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01" -vv
* Trying 10.12.3.52:8000...
* Connected to httpbin (10.12.3.52) port 8000 (#0)
> GET /anything?freeform= HTTP/1.1
> Host: httpbin:8000
> User-Agent: curl/7.80.0-DEV
> accept: application/json
> Traceparent: 00-7543d15e09e5d61801d4f74cde1269b8-604ef051d35c5b3f-01
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< server: envoy
< date: Wed, 10 Nov 2021 20:36:04 GMT
< content-type: application/json
< content-length: 1032
< access-control-allow-origin: *
< access-control-allow-credentials: true
< x-envoy-upstream-service-time: 5
<
{
"args": {
"freeform": ""
},
"data": "",
"files": {},
"form": {},
"headers": {
"Accept": "application/json",
"Grpc-Trace-Bin": "AAB1Q9FeCeXWGAHU90zeEmm4AaDHmGRtdM7wAgE",
"Host": "httpbin:8000",
"Traceparent": "00-7543d15e09e5d61801d4f74cde1269b8-a0c798646d74cef0-01",
"User-Agent": "curl/7.80.0-DEV",
"X-B3-Sampled": "1",
"X-B3-Spanid": "a0c798646d74cef0",
"X-B3-Traceid": "7543d15e09e5d61801d4f74cde1269b8",
"X-Cloud-Trace-Context": "7543d15e09e5d61801d4f74cde1269b8/11585396123534413552;o=1",
"X-Envoy-Attempt-Count": "1",
"X-Forwarded-Client-Cert": "<REDACTED>"
},
"json": null,
"method": "GET",
"origin": "127.0.0.6",
"url": "http://httpbin:8000/anything?freeform="
}
Notez que l'ensemble complet d'en-têtes de contexte de trace est présent dans l'ensemble d'en-têtes de requête renvoyé.
Pour obtenir davantage d'exemples de propagation des en-têtes, consultez la page Propagation du contexte de trace.
Créer une trace à partir d'un client avec un ID personnalisé
Pour créer une trace à partir d'un client avec un ID personnalisé, utilisez la commande curl
pour créer une requête avec un client externe et l'obliger à afficher une trace. Exemple :
curl $URL --header "x-client-trace-id: 105445aa7843bc8bf206b12000100000"
Pour plus d'informations sur x-client-trace-id
, reportez-vous à la documentation d'Envoy.
Sortie via des passerelles de sortie
Nous vous recommandons d'installer une passerelle injectée comme décrit dans la section Installer et mettre à niveau des passerelles.
Container Network Interface d'Istio
La procédure d'activation de l'interface CNI (Container Network Interface) d'Istio dépend de l'environnement sur lequel Anthos Service Mesh est installé.
Choisissez le fichier de superposition qui correspond à votre plate-forme.
Activer CNI sur GKE
Activer CNI sur site
Activer un équilibreur de charge interne
Nous vous recommandons d'installer une passerelle injectée comme décrit dans la section Installer et mettre à niveau des passerelles pour configurer un équilibreur de charge interne sur GKE. Lors de la configuration du service de passerelle, incluez l'annotation cloud.google.com/load-balancer-type: "internal"
.
Gestion des certificats externes sur la passerelle d'entrée
Pour plus d'informations sur l'activation de la gestion des certificats externes sur la passerelle d'entrée à l'aide d'Envoy SDS, consultez la page Passerelles sécurisées.