Installer Anthos Service Mesh sur site

Anthos Service Mesh est un framework compatible avec Istio pour connecter, surveiller et sécuriser des services exécutés sur Google Kubernetes Engine (GKE) et GKE sur VMware. Grâce à lui, vous pouvez créer un réseau de services déployés avec équilibrage de charge, authentification de service à service, surveillance et bien plus, sans avoir à modifier le code des services. Anthos Service Mesh injecte automatiquement un proxy side-car pour chacun des pods de votre application. Le proxy side-car intercepte tout le trafic réseau en provenance et à destination des pods. Anthos Service Mesh configure une passerelle d'entrée pour gérer le trafic entrant vers le maillage. Vous pouvez utiliser des API Istio Open Source pour configurer des règles appliquées à l'aide de side-cars et de passerelles.

Ce guide explique comment effectuer une installation correcte d'Anthos Service Mesh 1.4.10-asm.18 sur GKE sur VMware. Si une version précédente d'Anthos Service Mesh est installée, consultez la page Mettre à niveau Anthos Service Mesh sur GKE sur VMware.

L'installation active les fonctionnalités principales d'Istio compatibles sur GKE sur VMware. Notez que les composants gérés par Anthos Service Mesh ne sont actuellement pas compatibles avec GKE sur VMware.

À propos des composants du plan de contrôle

GKE sur VMware est fourni avec les composants Istio suivants préinstallés:

  • Citadel est installé dans l'espace de noms kube-system.
  • Les passerelles d'entrée Pilot et Istio sont installées dans l'espace de noms gke-system.

GKE sur VMware utilise ces composants pour permettre l'entrée et pour sécuriser la communication entre les composants contrôlés par Google. Si vous n'avez besoin que de la fonctionnalité d'entrée, il est inutile d'installer le logiciel Open Source Istio ou Anthos Service Mesh. Pour en savoir plus sur la configuration des entrées, consultez la section Activer l'entrée.

Lorsque vous installez Anthos Service Mesh, ses composants sont installés dans l'espace de noms istio-system. Étant donné que les composants Anthos Service Mesh se trouvent dans un espace de noms différent, ils n'entrent pas en conflit avec les composants Istio préinstallés dans GKE sur VMware.

Avant de commencer

Passez en revue les conditions et restrictions suivantes avant de commencer la configuration.

Conditions requises

  • Vous devez disposer d'une licence d'essai ou d'un abonnement GKE Enterprise. Pour en savoir plus, consultez le guide des tarifs de GKE Enterprise.

  • Assurez-vous que le cluster d'utilisateur sur lequel vous installez Anthos Service Mesh dispose d'au moins quatre processeurs virtuels, de 15 Go de mémoire et de quatre instances dupliquées.

  • Consultez la page consacrée aux exigences concernant les pods et les services avant de déployer des charges de travail.

  • Assurez-vous que la version de votre cluster est répertoriée dans la section Environnements compatibles. Pour vérifier la version de votre cluster, procédez comme suit :

    gkectl version
    

    Le résultat est semblable à ce qui suit :

    1.2.0-gke.6 (git-0912663b0)
    

Restrictions

Une seule installation d'Anthos Service Mesh par projet Google Cloud est acceptée. Les déploiements de plusieurs réseaux maillés dans un seul projet ne sont pas acceptés.

Configurer votre environnement

Sur votre ordinateur local, installez et initialisez Google Cloud CLI.

Si gcloud CLI est déjà installé :

  1. Authentifiez-vous en utilisant gcloud CLI :

    gcloud auth login
    
  2. Mettez à jour les composants :

    gcloud components update
    
  3. Installez kubectl :

    gcloud components install kubectl
    
  4. Obtenez l'ID du projet dans lequel le cluster a été créé :

    gcloud

    gcloud projects list

    Console

    1. Dans la console Google Cloud, accédez à la page Tableau de bord :

      Accéder à la page "Tableau de bord"

    2. Cliquez sur la liste déroulante Sélectionner située en haut de la page. Sélectionnez votre projet dans la fenêtre Sélectionner qui vous est présentée. L'ID du projet est affiché sur la fiche Informations sur le projet du tableau de bord du projet.

  5. Définissez l'ID de projet par défaut pour Google Cloud CLI :

    gcloud config set project PROJECT_ID

Définir des identifiants et des autorisations

Avant de continuer, assurez-vous d'avoir activé toutes les API requises. En cas de doute, cela ne pose pas de problème d'exécuter à nouveau la commande gcloud services enable.

  1. Assurez-vous de disposer du rôle kubectl pour le cluster d'utilisateur dans lequel vous souhaitez installer Anthos Service Mesh. Notez que vous ne pouvez installer Anthos Service Mesh que sur un cluster d'utilisateur, et non sur un cluster d'administrateur.
  2. 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 continuer avec le cluster-admin-binding existant.

Préparer l'installation d'Anthos Service Mesh

    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.4.10-asm.18-linux.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.4.10-asm.18-linux.tar.gz.1.sig
    openssl dgst -verify - -signature istio-1.4.10-asm.18-linux.tar.gz.1.sig istio-1.4.10-asm.18-linux.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  3. macOS

  4. 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.4.10-asm.18-osx.tar.gz
  5. 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.4.10-asm.18-osx.tar.gz.1.sig
    openssl dgst -sha256 -verify /dev/stdin -signature istio-1.4.10-asm.18-osx.tar.gz.1.sig istio-1.4.10-asm.18-osx.tar.gz <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  6. Windows

  7. 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.4.10-asm.18-win.zip
  8. 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.4.10-asm.18-win.zip.1.sig
    openssl dgst -verify - -signature istio-1.4.10-asm.18-win.zip.1.sig istio-1.4.10-asm.18-win.zip <<'EOF'
    -----BEGIN PUBLIC KEY-----
    MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ
    wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw==
    -----END PUBLIC KEY-----
    EOF

    La sortie attendue est Verified OK.

  9. 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.4.10-asm.18-linux.tar.gz

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

    • Des exemples d'application dans samples
    • Les outils suivants dans le répertoire bin :
      • istioctl : utilisez istioctl pour installer Anthos Service Mesh.
      • asmctl : utilisez asmctl pour valider votre configuration de sécurité après avoir installé Anthos Service Mesh. (Actuellement, asmctl n'est pas compatible avec GKE sur VMware.)

  10. Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.
    cd istio-1.4.10-asm.18
  11. Pour plus de commodité, ajoutez les outils du répertoire /bin à votre variable PATH :
    export PATH=$PWD/bin:$PATH

Créer l'espace de noms istio-system

Créez un espace de noms appelé istio-system pour les composants du plan de contrôle :

kubectl create namespace istio-system

Installer Anthos Service Mesh

Cette section explique comment installer Anthos Service Mesh et activer les fonctionnalités par défaut compatibles répertoriées sur la page Fonctionnalités compatibles. Pour plus d'informations sur l'activation des fonctionnalités facultatives compatibles, consultez Activer des fonctionnalités facultatives.

Pour installer Anthos Service Mesh, procédez comme suit :

Choisissez l'une des commandes suivantes pour configurer Anthos Service Mesh en mode d'authentification TLS mutuel (mTLS) PERMISSIVE ou en mode mTLS STRICT.

mTLS en mode PERMISSIVE

istioctl manifest apply --set profile=asm-onprem

mTLS en mode STRICT

istioctl manifest apply --set profile=asm-onprem \
  --set values.global.mtls.enabled=true

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

Un résultat semblable aux lignes suivantes doit s'afficher :

NAME                                      READY   STATUS      RESTARTS   AGE
istio-citadel-85f4d775cd-dmpj2            1/1     Running     0          18m
istio-galley-5c65896ff7-m2pls             2/2     Running     0          18m
istio-ingressgateway-587cd459f-q6hqt      2/2     Running     0          18m
istio-pilot-9db77b99f-7wfb6               2/2     Running     0          18m
istio-sidecar-injector-69c4d9f875-dt8rn   1/1     Running     0          18m
promsd-55f464d964-lqs7w                   2/2     Running     0          18m

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.

Vous devez injecter ou mettre à jour le proxy side-car à toutes les charges de travail qui s'exécutaient sur votre cluster avant l'installation d'Anthos Service Mesh afin qu'elles disposent de la version actuelle de cet outil. Avant de déployer des charges de travail, assurez-vous de configurer l'injection du proxy side-car afin qu'Anthos Service Mesh puisse surveiller et sécuriser le trafic.

Vous pouvez activer l'injection side-car automatique avec une seule commande, par exemple :

kubectl label namespace NAMESPACE istio-injection=enabled --overwrite

NAMESPACE est le nom de l'espace de noms pour les services de votre application ou default si vous n'avez pas créé explicitement d'espace de noms.

Pour en savoir plus, consultez la section Injecter des proxys side-car.

Configurer une adresse IP externe

L'installation d'Anthos Service Mesh par défaut suppose qu'une adresse IP externe est automatiquement allouée aux services LoadBalancer. Ce n'est pas le cas dans GKE sur VMware. Par conséquent, vous devez allouer une adresse IP manuellement pour la ressource de passerelle d'entrée d'Anthos Service Mesh.

Pour configurer une adresse IP externe, suivez les instructions de l'une des sections ci-dessous, en fonction du mode d'équilibrage de charge de votre cluster :

Mode d'équilibrage de charge intégré

  1. Ouvrez la configuration du service istio-ingressgateway :

    kubectl edit svc -n istio-system istio-ingressgateway
    

    La configuration du service istio-ingressgateway s'ouvre dans l'éditeur de texte par défaut de votre interface système.

  2. Ajoutez la ligne suivante au fichier sous le bloc de spécification (spec) :

    loadBalancerIP: <your static external IP address>
    

    Exemple :

    spec:
     loadBalancerIP: 203.0.113.1
    
  3. Enregistrez le fichier.

Mode d'équilibrage de charge manuel

Pour exposer un service de type NodePort sur une adresse IP virtuelle de l'équilibreur de charge sélectionné, vous devez d'abord déterminer les valeurs de nodePort :

  1. Affichez la configuration du service istio-ingressgateway dans votre interface système :

    kubectl get svc -n istio-system istio-ingressgateway -o yaml
    

    Chacun des ports des passerelles d'Anthos Service Mesh est affiché. Le résultat ressemble à ce qui suit :

     ...
     ports:
     - name: status-port
       nodePort: 30391
       port: 15020
       protocol: TCP
       targetPort: 15020
     - name: http2
       nodePort: 31380
       port: 80
       protocol: TCP
       targetPort: 80
     - name: https
       nodePort: 31390
       port: 443
       protocol: TCP
       targetPort: 443
     - name: tcp
       nodePort: 31400
       port: 31400
       protocol: TCP
       targetPort: 31400
     - name: https-kiali
       nodePort: 31073
       port: 15029
       protocol: TCP
       targetPort: 15029
     - name: https-prometheus
       nodePort: 30253
       port: 15030
       protocol: TCP
       targetPort: 15030
     - name: https-grafana
       nodePort: 30050
       port: 15031
       protocol: TCP
       targetPort: 15031
     - name: https-tracing
       nodePort: 31204
       port: 15032
       protocol: TCP
       targetPort: 15032
     - name: tls
       nodePort: 30158
       port: 15443
       protocol: TCP
       targetPort: 15443
     ...
    
  2. Accordez l'accès à ces ports via votre équilibreur de charge.

    Par exemple, le port de service http2 utilise le port 80 et le nodePort 31380. Supposons que les adresses des nœuds de votre cluster d'utilisateur soient 192.168.0.10, 192.168.0.11 et 192.168.0.12, et que l'adresse IP virtuelle de votre équilibreur de charges soit 203.0.113.1.

    Configurez votre équilibreur de charge de sorte que le trafic dirigé vers 203.0.113.1:80 soit transféré vers 192.168.0.10:31380, 192.168.0.11:31380 ou 192.168.0.12:31380. Vous pouvez sélectionner les ports de service auxquels vous souhaitez donner l'accès à cette adresse IP virtuelle.

Étape suivante