Ce guide explique comment effectuer une installation correcte d'Anthos Service Mesh 1.7.8-asm.10 sur un cluster GKE sur VMware existant. 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 compatibles sur votre cluster pour le profil de configuration asm-multicloud
.
À 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 suivantes avant de commencer la configuration.
Conditions requises
Vous devez disposer d'un abonnement Anthos. Une option de facturation à l'usage est également disponible pour GKE Enterprise sur Google Cloud uniquement. Pour en savoir plus, consultez le guide des tarifs de GKE Enterprise.
Vérifiez que le cluster d'utilisateur sur lequel vous installez Anthos Service Mesh dispose d'au moins quatre processeurs virtuels, 15 Go de mémoire et quatre nœuds.
Vous devez nommer vos ports de service à l'aide de la syntaxe suivante :
name: protocol[-suffix]
où les crochets indiquent un suffixe facultatif qui doit commencer par un tiret. Pour plus d'informations, consultez la section Nommer les ports de service.Vérifiez que la version de votre cluster est répertoriée dans la section Environnements compatibles. Pour vérifier la version de votre cluster, vous pouvez utiliser l'outil de ligne de commande
gkectl
. Si vous n'avez pas installégkectl
, consultez la page Téléchargements de GKE On-Prem.gkectl version
Configurer votre environnement
Vous devez disposer des outils suivants sur la machine à partir de laquelle 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.
- Outil de ligne de commande
curl
- Google Cloud CLI.
Après avoir installé Google Cloud CLI :
Authentifiez-vous avec Google Cloud CLI :
gcloud auth login
Mettez à jour les composants :
gcloud components update
Installez
kubectl
:gcloud components install kubectl
Si vous souhaitez déployer et tester votre installation avec l'exemple d'application Boutique en ligne, installez
kpt
:gcloud components install kpt
Basculez le contexte vers votre cluster d'utilisateur (si nécessaire) :
kubectl config use-context CLUSTER_NAME
Accordez des autorisations d'administrateur de cluster à votre compte utilisateur (votre adresse e-mail de connexion Google Cloud). 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=USER_ACCOUNT
Télécharger le fichier d'installation
-
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.7.8-asm.10-linux-amd64.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.7.8-asm.10-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.7.8-asm.10-linux-amd64.tar.gz.1.sig istio-1.7.8-asm.10-linux-amd64.tar.gz <<'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.7.8-asm.10-linux-amd64.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.7.8-asm.10
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
install/kubernetes/operator/profiles
- Des exemples d'applications dans le répertoire
-
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.7.8-asm.10-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.7.8-asm.10-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.7.8-asm.10-osx.tar.gz.1.sig istio-1.7.8-asm.10-osx.tar.gz <<'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.7.8-asm.10-osx.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.7.8-asm.10
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
install/kubernetes/operator/profiles
- Des exemples d'applications dans le répertoire
-
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.7.8-asm.10-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.7.8-asm.10-win.zip.1.sig openssl dgst -verify - -signature istio-1.7.8-asm.10-win.zip.1.sig istio-1.7.8-asm.10-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.7.8-asm.10-win.zip
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.7.8-asm.10
, et 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 se trouve dans le répertoirebin
. - Les profils de configuration d'Anthos Service Mesh qui se trouvent dans le répertoire
install/kubernetes/operator/profiles
- Des exemples d'applications dans le répertoire
-
Assurez-vous d'être dans le répertoire racine de l'installation Anthos Service Mesh.
cd istio-1.7.8-asm.10
-
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
Configurer le webhook de validation
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.
Enregistrez le fichier YAML suivant dans un fichier appelé istiod-service.yaml
:
apiVersion: v1
kind: Service
metadata:
name: istiod
namespace: istio-system
labels:
istio.io/rev: asm-178-10
app: istiod
istio: pilot
release: istio
spec:
ports:
- port: 15010
name: grpc-xds # plaintext
protocol: TCP
- port: 15012
name: https-dns # mTLS with k8s-signed cert
protocol: TCP
- port: 443
name: https-webhook # validation and injection
targetPort: 15017
protocol: TCP
- port: 15014
name: http-monitoring # prometheus stats
protocol: TCP
selector:
app: istiod
istio.io/rev: asm-178-10
Installer Anthos Service Mesh
Exécutez la commande suivante pour installer Anthos Service Mesh à l'aide du profil
asm-multicloud
. 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.istioctl install \ --set profile=asm-multicloud \ --set revision=asm-178-10
L'argument
--set revision
ajoute un libellé de révision au formatistio.io/rev=asm-178-10
à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évisionistiod
particulière. Pour activer l'injection automatique side-car pour un espace de noms, vous devez lui attribuer un libellé de révision correspondant au libellé deistiod
.Configurez le webhook de sorte qu'il puisse localiser le service
istiod
avec le libellé de révision :kubectl apply -f 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.
L'authentification TLS mutuelle (auto mTLS) est activée par défaut. L'authentification mutuelle mTLS permet à un proxy side-car client de détecter automatiquement si le serveur possède un side-car. Le side-car client envoie l'authentification mTLS aux charges de travail avec des side-cars, et envoie du trafic en texte brut aux charges de travail sans side-car.
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-74cc894bfd-786rg 1/1 Running 0 7m19s istiod-78cdbbbdb-d7tps 1/1 Running 0 7m36s promsd-576b8db4d6-lqf64 2/2 Running 1 7m19s
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. Pour injecter vos pods avec le proxy side-car, configurez l'injection automatique du proxy side-car (injection automatique) en étiquetant 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.
Vous devez activer l'injection automatique sur tous les espaces de noms avec des charges de travail qui étaient exécutées sur votre cluster avant l'installation d'Anthos Service Mesh.
Avant de déployer des charges de travail, assurez-vous de 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 :
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-178-10-5788d57586-bljj4 1/1 Running 0 23h app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586 istiod-asm-178-10-5788d57586-vsklm 1/1 Running 1 23h app=istiod,istio.io/rev=asm-178-10,istio=istiod,pod-template-hash=5788d57586
Dans le résultat, sous la colonne
LABELS
, notez la valeur du libellé de révisionistiod
, qui suit le préfixeistio.io/rev=
. Dans cet exemple, la valeur estasm-178-10
.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, etREVISION
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 leistio-injection
et le libellé de révision, toutes les commandeskubectl label
de la documentation Anthos Service Mesh incluent la suppression du libelléistio-injection
.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
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
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 :
Configurer le 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.
Configurer le 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.