Installer Anthos Service Mesh

Cette page fait partie d'un guide de plusieurs pages qui explique comment installer la version 1.9.8 d'Anthos Service Mesh sur un cluster GKE pour un maillage contenant plusieurs clusters qui se trouvent dans des projets Google Cloud différents.

Avant de commencer

Avant d'installer Anthos Service Mesh, assurez-vous de disposer des éléments suivants :

Définir des identifiants et des autorisations

  1. Initialisez votre projet afin de le préparer pour l'installation. Cette commande crée, entre autres, un compte de service pour permettre aux composants du plan de contrôle, tels que le proxy side-car, d'accéder en toute sécurité aux données et aux ressources du projet :

    curl --request POST \
      --header "Authorization: Bearer $(gcloud auth print-access-token)" \
      --data '' \
      "https://meshconfig.googleapis.com/v1alpha1/projects/${PROJECT_ID}:initialize"

    La commande renvoie des accolades vides : {}.

  2. Obtenez des identifiants d'authentification pour interagir avec le cluster : Cette commande définit également le contexte actuel de kubectl sur le cluster.

    gcloud container clusters get-credentials ${CLUSTER_NAME} \
        --project=${PROJECT_ID}
    
  3. Accordez des autorisations d'administrateur de cluster à l'utilisateur actuel. Vous avez besoin de ces autorisations pour créer les règles de contrôle d'accès basé sur les rôles (RBAC) nécessaires pour Anthos Service Mesh :

    kubectl create clusterrolebinding cluster-admin-binding \
      --clusterrole=cluster-admin \
      --user="$(gcloud config get-value core/account)"

Si l'erreur "cluster-admin-binding" already exists s'affiche, vous pouvez l'ignorer en toute sécurité et poursuivre avec le cluster-admin-binding existant.

Télécharger le fichier d'installation

Linux

  1. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz
  2. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig
    openssl dgst -verify /dev/stdin -signature istio-1.9.8-asm.6-linux-amd64.tar.gz.1.sig istio-1.9.8-asm.6-linux-amd64.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Le résultat attendu est Verified OK.

  3. Extrayez le contenu du fichier vers n'importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :

     tar xzf istio-1.9.8-asm.6-linux-amd64.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.9.8-asm.6, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  4. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.

    cd istio-1.9.8-asm.6

macOS

  1. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz
  2. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.9.8-asm.6-osx.tar.gz.1.sig istio-1.9.8-asm.6-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Le résultat attendu est Verified OK.

  3. Extrayez le contenu du fichier vers n'importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :

    tar xzf istio-1.9.8-asm.6-osx.tar.gz

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.9.8-asm.6, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  4. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.

    cd istio-1.9.8-asm.6

Windows

  1. Téléchargez le fichier d'installation d'Anthos Service Mesh dans votre répertoire de travail actuel :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip
  2. Téléchargez le fichier de signature et utilisez openssl pour valider la signature :

    curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.9.8-asm.6-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.9.8-asm.6-win.zip.1.sig istio-1.9.8-asm.6-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    Le résultat attendu est Verified OK.

  3. Extrayez le contenu du fichier vers n'importe quel emplacement de votre système de fichiers. Par exemple, pour extraire le contenu vers le répertoire de travail actuel :

    tar xzf istio-1.9.8-asm.6-win.zip

    Cette commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé istio-1.9.8-asm.6, qui contient les éléments suivants :

    • Des exemples d'applications dans le répertoire samples
    • L'outil de ligne de commande istioctl que vous utilisez pour installer Anthos Service Mesh et qui se trouve dans le répertoire bin
    • Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire manifests/profiles
  4. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.

    cd istio-1.9.8-asm.6

Préparer les fichiers de configuration des ressources

Lorsque vous exécutez la commande istioctl install, vous spécifiez -f istio-operator.yaml sur la ligne de commande. Ce fichier contient des informations sur le projet et le cluster requis par Anthos Service Mesh. Vous devez télécharger un package contenant istio-operator.yaml et d'autres fichiers de configuration des ressources afin de pouvoir définir les informations sur le projet et le cluster.

Pour préparer les fichiers de configuration des ressources, procédez comme suit :

Mesh CA

  1. Créez un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh. Nous vous recommandons d'utiliser le nom du cluster comme nom de répertoire.

  2. Accédez au répertoire dans lequel vous souhaitez télécharger le package Anthos Service Mesh.

  3. Vérifiez la version de "kpt". Assurez-vous d'exécuter une version antérieure à 1.x de kpt:

    kpt version
    

    La sortie devrait ressembler à ce qui suit :

    0.39.2

    Si vous disposez de la version 1.x ou d'une version ultérieure de kpt, consultez la page Configurer votre environnement pour télécharger la version requise pour votre système d'exploitation.

  4. Téléchargez le package :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    
  5. Définissez l'ID du projet dans lequel le cluster a été créé :

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Définissez le numéro de projet du projet hôte du parc :

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Définissez le nom du cluster :

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Définissez la zone ou la région par défaut :

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Définissez le tag sur la version d'Anthos Service Mesh que vous installez :

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Définissez le webhook de validation pour utiliser un libellé de révision :

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.

  11. Comme les clusters de votre configuration multicluster se trouvent dans différents projets, vous devez configurer les alias de domaine de confiance pour les autres projets qui forment les maillages de services multi-clusters/multiprojets.

    1. Obtenez l'ID de projet de tous les clusters qui se trouveront dans le maillage multicluster/multiprojet.

    2. Pour l'ID de projet de chaque cluster, définissez les alias de domaine de confiance. Par exemple, si vous avez des clusters dans trois projets, exécutez la commande suivante en remplaçant PROJECT_ID_1, PROJECT_ID_2 et PROJECT_ID_3 par l'ID de projet de chaque cluster.

      kpt cfg set asm anthos.servicemesh.trustDomainAliases PROJECT_ID_1.svc.id.goog PROJECT_ID_2.svc.id.goog PROJECT_ID_3.svc.id.goog

      Lorsque vous configurez les clusters dans les autres projets, vous pouvez exécuter la même commande.

      Les alias de domaine de confiance permettent à Mesh CA d'authentifier les charges de travail sur les clusters d'autres projets. En plus de définir les alias de domaine de confiance, vous devez activer l'équilibrage de charge interclusters après avoir installé Anthos Service Mesh.

  12. Affichez les valeurs des setters kpt :

    kpt cfg list-setters asm
    

    Dans le résultat de la commande, vérifiez que les valeurs des setters suivantes sont correctes :

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • anthos.servicemesh.trustDomainAliases
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Vous pouvez ignorer les valeurs des autres setters.

Istio CA

  1. Créez un répertoire pour les fichiers de configuration des ressources du package Anthos Service Mesh. Nous vous recommandons d'utiliser le nom du cluster comme nom de répertoire.

  2. Accédez au répertoire dans lequel vous souhaitez télécharger le package Anthos Service Mesh.

  3. Vérifiez la version de "kpt". Assurez-vous d'exécuter une version antérieure à 1.x de kpt:

    kpt version
    

    La sortie devrait ressembler à ce qui suit :

    0.39.2

    Si vous disposez de la version 1.x ou d'une version ultérieure de kpt, consultez la page Configurer votre environnement pour télécharger la version requise pour votre système d'exploitation.

  4. Téléchargez le package :

    kpt pkg get \
    https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.9-asm asm
    
  5. Définissez l'ID du projet dans lequel le cluster a été créé :

    kpt cfg set asm gcloud.core.project ${PROJECT_ID}
    
  6. Définissez le numéro de projet du projet hôte du parc :

    kpt cfg set asm gcloud.project.environProjectNumber ${FLEET_PROJECT_NUMBER}
    
  7. Définissez le nom du cluster :

    kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
    
  8. Définissez la zone ou la région par défaut :

    kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
    
  9. Définissez le tag sur la version d'Anthos Service Mesh que vous installez :

    kpt cfg set asm anthos.servicemesh.tag 1.9.8-asm.6
    
  10. Définissez le webhook de validation pour utiliser un libellé de révision :

    kpt cfg set asm anthos.servicemesh.rev asm-198-6
    

    Lorsque vous installez Anthos Service Mesh, vous définissez un libellé de révision sur istiod. Vous devez définir la même révision sur le webhook de validation.

  11. Affichez les valeurs des setters kpt :

    kpt cfg list-setters asm
    

    Dans le résultat de la commande, vérifiez que les valeurs des setters suivantes sont correctes :

    • anthos.servicemesh.rev
    • anthos.servicemesh.tag
    • gcloud.compute.location
    • gcloud.container.cluster
    • gcloud.core.project
    • gcloud.project.environProjectNumber

    Vous pouvez ignorer les valeurs des autres setters.

Installer Anthos Service Mesh

Mesh CA

  1. Vérifiez que le contexte kubeconfig actuel pointe vers le cluster sur lequel vous souhaitez installer Anthos Service Mesh :

    kubectl config current-context
    

    Le résultat est au format suivant :

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Le contexte kubeconfig et les valeurs des Setters kpt doivent correspondre. Si nécessaire, exécutez la commande gcloud container clusters get-credentials pour définir le contexte kubeconfig actuel.

  2. Si nécessaire, basculez vers le répertoire istio-1.9.8-asm.6. Le client istioctl dépend de la version. Veillez à utiliser la version dans le répertoire istio-1.9.8-asm.6/bin.

  3. Exécutez la commande suivante pour installer Anthos Service Mesh. Si vous souhaitez activer une fonctionnalité facultative compatible, incluez -f et le nom de fichier YAML dans la ligne de commande suivante. Pour en savoir plus, consultez la page Activer les fonctionnalités facultatives.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    L'argument --revision ajoute un libellé de révision au format istio.io/rev=asm-198-6 à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision istiod particulière. Pour activer l'injection side-car automatique sur un espace de noms, vous devez lui attribuer un libellé associé à une révision correspondant à un déploiement istiod.

    Les fichiers suivants remplacent les paramètres du fichier istio-operator.yaml :

    • Le fichier multiproject.yaml définit le profil asm-gcp-multiproject.

    • Le fichier multicluster.yaml configure les paramètres dont Anthos Service Mesh a besoin pour une configuration multicluster.

  4. Configurez le webhook de validation pour localiser istiod avec le libellé de révision :

    kubectl apply -f asm/istio/istiod-service.yaml

    Cette commande crée une entrée de service qui permet au webhook de validation de vérifier automatiquement les configurations avant leur application.

  5. Déployez le contrôleur de service canonique sur votre cluster :

    kubectl apply -f asm/canonical-service/controller.yaml

    Le contrôleur de service canonique regroupe les charges de travail appartenant au même service logique. Pour en savoir plus sur les services canoniques, consultez la présentation du Service canonique.

Istio CA

  1. Vérifiez que le contexte kubeconfig actuel pointe vers le cluster sur lequel vous souhaitez installer Anthos Service Mesh :

    kubectl config current-context
    

    Le résultat est au format suivant :

    gke_PROJECT_ID_CLUSTER_LOCATION_CLUSTER_NAME

    Le contexte kubeconfig et les valeurs des Setters kpt doivent correspondre. Si nécessaire, exécutez la commande gcloud container clusters get-credentials pour définir le contexte kubeconfig actuel.

  2. Créez l'espace de noms istio-system :

    kubectl create namespace istio-system
    
  3. Créer un secret cacerts :

    kubectl create secret generic cacerts  \
      -n istio-system \
      --from-file=ca-cert.pem \
      --from-file=ca-key.pem \
      --from-file=root-cert.pem \
      --from-file=cert-chain.pem
    

    Pour en savoir plus, consultez la page Connecter des certificats CA existants.

  4. Si nécessaire, basculez vers le répertoire istio-1.9.8-asm.6. Le client istioctl dépend de la version. Veillez à utiliser la version dans le répertoire istio-1.9.8-asm.6/bin.

  5. Exécutez la commande suivante pour installer Anthos Service Mesh. Si vous souhaitez activer une fonctionnalité facultative compatible, incluez -f et le nom de fichier YAML dans la ligne de commande suivante. Pour en savoir plus, consultez la page Activer les fonctionnalités facultatives.

    bin/istioctl install \
      -f asm/istio/istio-operator.yaml \
      -f asm/istio/options/citadel-ca.yaml \
      -f asm/istio/options/multiproject.yaml \
      -f asm/istio/options/multicluster.yaml \
      --revision=asm-198-6
    

    L'argument --revision ajoute un libellé de révision au format istio.io/rev=asm-198-6 à istiod. Le libellé de révision est utilisé par le webhook d'injecteur side-car automatique pour associer les side-cars injectés à une révision istiod particulière. Pour activer l'injection side-car automatique sur un espace de noms, vous devez lui attribuer un libellé associé à une révision correspondant à un déploiement istiod.

    Les fichiers suivants remplacent les paramètres du fichier istio-operator.yaml :

    • Le fichier citadel-ca.yaml configure Istio CA en tant qu'autorité de certification.

    • Le fichier multiproject.yaml définit le profil asm-gcp-multiproject.

    • Le fichier multicluster.yaml configure les paramètres dont Anthos Service Mesh a besoin pour une configuration multicluster.

  6. Configurez le webhook de validation pour localiser istiod avec le libellé de révision :

    kubectl apply -f asm/istio/istiod-service.yaml

    Cette commande crée une entrée de service qui permet au webhook de validation de vérifier automatiquement les configurations avant leur application.

  7. Déployez le contrôleur de service canonique sur votre cluster :

    kubectl apply -f asm/canonical-service/controller.yaml

    Le contrôleur de service canonique regroupe les charges de travail appartenant au même service logique. Pour en savoir plus sur les services canoniques, consultez la présentation du Service canonique.

Vérifier les composants du plan de contrôle

Vérifiez que les pods du plan de contrôle dans istio-system sont opérationnels :

kubectl get pod -n istio-system

Le résultat attendu ressemble à ce qui suit :

NAME                                   READY   STATUS      RESTARTS   AGE
istio-ingressgateway-cff9f5c7d-qg4ls   1/1     Running   0          7m5s
istio-ingressgateway-cff9f5c7d-vlkzb   1/1     Running   0          7m20s
istiod-66b587859c-886gx                1/1     Running   0          7m33s
istiod-66b587859c-dfs2j                1/1     Running   0          7m33s

Injecter des proxys side-car

Anthos Service Mesh utilise des proxys side-car pour améliorer la sécurité, la fiabilité et l'observabilité du réseau. Avec Anthos Service Mesh, ces fonctions sont extraites du conteneur principal de l'application et mises en œuvre dans un proxy commun hors processus fourni par un conteneur séparé dans le même pod.

L'installation n'est terminée qu'une fois que vous avez activé l'injection automatique du proxy side-car (injection automatique) et que vous avez redémarré les pods de toutes les charges de travail exécutées sur votre cluster avant d'avoir installé Anthos Service Mesh.

Pour activer l'injection automatique, vous devez étiqueter vos espaces de noms avec le même libellé de révision que vous avez défini sur istiod lors de l'installation d'Anthos Service Mesh. Le libellé de révision est utilisé par le webhook d'injecteur side-car pour associer les side-cars injectés à une révision istiod particulière. Après avoir ajouté le libellé, tous les pods existants dans l'espace de noms doivent être redémarrés pour que les side-cars soient injectés.

Avant de déployer de nouvelles charges de travail dans un espace de noms que vous venez de créer, veillez à configurer l'injection automatique afin qu'Anthos Service Mesh puisse surveiller et sécuriser le trafic.

Pour activer l'injection automatique, procédez comme suit :

  1. Exécutez la commande suivante pour localiser le libellé de révision sur istiod :

    kubectl -n istio-system get pods -l app=istiod --show-labels
    

    La sortie ressemble à ceci :

    NAME                                READY   STATUS    RESTARTS   AGE   LABELS
    istiod-asm-198-6-5788d57586-bljj4   1/1     Running   0          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586
    istiod-asm-198-6-5788d57586-vsklm   1/1     Running   1          23h   app=istiod,istio.io/rev=asm-198-6,istio=istiod,pod-template-hash=5788d57586

    Dans le résultat, sous la colonne LABELS, notez la valeur du libellé de révision istiod, qui suit le préfixe istio.io/rev=. Dans cet exemple, la valeur est asm-198-6.

  2. Appliquez le libellé de révision et supprimez le libellé istio-injection s'il existe. Dans la commande suivante, NAMESPACE est le nom de l'espace de noms dans lequel vous souhaitez activer l'injection automatique, et REVISION est le libellé de révision noté à l'étape précédente.

    kubectl label namespace NAMESPACE istio-injection- istio.io/rev=REVISION --overwrite
    

    Vous pouvez ignorer le message "istio-injection not found" dans le résultat. Cela signifie que l'espace de noms ne portait pas précédemment le libellé istio-injection, auquel on s'attend dans de nouvelles installations d'Anthos Service Mesh ou de nouveaux déploiements. Étant donné que l'injection automatique échoue si un espace de noms possède à la fois le istio-injection et le libellé de révision, toutes les commandes kubectl label de la documentation Anthos Service Mesh incluent la suppression du libellé istio-injection.

  3. Si les charges de travail étaient en cours d'exécution sur votre cluster avant d'installer Anthos Service Mesh, redémarrez les pods pour déclencher une réinjection.

    La méthode de redémarrage des pods dépend de votre application et de l'environnement dans lequel se trouve le cluster. Par exemple, dans votre environnement de préproduction, vous pouvez simplement supprimer tous les pods, ce qui entraîne leur redémarrage. Toutefois, dans votre environnement de production, vous pouvez peut-être mettre en œuvre un déploiement bleu-vert afin de pouvoir redémarrer des pods en toute sécurité pour éviter l'interruption du trafic.

    Vous pouvez exécuter kubectl pour effectuer un redémarrage progressif :

    kubectl rollout restart deployment -n NAMESPACE
    
  4. Vérifiez que vos pods sont configurés pour pointer vers la nouvelle version de istiod.

    kubectl get pods -n NAMESPACE -l istio.io/rev=REVISION
    

Étapes suivantes