Configura una malla híbrida

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

  • Híbrida: GKE en Google Cloud y Google Distributed Cloud (vista previa)
  • Híbrida: GKE en Google Cloud y Google Distributed Cloud (versión preliminar)

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

Requisitos previos

  • Todos los clústeres deben estar registrados en el mismo proyecto host de la flota.
  • Todos los clústeres de GKE deben estar en una configuración de VPC compartida en la misma red.
  • La dirección de la puerta de enlace y la dirección del plano de control de Kubernetes del clúster deben ser accesibles desde cada clúster de la malla. El proyecto de Google Cloud en el que se encuentran los clústeres de GKE debe tener permiso para crear tipos de balanceo de cargas externos. Te recomendamos usar redes autorizadas y reglas de firewall de VPC para restringir el acceso.
  • Los clústeres privados, incluidos los clústeres privados de GKE, no se admiten. Si usas clústeres locales, incluidos Google Distributed Cloud y Google Distributed Cloud, la dirección del plano de control de Kubernetes y la dirección de la puerta de enlace deben ser accesibles desde los Pods en clústeres de GKE. Te recomendamos usar CloudVPN para conectar la subred del clúster de GKE con la red del clúster local.
  • Si usas la CA de Istio, usa el mismo certificado raíz personalizado para todos los clústeres.

Antes de comenzar

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

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 siguiente comando, 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 red.

    • Los clústeres de GKE se establecen de forma predeterminada con el siguiente nombre de 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 instalaste Cloud Service Mesh en otros clústeres con valores diferentes para --network_id, debes pasar los mismos valores a NETWORK_2.

Instala la puerta de enlace este-oeste

  1. Instala una puerta de enlace 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-1226-2 | \
        ./istioctl --kubeconfig=PATH_TO_KUBECONFIG_1 install -y -f -
    

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

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

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

Expón servicios

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.

Expón servicios a través de la puerta de enlace este-oeste para 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

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 al límite de servicio de GKE Hub.

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

Verifica la conectividad de varios clústeres

Consulta Incorpora proxies de sidecar.