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:
- Instala las herramientas requeridas
- Descarga
asmcli
- Otorga permisos de administrador del clúster
- Valida tu proyecto y clúster
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.
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)")
Crea una variable de entorno para el identificador de malla.
export MESH_ID="proj-${PROJECT_NUMBER}"
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
yCLUSTER_NAME_2
por los nombres de tus clústeres.Reemplaza
PATH_TO_KUBECONFIG_1
yPATH_TO_KUBECONFIG_2
por los archivos kubeconfig de los clústeres.
CA de Mesh
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 -
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
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 -
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.
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
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