Ce guide explique comment effectuer une installation correcte d'Anthos Service Mesh version 1.6.14-asm.2 sur les clusters associés à GKE Enterprise. Utilisez ce guide pour installer Anthos Service Mesh dans les environnements suivants :
- Amazon Elastic Kubernetes Service (Amazon EKS) sur la version Kubernetes 1.16
- Microsoft Azure Kubernetes Service (Microsoft AKS) sur la version Kubernetes 1.16
L'installation active les fonctionnalités compatibles sur votre cluster pour le profil de configuration asm-multicloud
.
Avant de commencer
Consultez la page Configurer des clusters GKE Enterprise associés pour créer votre projet Google Cloud et enregistrer le cluster dans le parc du projet.
Lisez les informations importantes suivantes.
Conditions requises
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 instances dupliquées.
Anthos Service Mesh ou Istio Open Source n'est pas installé sur le cluster.
Pour être inclus dans le maillage de services, les ports de service doivent être nommés et le nom de protocole du port doit respecter 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.
Restrictions
Un projet Google Cloud ne peut être associé qu'à un seul réseau maillé.
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
Installez la version requise de
kpt
:curl -L https://github.com/GoogleContainerTools/kpt/releases/download/v0.39.2/kpt_linux_amd64 > kpt_0_39_2 chmod +x kpt_0_39_2 alias kpt="$(readlink -f kpt_0_39_2)"
Basculez le contexte vers votre cluster d'utilisateur :
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
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.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.6.14-asm.2-linux-amd64.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-linux-amd64.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, 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
manifests/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.6.14-asm.2-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.6.14-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.6.14-asm.2-osx.tar.gz.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-osx.tar.gz
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, 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
manifests/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.6.14-asm.2-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.6.14-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.6.14-asm.2-win.zip.1.sig istio-1.6.14-asm.2-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.6.14-asm.2-win.zip
La commande crée un répertoire d'installation dans votre répertoire de travail actuel, nommé
istio-1.6.14-asm.2
, 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
manifests/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.6.14-asm.2
-
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-1614-2
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-1614-2
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-1614-2
L'argument
--set revision
ajoute un libellé de révision au formatistio.io/rev=asm-1614-2
à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-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
Si le résultat de la commande indique qu'un ou plusieurs composants ne sont pas à l'état Running
, consultez la section Dépannage de GKE Enterprise sur des clusters associés pour obtenir un script que vous pouvez exécuter pour obtenir des informations sur les composants.
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.
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 devez injecter ou mettre à jour le proxy side-car pour 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.
Pour activer l'injection automatique side-car, attribuez à vos espaces de noms le même libellé de révision que celle définie sur istiod
. Exécutez la commande suivante pour afficher les libellés sur istiod
:
kubectl -n istio-system get pods -l app=istiod --show-labels
Vérifiez que le libellé de révision, istio.io/rev=asm-1614-2
, apparaît dans le résultat. Il s'agit du libellé que vous utilisez pour activer l'injection automatique. Vous pouvez activer l'injection automatique avec une seule commande, par exemple :
kubectl label namespace NAMESPACE istio-injection-istio.io/rev=asm-1614-2 --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.
Déployer un exemple d'application
Anthos Service Mesh fournit une passerelle d'entrée préconfigurée (istio-ingressgateway
) qui vous permet de gérer le trafic entrant vers les applications exécutées sur votre maillage de services. Pour rendre des applications accessibles depuis l'extérieur de votre cluster (par exemple, à partir d'un navigateur) :
Vous devez obtenir l'adresse IP externe de
istio-ingressgateway
.Votre application doit définir une passerelle et une ressource VirtualService, semblable à la méthode
frontend-gateway.yaml
de l'exemple d'application Boutique en ligne.
Pour déployer et exécuter l'exemple d'application
Téléchargez l'exemple :
kpt pkg get \ https://github.com/GoogleCloudPlatform/microservices-demo.git/release \ microservices-demo
Activez l'injection side-car automatique :
kubectl label namespace default istio-injection=enabled
Déployez l'exemple sur le cluster :
kubectl apply -f microservices-demo
Pour obtenir l'adresse IP externe de istio-ingressgateway
, procédez comme suit :
Créez la variable d'environnement de la clé hôte :
Microsoft AKS
export HOST_KEY="ip"
Amazon EKS
export HOST_KEY="hostname"
Créez la variable d'environnement
INGRESS_HOST
:export INGRESS_HOST=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.status.loadBalancer.ingress[0].'"$HOST_KEY"'}')
Créez la variable d'environnement
INGRESS_PORT
:export INGRESS_PORT=$(kubectl -n istio-system get service istio-ingressgateway -o jsonpath='{.spec.ports[?(@.name=="http2")].port}')
Accédez à l'application dans votre navigateur. Dans l'URL suivante, remplacez
EXTERNAL_IP
par$INGRESS_HOST:$INGRESS_PORT
:http://EXTERNAL_IP/
Lorsque vous avez terminé l'exploration, supprimez l'exemple :
kubectl delete -f microservices-demo