Activer des fonctionnalités facultatives sur le plan de contrôle au sein du cluster

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 le plan de contrôle géré par Google.

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 de la commande istioctl install, vous pouvez spécifier un ou plusieurs fichiers de superposition à l'aide de l'option de ligne de commande -f. Bien que vous puissiez modifier la configuration en spécifiant des paramètres de configuration dans la ligne de commande à l'aide de l'option --set de valeur istioctl install, nous vous recommandons d'utiliser un fichier de superposition afin de stocker le fichier dans votre système de contrôle des versions, ainsi que vos autres fichiers de ressources personnalisés. Vous devez conserver ces fichiers pour la mise à niveau d'Anthos Service Mesh afin que votre plan de contrôle ait la même configuration après la mise à niveau.

  • Lorsque vous installez Anthos Service Mesh à l'aide du script install_asm 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 install_asm.

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
plusieurs ressources personnalisées dans un fichier YAML fichiers YAML distincts pour chaque RP

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.

  1. Si ce n'est pas déjà fait, installez kpt :

    gcloud components install kpt
    
  2. Téléchargez le package contenant les fichiers :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    

    Les exemples suivants supposent que le package asm se trouve dans votre répertoire de travail actuel.

Activer les fonctionnalités facultatives

Pour activer une fonctionnalité lorsque vous installez Anthos Service Mesh, la commande exacte varie légèrement en fonction de votre plate-forme et selon que vous utilisez le script install_asm ou la commande istioctl install.

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 options de ligne de commande du guide d'installation que vous suivez.

Utiliser le script install_asm

Le script install_asm 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, install_asm extrait automatiquement le fichier du dépôt GitHub. Vous devez donc disposer d'une connexion Internet.

    ./install_asm \
      OTHER_FLAGS \
      --option OPTION_NAME
    

    Remplacez OPTION_NAME par l'option que vous souhaitez activer. Pour obtenir la liste des options, consultez le package anthos-service-mesh.

  • Utilisez --custom_overlay lorsque vous devez personnaliser le fichier de superposition.

    ./install_asm \
      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.

Avec la commande istioctl install

Utilisez la commande istioctl install pour les installations multiprojets sur GKE et pour les plates-formes qui ne sont pas sur Google Cloud, telles que GKE sur VMware.

  • Utilisez -f pour inclure le fichier de superposition. Il peut s'agir d'un fichier de superposition du package anthos-service-mesh sans personnalisation ou d'un fichier de superposition personnalisé.

    istioctl install  \
     OTHER_FLAGS \
     -f 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

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    accessLogFile: "/dev/stdout"

Pour en savoir plus, consultez la page Activer la journalisation des accès Envoy.

Cloud Trace

Pour les installations sur GKE, vous pouvez activer Cloud Trace. Pour en savoir plus sur la tarification, consultez la page des tarifs de Cloud Trace.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  meshConfig:
    enableTracing: true
  values:
    global:
      proxy:
        tracer: stackdriver

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 suivants de la requête entrante vers les requêtes sortantes :

  • x-request-id
  • x-b3-traceid
  • x-b3-spanid
  • x-b3-parentspanid
  • x-b3-sampled
  • x-b3-flags
  • x-ot-span-context
  • x-cloud-trace-context
  • traceparent
  • grpc-trace-bin

Pour obtenir des 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

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    egressGateways:
      - name: istio-egressgateway
        enabled: true

Pour plus d'informations, consultez la section Passerelles de sortie.

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é.

  1. Activer une règle de réseau

  2. Choisissez le fichier de superposition qui correspond à votre plate-forme.

Activer CNI sur GKE

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /home/kubernetes/bin
      excludeNamespaces:
        - istio-system
        - kube-system

Activer CNI sur site

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    cni:
      enabled: true
      namespace: kube-system
  values:
    cni:
      cniBinDir: /opt/cni/bin
      excludeNamespaces:
        - istio-system
        - kube-system
        - gke-system

Activer un équilibreur de charge interne

Pour les installations sur GKE, vous pouvez activer un équilibreur de charge interne pour la passerelle d'entrée Istio.

---
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
  components:
    ingressGateways:
      - name: istio-ingressgateway
        enabled: true
        k8s:
          serviceAnnotations:
            cloud.google.com/load-balancer-type: "internal"
          service:
            ports:
              - name: status-port
                port: 15020
              - name: http2
                port: 80
                targetPort: 8080
              - name: https
                port: 443
                targetPort: 8443

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.