Configura una malla de varios clústeres fuera de Google Cloud

En esta guía, se explica cómo configurar una malla de varios clústeres para las siguientes plataformas:

  • GKE en VMware
  • Google Distributed Cloud Virtual para Bare Metal
  • GKE en AWS
  • Amazon EKS

En esta guía, se muestra cómo configurar dos clústeres, pero puedes ampliar este proceso para incorporar cualquier cantidad de clústeres a tu malla.

Antes de comenzar

En esta guía, se supone que instalaste Anthos Service Mesh mediante asmcli install. Necesitas asmcli y el paquete de configuración que asmcli descarga en el directorio que especificaste en --output_dir cuando ejecutaste asmcli install. Si necesitas realizar la configuración, sigue los pasos para comenzar a fin de realizar las siguientes acciones:

Necesitas acceso a los archivos kubeconfig para todos los clústeres que configuras en la malla.

Configura variables de entorno y marcadores de posición

Necesitas las siguientes variables de entorno para instalar la puerta de enlace este-oeste.

  1. Crea una variable de entorno para el número de proyecto. En el comando siguiente, reemplaza FLEET_PROJECT_ID por el ID del proyecto host de la flota.

    export PROJECT_NUMBER=$(gcloud projects describe FLEET_PROJECT_ID --format="value(projectNumber)")
    
  2. Crea una variable de entorno para el identificador de malla.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Crea variables de entorno para los nombres de los clústeres en el formato que requiere asmcli:

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

Instala la puerta de enlace este-oeste

En los siguientes comandos:

  • Reemplaza CLUSTER_NAME_1 y CLUSTER_NAME_2 por los nombres de tus clústeres.

  • Reemplaza PATH_TO_KUBECONFIG_1 y PATH_TO_KUBECONFIG_2 por los archivos kubeconfig de los clústeres.

CA de Mesh

  1. Instala una puerta de enlace en cluster1 que esté dedicada al tráfico este-oeste.$CLUSTER_2 De forma predeterminada, esta puerta de enlace será pública en Internet. Los sistemas de producción pueden requerir restricciones de acceso adicionales, por ejemplo, reglas de firewall, para evitar ataques externos.

    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. Instala una puerta de enlace en $CLUSTER_2 que esté dedicada al tráfico de este a oeste para $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 -
    

CA de Istio

  1. Instala una puerta de enlace en cluster1 que esté dedicada al tráfico este-oeste.$CLUSTER_2 De forma predeterminada, esta puerta de enlace será pública en Internet. Los sistemas de producción pueden requerir restricciones de acceso adicionales, por ejemplo, reglas de firewall, para evitar ataques externos.

    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. Instala una puerta de enlace en $CLUSTER_2 que esté dedicada al tráfico de este a oeste para $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 -
    

Servicios expuestos

Como los clústeres se encuentran en redes separadas, deberás exponer todos los servicios (*.local) en la puerta de enlace este-oeste en ambos clústeres. Aunque esta puerta de enlace es pública en Internet, solo los servicios que tengan un certificado mTLS y un ID de carga de trabajo de confianza podrán acceder a los servicios subyacentes, como si estuvieran en la misma red.

  1. Expón servicios a través de la puerta de enlace este-oeste para CLUSTER_NAME_1.

    kubectl --kubeconfig=PATH_TO_KUBECONFIG_1 apply -n istio-system -f \
        asm/istio/expansion/expose-services.yaml
    
  2. Expón servicios a través de la puerta de enlace este-oeste para el CLUSTER_NAME_2.

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

Habilita la detección de extremos

Ejecuta el comando asmcli create-mesh para habilitar la detección de extremos. En este ejemplo, solo se muestran dos clústeres, pero puedes ejecutar el comando para habilitar el descubrimiento de extremos en clústeres adicionales, sujeto a la cantidad máxima permitida de clústeres que puedes agregar a tu flota.

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