Configuración de una ruta privada Network Load Balancer for VPC

Nube privada virtual 4.16 y más tarde

En entornos VPC totalmente privados sin acceso público a Internet, puede utilizar un Private Path Network Load Balancer para equilibrar el tráfico de red que fluye hacia las aplicaciones que se ejecutan en sus clústeres VPC. Para más información, consulte los casos de uso del servicio Private Path.

Requisitos previos

  1. Acceda al clúster de Red Hat OpenShift.

  2. Si aún no tiene una aplicación en ejecución, despliegue una aplicación en su clúster. Asegúrese de añadir una etiqueta en la sección de metadatos del archivo de configuración de despliegue. Esta etiqueta personalizada identifica todos los pods en los que se ejecuta la app para incluirlos en el equilibrio de carga.

Configuración del servicio LoadBalancer

  1. Copia la LoadBalancer configuración y guárdala en un archivo llamado lb.yaml.

    apiVersion: v1
    kind: Service
    metadata:
      name: <app_name>-vpc-nlb-<VPC_zone>
      annotations:
        service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name: "my-load-balancer"
        service.kubernetes.io/ibm-load-balancer-cloud-provider-enable-features: "private-path" # Required
        service.kubernetes.io/ibm-load-balancer-cloud-provider-ip-type: "private" # Required
        service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets: "<subnet_ID>"
    spec:
      type: LoadBalancer
      selector:
        <selector_key>: <selector_value>
      ports:
       - name: http
         protocol: TCP
         port: 8080
         targetPort: 8080 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
       - name: https
         protocol: TCP
         port: 443
         targetPort: 443 # Optional. By default, the `targetPort` is set to match the `port` value unless specified otherwise.
      externalTrafficPolicy: Local # Specify Local or Cluster.
    
  2. Personalice los campos para su caso de uso. Para consultar la lista completa de anotaciones, véase Anotaciones y especificaciones.

  3. Guarde los cambios.

  4. Despliegue el servicio Load Balancer en su cluster.

    oc apply -f lb.yaml
    

Creación de un servicio Private Path

Siga las instrucciones para Crear un servicio Private Path.

Configuración de una puerta de enlace virtual

Ahora que ha configurado un servicio Load Balancer, debe configurar un Virtual Private Endpoint (VPE) Gateway para acceder a las aplicaciones de su clúster.

Para obtener más información, consulte Creación de una pasarela de puntos finales en la interfaz de usuario.

Conexión a sus aplicaciones a través de su VPE

Para obtener información sobre cómo conectarse a sus aplicaciones a través de su VPE, consulte Acceso a su endpoint privado virtual después de configurar su puerta de enlace de endpoint.

Anotaciones y especificaciones

Revise las anotaciones y especificaciones requeridas y opcionales de VPC NLB.

Anotaciones y especificaciones requeridas

externalTrafficPolicy
Especifique Local o Cluster.
Establezca en Local para conservar la dirección IP de origen de las solicitudes de cliente a las apps. Esta configuración impide que el tráfico entrante se reenvíe a un nodo diferente. Esta opción también configura las comprobaciones de estado de HTTP.
Si se establece Cluster, DSR se implementa solo desde el nodo trabajador al que el VPC NLB reenvía primero la solicitud entrante. Una vez recibida la solicitud, ésta se reenvía a un nodo trabajador que contiene el pod de aplicación, que puede estar en una zona diferente. La respuesta del pod de app se envía al nodo trabajador original, y ese nodo trabajador utiliza DSR para enviar la respuesta directamente al cliente, pasando por alto el VPC NLB. Esta opción también configura las comprobaciones de estado de TCP.

Anotaciones y especificaciones opcionales

service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-lb-name
Incluya un nombre único para que su equilibrador de carga VPC sea persistente. Los balanceadores de carga VPC persistentes no se eliminan cuando se elimina el clúster al que pertenecen. Para obtener más información, consulte Balanceadores de carga VPC persistentes. Esta anotación sólo puede establecerse al crear el equilibrador de carga. No puede utilizarse en una operación de actualización.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-protocol
Esta anotación establece el protocolo de comprobación de estado en el recurso de equilibrador de carga de VPC asociado con el servicio de equilibrador de carga Kubernetes. Las opciones disponibles son http, https o tcp. Normalmente, el protocolo de comprobación de estado de VPC LB viene determinado por el valor de la configuración externalTrafficPolicy en la especificación del servicio del equilibrador de carga Kubernetes. Sin embargo, esta anotación anula esa lógica. Esta anotación no altera cómo Kubernetes, y kube-proxy en particular, se comporta con respecto a las diversas configuraciones de externalTrafficPolicy.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-port
El puerto TCP que se utiliza para las comprobaciones de estado. Esta anotación sólo se aplica si también se especifica ibm-load-balancer-cloud-provider-vpc-health-check-protocol. Si el puerto TCP especificado se encuentra fuera del rango de puertos de los nodos Kubernetes (30 000-32 767), será necesario modificar el grupo de seguridad de la VPC aplicado a los nodos de trabajo del clúster para permitir el tráfico entrante en dicho puerto. Si esta anotación se aplica a un servicio de equilibrado de carga de « Kubernetes » asociado a un VPC ALB, es necesario modificar las reglas de salida del grupo de seguridad asignado al VPC ALB para permitir el tráfico saliente hacia el puerto TCP especificado. Para obtener más información, consulte Comprensión de las redes VPC de clúster seguras por defecto y Creación y gestión de grupos de seguridad VPC.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-subnets
Anotación para especificar qué subred utilizar para asignar las direcciones IP para ppNLB. Estas direcciones IP sólo se utilizan internamente. El valor puede ser un ID de subred de VPC, un nombre de subred de VPC o un CIDR de subred de VPC. Solo debe especificar una subred. Todo el tráfico entrante parece provenir de estas direcciones IP. Aunque todas las direcciones están en una única zona, el ppNLB sigue gestionando el tráfico entrante de todas las zonas. Si esta zona específica deja de funcionar, el tráfico entrante de las otras zonas sigue funcionando. Si no especifica esta anotación, la subred se selecciona automáticamente y se utiliza la subred del nodo trabajador del clúster que tenga más direcciones IP libres disponibles. Para ver las subredes de todos los grupos de recursos, ejecute ibmcloud oc subnets --provider vpc-gen2 --vpc-id VPC_ID --zone ZONE.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-node-selector
Anotación para especificar un selector de etiquetas de nodos de trabajo. Puede configurar nodos de trabajo específicos en su clúster para recibir tráfico especificando claves de selección de etiquetas. Solo se puede incluir un selector de etiqueta en la anotación, y dicho selector debe especificarse en el formato "key=value". Si no se especifica esta anotación, todos los nodos de trabajo del clúster se configuran para recibir tráfico procedente del VPC NLB. Esta anotación tiene prioridad sobre la anotación service.kubernetes.io/ibm-load-balancer-cloud-provider-zone, y se ignoran las etiquetas dedicated: edge de los nodos de trabajo. Para limitar el tráfico a una zona específica, puede utilizar esta anotación para especificar nodos trabajadores en esa zona. Tenga en cuenta que el establecimiento de una nueva etiqueta en un nodo trabajador del clúster no configura automáticamente el nodo trabajador para recibir tráfico; debe volver a crear o actualizar el NLB de la VPC para que el nodo trabajador recién etiquetado reciba tráfico.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-path
La ruta de comprobación de salud URL para las comprobaciones de salud HTTP y HTTPs. Esta anotación sólo se aplica si ibm-load-balancer-cloud-provider-vpc-health-check-protocol se establece en http o https. La ruta URL debe tener el formato de un destino de solicitud origen-forma. Si no se especifica esta anotación y la anotación ibm-load-balancer-cloud-provider-vpc-health-check-protocol se establece en http o https, se aplica el valor por defecto /.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-delay
Opcional. El número de segundos que hay que esperar entre los intentos de chequeo. Por defecto, este valor se establece en 5, y tiene un mínimo de 2 y un máximo de 60. Este valor debe ser mayor que el valor ibm-load-balancer-cloud-provider-vpc-health-check-timeout, que se establece en 2 por defecto.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-timeout
Opcional. El número de segundos que hay que esperar para recibir una respuesta a una comprobación de estado. Por defecto, este valor se establece en 2, y tiene un mínimo de 1 y un máximo de 59. Este valor debe ser inferior a ibm-load-balancer-cloud-provider-vpc-health-check-delay, que se establece en 5 por defecto.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-health-check-retries
Número máximo de reintentos de comprobación de estado para el equilibrador de carga de la VPC. Por defecto, este valor se establece en 2, y tiene un mínimo de 1 y un máximo de 10.
service.kubernetes.io/ibm-load-balancer-cloud-provider-vpc-member-quota
Opcional. Número de nodos trabajadores por zona a los que se dirige el equilibrador de carga. El valor predeterminado es 8. En el caso de un clúster con nodos de trabajo en tres zonas, esto hace que el equilibrador de carga dirija el tráfico a un total de 24 nodos de trabajo. El número total de nodos trabajadores de todas las zonas a los que se dirige el equilibrador de carga no puede superar los 50. Si el clúster tiene menos de 50 nodos trabajadores en todas las zonas, especifique 0 para enrutar a todos los nodos trabajadores de una zona.
selector
La clave de etiqueta (<selector_key>) y el valor (<selector_value>) que ha utilizado en la sección spec.template.metadata.labels del YAML de despliegue de aplicación. Esta etiqueta personalizada identifica todos los pods en los que se ejecuta la app para incluirlos en el equilibrio de carga.
port
El puerto que en el que está a la escucha el servicio.
targetPort
Opcional: el puerto al que el servicio dirige el tráfico. La aplicación que se ejecuta en el pod debe estar a la escucha del tráfico entrante TCP en este puerto de destino. El puerto de destino suele definirse estáticamente en la imagen que se ejecuta en el pod de aplicación. El puerto de destino configurado en el pod es diferente del puerto de nodo para el servicio y también podría ser diferente del puerto externo que está configurado en la VPC LB.