Puedes habilitar cualquier instancia de máquina virtual (VM) para que sea accesible desde la red externa o desde otra organización, lo que se conoce como VM Ingress. Una carga de trabajo de VM en un proyecto de organización puede llegar a la red externa o a la VM actual que se expone a los servicios en otras organizaciones, lo que se conoce como salida de VM.
Puedes usar VirtualMachineExternalAccess
(VMEA) para controlar el ingreso y egreso de la VM de forma conjunta. Puedes encontrar las direcciones IP de entrada y salida que habilitaste para una instancia de VM en la API de VMM aislada de Google Distributed Cloud (GDC) o a través de la consola de GDC.
Antes de comenzar
Para usar los comandos de la interfaz de línea de comandos (CLI) de gdcloud
, asegúrate de haber descargado, instalado y configurado la CLI de gdcloud
.
Todos los comandos de Distributed Cloud usan la CLI de gdcloud
o kubectl
y requieren un entorno de sistema operativo (SO).
Obtén la ruta de acceso del archivo kubeconfig
Para ejecutar comandos en el servidor de la API de Management, asegúrate de tener los siguientes recursos:
Accede y genera el archivo kubeconfig para el servidor de la API de Management si no tienes uno.
Usa la ruta de acceso al archivo kubeconfig del servidor de la API de administración para reemplazar
MANAGEMENT_API_SERVER
en estas instrucciones.
Solicita permisos y acceso
Para realizar las tareas que se indican en esta página, debes tener el rol de administrador de la VM del proyecto. Sigue los pasos para verificar que tienes el rol de administrador de máquinas virtuales del proyecto (project-vm-admin
) en el espacio de nombres del proyecto en el que reside la VM.
Para las operaciones de VM con la consola de GDC o la CLI de gdcloud, solicita a tu administrador de IAM del proyecto que te asigne el rol de administrador de máquinas virtuales del proyecto y el rol de visualizador del proyecto (project-viewer
).
Configura el acceso externo a la VM
VirtualMachineExternalAccess
(VMEA) controla el ingreso y la salida de la VM.
VMEA no puede controlar el tráfico de entrada y salida de la VM por separado. El ingreso y egreso de una VM deben habilitarse o inhabilitarse juntos al mismo tiempo.
Puedes configurar y controlar la VMEA desde la IU o desde la API de VMM de Distributed Cloud. Una VM solo puede tener un VMEA. Si una VM no tiene una VMEA, tanto el ingreso como el egreso se inhabilitan de forma predeterminada.
Habilita el acceso externo
Para habilitar una VM con acceso externo para la transferencia de datos entrantes y salientes, puedes configurar la VMEA desde la consola de GDC o la API de Virtual Machine Manager de Distributed Cloud.
De forma predeterminada, se permite el tráfico de red dentro del proyecto, y puedes acceder directamente a tu VM dentro del proyecto. Una política de red bloquea todo el tráfico de entrada a la VM desde fuera del proyecto. Debes crear manualmente una nueva política de red para permitir que tu dirección IP de origen acceda a la VM a través de la transferencia de datos entrante. Esta política de red puede ser una política de red de tráfico entre proyectos o una política de red de tráfico entre organizaciones. La ubicación depende de dónde quieras acceder a la VM.
Puedes habilitar y deshabilitar el acceso externo de una VM especificando true
o false
en el campo enabled
de la especificación de VMEA. En el caso de VM Ingress, puedes configurar la transferencia de datos en los puertos especificando el nombre, el protocolo y el número de puerto de cada puerto que desees agregar en el campo ports
de la especificación de VMEA.
Para habilitar el acceso externo a una VM creando un nuevo VMEA, completa los siguientes pasos:
Console
- Durante el proceso de creación de la VM con la consola, navega a la página Detalles de red desde la página Crear instancia de VM.
- Ubica Red en el menú de navegación vertical de la página.
- Marca Permitir el acceso externo para habilitar el acceso externo en la VM.
API
Ejecuta el siguiente comando:
kubectl --kubeconfig MANAGEMENT_API_SERVER apply -n PROJECT -f - <<EOF
apiVersion: virtualmachine.gdc.goog/v1
kind: VirtualMachineExternalAccess
metadata:
name: VM_NAME
spec:
enabled: true
ports:
- name: PORT_NAME
protocol: PROTOCOL
port: PORT_NUMBER
EOF
Reemplaza las siguientes variables:
- MANAGEMENT_API_SERVER: Es el archivo kubeconfig para el servidor de la API de Management.
- VM_NAME: El nombre de tu VM.
- PORT_NAME: El nombre del puerto.
- PROTOCOL: Es el protocolo que deseas que use el servicio de entrada. El nombre del protocolo debe comenzar con mayúscula y ser un protocolo compatible con Kubernetes, como
TCP
,UDP
oSCTP
. - PORT_NUMBER: Es el número de puerto.
Para habilitar el acceso externo a una VM editando un VMEA existente a través de la API de VMM, ejecuta lo siguiente:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Inhabilita el acceso externo
Si una VM no tiene un VMEA correspondiente, se inhabilitan tanto el ingreso como el egreso. Si una VM tiene un VMEA correspondiente, puedes inhabilitarlo configurando el campo enabled
como false
o borrando directamente el VMEA. Puedes realizar estas operaciones a través de la API de VMM de Distributed Cloud.
Para inhabilitar el acceso externo, completa los siguientes pasos:
API
Inhabilita el acceso externo borrando un VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER delete virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Reemplaza lo siguiente:
- MANAGEMENT_API_SERVER: Es el archivo kubeconfig para el servidor de la API de Management.
- VM_NAME: el nombre de la VM.
- PROJECT: Es el proyecto de Distributed Cloud en el que reside la VM.
Para inhabilitar el acceso externo, edita un VMEA:
kubectl --kubeconfig MANAGEMENT_API_SERVER edit virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT
Actualiza el campo enabled
a false
.
Entrada
Cómo ver las direcciones IP de Ingress
Si una VM está habilitada con Ingress, se mostrará una dirección IP de Ingress en la consola de GDC después de la creación. También puedes encontrar esta dirección IP de entrada en la página Detalles de la VM en la consola de GDC.
Para recuperar la dirección IP, usa la API de VMM de Distributed Cloud. Completa lo siguiente:
API
Recupera la dirección IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.ingressIP}'
Para una VM con un sistema operativo (SO) diferente, usa el comando ssh
para ingresar a la VM con la dirección IP de entrada y el puerto que habilitaste con TCP.
Edita Ingress
Después de habilitar la VMEA para una VM, puedes personalizar la entrada editando la VMEA. Puedes editar directamente la especificación de la entrada de la VM desde la consola de GDC. También puedes usar la CLI de kubectl
para editar el ingreso de la VM desde la especificación del VMEA.
Para editar el VMEA y personalizar la entrada, completa los siguientes pasos:
Por ejemplo, usa los siguientes comandos para agregar el puerto PORT_NUMBER en una entrada de VM existente con el protocolo TCP:
Console
Edita directamente los puertos en el servicio de entrada de la VM desde la consola de GDC:
- En el menú de navegación vertical, haz clic en Instancias.
- En la página, desplázate hasta Detalles de la red.
Haz clic en el ícono de edición de Ingress Ports para editar el puerto de entrada.
API
kubectl --kubeconfig MANAGEMENT_API_SERVER patch virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT --type "json" -p '[{"op":"add","path":"/spec/ports/-","value": {"name":"PORT_NAME","port":PORT_NUMBER, "Protocol":"TCP"}}]'
Reemplaza lo siguiente:
- MANAGEMENT_API_SERVER: Es el archivo kubeconfig para el servidor de la API de Management.
- VM_NAME: el nombre de la VM.
- PROJECT: Es el proyecto de Distributed Cloud en el que reside la VM.
- PORT_NAME: Es el nombre del puerto que se agregará.
- PORT_NUMBER: Es el número de puerto.
Habilita la entrada con un protocolo que no sea TCP
Distributed Cloud te permite habilitar tu Ingress de VM con diferentes protocolos. De forma predeterminada, un servicio de Ingress de VM usa el protocolo TCP. Puedes agregar tu propio protocolo de entrada que no sea TCP para tu VM. Distributed Cloud admite los siguientes protocolos:
- Protocolo de control de transmisión (TCP).
- Protocolo de datagramas de usuario (UDP).
- Protocolo de transmisión de control de flujo (SCTP).
Puedes habilitar la transferencia de datos con un protocolo que no sea TCP especificando nombres de protocolo diferentes cuando crees una VMEA.
Salida
Una carga de trabajo de VM en un proyecto de organización puede acceder a la red externa o exponerse a servicios en otras organizaciones. Si habilitas la transferencia de datos salientes para la VM, verás una dirección IP de salida generada. La VM se conecta a los servicios externos con esta dirección IP.
Para que esta transferencia de datos de direcciones IP salga de la red externa, es posible que debas aplicar políticas de red del proyecto. Para obtener más información, consulta Política de red de tráfico de salida entre organizaciones.
Cómo ver la dirección IP de salida
Si una VM tiene habilitada la salida, se mostrará una dirección IP de salida en la consola de GDC después de la creación. También puedes encontrar esta dirección IP de salida en la página Detalles de la VM.
Para ver la dirección IP de salida, completa los siguientes pasos:
API
Recupera la dirección IP:
kubectl --kubeconfig MANAGEMENT_API_SERVER get virtualmachineexternalaccesses.virtualmachine.gdc.goog VM_NAME -n PROJECT -ojsonpath='{.status.egressIP}'
Reemplaza lo siguiente:
- MANAGEMENT_API_SERVER: Es el archivo kubeconfig para el servidor de la API de Management.
- VM_NAME: el nombre de la VM.
- PROJECT: Es el proyecto de Distributed Cloud en el que reside la VM.
La salida de VM se basa en un proyecto. Las VMs dentro del mismo proyecto contienen la misma dirección IP de salida.
Control de salida
En versiones anteriores de Distributed Cloud, debías reiniciar la VM para que se reflejaran los cambios de salida en una VM en ejecución. En la versión 1.11, puedes habilitar e inhabilitar el tráfico de salida de la VM sin reiniciar la VM. Este cambio se aplica inmediatamente después de que actualizas el VMEA.