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

  1. Inicie sesión en VMware Cloud Services en https://vmc.vmware.com.
  2. 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.
  3. 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
  4. Solicite una dirección IP pública para la máquina virtual que proporciona el servicio.
    Siga el procedimiento descrito en Solicitar o liberar una dirección IP pública en la guía Redes y seguridad de VMware Cloud on AWS:
  5. 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.