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.
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)")
Crea una variable de entorno para el identificador de la malla.
export MESH_ID="proj-${PROJECT_NUMBER}"
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
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.
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.