Configurar una malla híbrida

En esta página se explica cómo configurar una malla híbrida para las siguientes plataformas:

  • Híbrido: GKE en Google Cloud y Google Distributed Cloud (solo software) para VMware
  • Híbrido: GKE en Google Cloud y Google Distributed Cloud (solo software) para Bare Metal

Si sigues estas instrucciones, configurarás dos clústeres, pero puedes ampliar este proceso para incorporar cualquier número de clústeres a tu malla.

Requisitos previos

  • Todos los clústeres deben registrarse en el mismo proyecto de host de flota.
  • Todos los clústeres de GKE deben estar en una configuración de VPC compartida en la misma red.
  • La dirección del plano de control de Kubernetes del clúster y la dirección de la puerta de enlace deben ser accesibles desde todos los clústeres de la malla. El proyecto en el que se encuentran los clústeres de GKE debe tener permiso para crear tipos de balanceo de carga externos. Google Cloud Te recomendamos que uses redes autorizadas y reglas de cortafuegos de VPC para restringir el acceso.
  • No se admiten clústeres privados, incluidos los clústeres privados de GKE. Si usas clústeres On-Premises, incluidos Google Distributed Cloud (solo software) para VMware y Google Distributed Cloud (solo software) para bare metal, la dirección del plano de control de Kubernetes y la dirección de la puerta de enlace deben ser accesibles desde los pods de los clústeres de GKE. Te recomendamos que utilices CloudVPN para conectar la subred del clúster de GKE con la red del clúster on-premise.
  • Si usas la AC de Istio, utiliza el mismo certificado raíz personalizado en todos los clústeres.

Antes de empezar

Necesitas acceso a los archivos kubeconfig de todos los clústeres que vayas a configurar en la malla. En el caso del clúster de GKE, para crear un archivo kubeconfig nuevo para el clúster, puedes exportar la variable de entorno KUBECONFIG con la ruta completa del archivo como valor en tu terminal y generar la entrada kubeconfig.

Configurar variables de entorno y marcadores de posición

Necesitas las siguientes variables de entorno cuando instales la pasarela este-oeste.

  1. Crea una variable de entorno para el número de proyecto. En el siguiente comando, sustituye 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 la malla.

    export MESH_ID="proj-${PROJECT_NUMBER}"
    
  3. Crea variables de entorno para los nombres de las redes.

    • Los clústeres de GKE usan de forma predeterminada el nombre de la red del clúster:

      export NETWORK_1="PROJECT_ID-CLUSTER_NETWORK"

    • Otros clústeres usan default:

      export NETWORK_2="default"

    Ten en cuenta que, si has instalado Cloud Service Mesh en otros clústeres con valores diferentes para --network_id, debes transferir los mismos valores a NETWORK_2.

Instalar la pasarela este-oeste

  1. Instala una gateway en CLUSTER_1 (tu clúster de GKE) que esté dedicada al tráfico este-oeste a CLUSTER_2 (tu clúster local):

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --network ${NETWORK_1}  \
        --revision asm-1264-1 | \
        ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    

    Ten en cuenta que esta pasarela es pública en Internet de forma predeterminada. Los sistemas de producción pueden requerir restricciones de acceso adicionales, como reglas de firewall, para evitar ataques externos.

  2. Instala una pasarela en CLUSTER_2 que esté dedicada al tráfico este-oeste de CLUSTER_1.

    asm/istio/expansion/gen-eastwest-gateway.sh \
        --mesh ${MESH_ID} \
        --network ${NETWORK_2} \
        --revision asm-1264-1 | \
        ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_2 install -y -f -
    

Exponer servicios

Como los clústeres están en redes independientes, debe exponer todos los servicios (\*.local) en la puerta de enlace este-oeste de ambos clústeres. Aunque esta pasarela es pública en Internet, solo pueden acceder a los servicios que hay detrás los servicios que tengan un certificado mTLS y un ID de carga de trabajo de confianza, como si estuvieran en la misma red.

Exponer servicios a través de la puerta de enlace este-oeste de cada clúster

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

Habilitar el descubrimiento de endpoints

Ejecuta el comando asmcli create-mesh para habilitar el descubrimiento de endpoints. En este ejemplo solo se muestran dos clústeres, pero puedes ejecutar el comando para habilitar el descubrimiento de endpoints en otros clústeres, sujeto al límite de servicio de GKE Hub.

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

Verificar la conectividad entre clústeres

Consulta Inyectar proxies de sidecar.