Para habilitar el acceso desde Internet pública a un servicio de Kubernetes que se ejecute en un clúster de Tanzu Kubernetes Grid, publique el servicio internamente y después otórguele una dirección IP pública y cree una regla de DNAT que exponga el servicio publicado en una dirección IP del CIDR de entrada.
Un equilibrador de carga administra el acceso de Internet a los servicios del clúster a través de una dirección IP pública con DNAT en el bloque CIDR de entrada que especificó al activar Tanzu Kubernetes Grid. En VMware Cloud on AWS, el NSX Container Plug-in implementa el servicio del equilibrador de carga, que se configura automáticamente para cada clúster del SDDC en el que se activa Tanzu Kubernetes Grid. Consulte Descripción general de NSX Container Plug-in para obtener más información.
Los siguientes pasos describen un flujo de trabajo típico que puede utilizar para que un servicio de Kubernetes sea accesible desde Internet pública. El artículo de VMware Cloud Tech Zone Configurar el acceso público a clústeres de Tanzu Kubernetes en VMware Cloud on AWS explica más detalladamente este flujo de trabajo.
Procedimiento
- Inicie sesión en VMware Cloud Services en https://vmc.vmware.com.
- Utilice la API de VMware Cloud on AWS para publicar el servicio de forma interna.
Impleméntelo como un servicio de tipo LoadBalancer, y especifique el espacio de nombres y los puertos de nodo, como se muestra aquí.
apiversion: v1
kind: service
metadata:
name: example-svc
namespace: ns1
labels:
app: hardtop-example
spec:
ports:
port:80
targetPort: 8080
type: LoadBalancer
selector:
app: example-app
La implementación de un servicio de Kubernetes de
type: LoadBalancer
lo publica y hace que sea accesible dentro del clúster en el puerto especificado (
port: 80
en este ejemplo) y asigna un puerto de nodo a un puerto aleatorio superior a 30000.
- Cree una regla de firewall de puerta de enlace de cómputo de VMware Cloud on AWS que permita el acceso a la máquina virtual en su IP externa y puerto de nodo asignado (en este ejemplo usamos 31552).
Utilice un comando
kubectl como este para devolver las propiedades de servicio que necesite para la regla de firewall.
kubectl get service example-svc -n ns1
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S)
example-svc LoadBalancer 10.96.249.36 10.130.1.9 80:31552/TCP
Siga el procedimiento descrito en
Agregar o modificar reglas de firewall de puerta de enlace de administración en la guía
Redes y seguridad de VMware Cloud on AWS para crear una regla con parámetros como los siguientes:
Opción |
Descripción |
Orígenes |
Cualquiera |
Destinos |
La IP externa del servicio (10.130.1.9 en este ejemplo) |
Servicios |
HTTP |
Acción |
Permitir |
- Solicite una dirección IP pública para la máquina virtual que proporciona el servicio.
- Cree una regla de DNAT para esta IP pública.
Siga el procedimiento descrito en
Crear o modificar reglas de NAT en la guía
Redes y seguridad de VMware Cloud on AWS para crear una regla de DNAT que haga coincidir la IP pública con la IP interna. Si la regla especifica
Coincidir con dirección interna, también deberá crear una regla de firewall que permita el acceso a la dirección
IP pública en la interfaz de Internet.