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é :
Authentifiez-vous en utilisant gcloud CLI :
gcloud auth login
Mettez à jour les composants :
gcloud components update
Installez
kubectl
:gcloud components install kubectl
Obtenez l'ID du projet dans lequel le cluster a été créé :
gcloud
gcloud projects list
Console
Dans la console Google Cloud, accédez à la page Tableau de bord :
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.
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.
-
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. -
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
-
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
-
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
. -
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
-
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
. -
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
-
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
. -
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
: utilisezistioctl
pour installer Anthos Service Mesh.asmctl
: utilisezasmctl
pour valider votre configuration de sécurité après avoir installé Anthos Service Mesh. (Actuellement,asmctl
n'est pas compatible avec GKE sur VMware.)
- Des exemples d'application dans
-
Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.
cd istio-1.4.10-asm.18
-
Pour plus de commodité, ajoutez les outils du répertoire
/bin
à votre variable PATH :export PATH=$PWD/bin:$PATH
Linux
macOS
Windows
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
où 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é
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.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
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
:
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 ...
Accordez l'accès à ces ports via votre équilibreur de charge.
Par exemple, le port de service
http2
utilise leport
80 et lenodePort
31380. Supposons que les adresses des nœuds de votre cluster d'utilisateur soient192.168.0.10
,192.168.0.11
et192.168.0.12
, et que l'adresse IP virtuelle de votre équilibreur de charges soit203.0.113.1
.Configurez votre équilibreur de charge de sorte que le trafic dirigé vers
203.0.113.1:80
soit transféré vers192.168.0.10:31380
,192.168.0.11:31380
ou192.168.0.12:31380
. Vous pouvez sélectionner les ports de service auxquels vous souhaitez donner l'accès à cette adresse IP virtuelle.