Configurer un maillage multicluster en dehors de Google Cloud

Ce guide explique comment configurer un maillage multicluster pour les plates-formes suivantes :

  • GKE sur VMware
  • Google Distributed Cloud Virtual pour Bare Metal
  • GKE sur AWS
  • Amazon EKS

Ce guide explique comment configurer deux clusters, mais vous pouvez étendre ce processus pour intégrer à votre maillage autant de clusters que vous le souhaitez.

Avant de commencer

Ce guide suppose que vous avez installé Anthos Service Mesh à l'aide de asmcli install. Vous avez besoin de asmcli et du package de configuration que asmcli télécharge dans le répertoire que vous avez spécifié dans --output_dir lors de l'exécution de asmcli install. Si vous devez effectuer la configuration, suivez les étapes décrites dans la section Premiers pas pour effectuer les tâches suivantes :

Vous devez accéder aux fichiers kubeconfig de tous les clusters que vous configurez dans le maillage.

Configurer des variables d'environnement et des espaces réservés

Vous avez besoin des variables d'environnement suivantes lorsque vous installez la passerelle est-ouest.

  1. Créez une variable d'environnement pour le numéro de projet. Dans la commande suivante, remplacez FLEET_PROJECT_ID par l'ID du projet hôte du parc.

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. Créez une variable d'environnement pour l'identifiant de maillage :

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Créez des variables d'environnement pour les noms de cluster au format requis par asmcli :

    export CLUSTER_1="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_1"
    export CLUSTER_2="cn-FLEET_PROJECT_ID-global-CLUSTER_NAME_2"
    

Installer la passerelle est-ouest

Dans les commandes suivantes :

  • Remplacez CLUSTER_NAME_1 et CLUSTER_NAME_2 par les noms de vos clusters.

  • Remplacez PATH_TO_KUBECONFIG_1 et PATH_TO_KUBECONFIG_2 par les fichiers kubeconfig de vos clusters.

Mesh CA

  1. Installez dans le cluster1 une passerelle dédiée au trafic est-ouest vers $CLUSTER_2. Par défaut, cette passerelle est publique sur Internet. Les systèmes de production peuvent imposer des restrictions d'accès supplémentaires, telles que des règles de pare-feu, pour empêcher les attaques externes.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    
  2. Installez dans $CLUSTER_2 une passerelle dédiée au trafic est-ouest du $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl install --kubeconfig=PATH_TO_KUBECONFIG_2 -y --set spec.values.global.pilotCertProvider=kubernetes -f -
    

Istio CA

  1. Installez dans le cluster1 une passerelle dédiée au trafic est-ouest vers $CLUSTER_2. Par défaut, cette passerelle est publique sur Internet. Les systèmes de production peuvent imposer des restrictions d'accès supplémentaires, telles que des règles de pare-feu, pour empêcher les attaques externes.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_1} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    
  2. Installez dans $CLUSTER_2 une passerelle dédiée au trafic est-ouest du $CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --cluster ${CLUSTER_2} \
        --network default \
        --revision asm-1118-4 | \
        istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

Services associés

Étant donné que les clusters se trouvent sur des réseaux distincts, vous devez afficher l'ensemble des services (*.local) sur la passerelle est-ouest des deux clusters. Bien que cette passerelle soit publique sur Internet, les services qui en dépendent ne sont accessibles que par les services disposant d'un certificat mTLS et d'un ID de charge de travail approuvés, comme s'ils se trouvaient sur le même réseau.

  1. Affichez les services via la passerelle est-ouest du CLUSTER_NAME_1.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    
  2. Affichez les services via la passerelle est-ouest du CLUSTER_NAME_2.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_2 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    

Activer la détection des points de terminaison

Exécutez la commande asmcli create-mesh pour activer la détection des points de terminaison. Cet exemple n'affiche que deux clusters, mais vous pouvez exécuter la commande pour activer la découverte de points de terminaison sur des clusters supplémentaires, sous réserve du nombre maximal autorisé de clusters que vous pouvez ajouter à votre parc.

  ./asmcli create-mesh \
      FLEET_PROJECT_ID \
      PATH_TO_KUBECONFIG_1 \
      PATH_TO_KUBECONFIG_2