Registro de un subdominio DNS para un NLB

Infraestructura clásica

Este contenido es específico de los NLB en clústeres clásicos. Para clústeres de VPC, consulte Registro de un nombre de host de equilibrador de carga de VPC con un subdominio de DNS.

Una vez haya configurado los equilibradores de carga de red (NLB), puede crear entradas de DNS para las IP de NLB creando subdominios. También puede configurar los supervisores de TCP/HTTP (S) para comprobar el estado de las direcciones IP de NLB detrás de cada subdominio.

Subdominio
Cuando se crea un NLB público en un clúster de una sola zona o multizona, se puede exponer la app a Internet creando un subdominio para la dirección IP del NLB. Además, IBM Cloud se ocupa de la generación y del mantenimiento del certificado SSL comodín para el subdominio. En clústeres multizona, se puede crear un subdominio y, en cada zona, añadir la dirección IP de NLB a esa entrada de DNS del subdominio. Por ejemplo, si ha desplegado varios NLB para su app en tres zonas en el EE.UU. sur, puede crear el subdominio mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud para las tres direcciones IP de NLB. Cuando un usuario accede al subdominio de su app, el cliente accede a una de estas direcciones IP al azar y la solicitud se envía a ese NLB.

Actualmente no se pueden crear subdominios para los NLB privados.

Cuando se utiliza la supervisión de HTTP, el agente de usuario predeterminado para el trabajo de supervisión es NS1 HTTP Monitoring Job.

Supervisor de comprobación de estado
Habilite las comprobaciones de estado en las direcciones IP de NLB detrás de un solo subdominio para determinar si están disponibles o no. Cuando se habilita un supervisor para el subdominio, el supervisor de estado comprueba cada IP de NLB y mantiene actualizados los resultados de búsqueda de DNS en base a estas comprobaciones de estado. Por ejemplo, si los NLB tienen las direcciones IP 1.1.1.1, 2.2.2.2 y 3.3.3.3, una operación normal de búsqueda de DNS del subdominio devuelve las 3 IP y el cliente accede a 1 de ellas de forma aleatoria. Si el NLB con la dirección IP 3.3.3.3 deja de estar disponible por cualquier motivo, por ejemplo debido a una anomalía de zona, la comprobación de estado de esa IP falla, el supervisor elimina la IP fallida desde el subdominio y la búsqueda de DNS devuelve sólo las IP en buen estado, 1.1.1.1 y 2.2.2.2.

Puede ver todos los subdominios que están registrados para las IP de NLB en el clúster, ejecutando el mandato siguiente.

ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_ID

Las actualizaciones de microservicios de DNS son asíncronas y pueden tardar varios minutos en aplicarse. Tenga en cuenta que si ejecuta un mandato ibmcloud oc nlb-dns y recibe un mensaje de confirmación 200, es posible que tenga que esperar a que se implementen los cambios. Para comprobar el estado del subdominio, ejecute ibmcloud oc nlb-dns ls y busque la columna Status en la salida.

Registro de las IP de NLB en un subdominio de DNS

Exponga la app a la Internet pública creando un subdominio para la dirección IP del equilibrador de carga de red (NLB).

Antes de empezar:

Para crear un subdominio para una o varias direcciones IP de NLB:

  1. Obtenga la dirección EXTERNAL-IP para su NLB. Si tiene NLB en cada zona de un clúster multizona que expone una app, obtenga los IP para cada NLB.

    oc get svc
    

    En la siguiente salida de ejemplo, las EXTERNAL-IPs de NLB son 168.2.4.5 y 88.2.4.5.

    NAME             TYPE           CLUSTER-IP       EXTERNAL-IP       PORT(S)                AGE
    lb-myapp-dal10   LoadBalancer   172.21.xxx.xxx   168.2.4.5         1883:30303/TCP         6d
    lb-myapp-dal12   LoadBalancer   172.21.xxx.xxx   88.2.4.5          1883:31303/TCP         6d
    
  2. Registre la IP creando un subdominio de DNS. Para especificar varias direcciones IP, utilice varias --ip opciones.

    ibmcloud oc nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP>
    
  3. Verifique que se ha creado el subdominio.

    ibmcloud oc nlb-dns ls --cluster <cluster_name_or_id>
    

    Salida de ejemplo

    Hostname                                                                                IP(s)              Health Monitor   SSL Cert Status           SSL Cert Secret Name
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     ["168.2.4.5"]      None             created                   <certificate>
    
  4. Opcional: configure un dominio personalizado que apunte al subdominio proporcionado por IBM que ha creado en el paso anterior.

    • Registra un dominio personalizado poniéndote en contacto con tu proveedor de servicios de nombres de dominio (DNS).
    • Registre un dominio personalizado utilizando IBM Cloud DNS.

    También puede registrar un dominio personalizado utilizando la anotación service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name en la configuración del balanceador de carga.

  5. Defina un alias para el dominio personalizado especificando el subdominio proporcionado por IBM como CNAME (Registro de nombre canónico).

  6. En un navegador web, escriba el URL para acceder a la app a través del subdominio que ha creado.

A continuación, puede habilitar comprobaciones de estado en el subdominio mediante la creación de un supervisor de estado.

Formato del subdominio

Los subdominios para los NLB siguen el formato <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud.

Por ejemplo un subdominio que haya creado para un NLB podría ser así: mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud. En la tabla siguiente se describe cada componente del subdominio.

Formato del subdominio de NLB
Componente de subdominio de NLB Descripción
* El carácter comodín para el subdominio está registrado de forma predeterminada para el clúster.
<cluster_name>

El nombre del clúster. - Si el nombre del clúster tiene 26 caracteres o menos y el nombre del clúster es exclusivo en esta región, se incluye el nombre del clúster completo y no se modifica: myclustername.

  • Si el nombre del clúster tiene 26 caracteres o menos y hay un clúster existente con el mismo nombre en esta región, se incluye el nombre del clúster completo y se añade un guion con seis caracteres aleatorios: myclustername-ABC123.
  • Si el nombre del clúster tiene 26 caracteres o más y el nombre del clúster es exclusivo en esta región, solo se utilizan los 24 primeros caracteres del nombre del clúster: myveryverylongclusternam.
  • Si el nombre del clúster tiene 26 caracteres o más y hay un clúster existente con el mismo nombre en esta región, solo se utilizan los primeros 17 caracteres del nombre del clúster y se añade un guión con seis caracteres aleatorios: myveryverylongclu-ABC123.
<globally_unique_account_HASH> Se crea un HASH globalmente exclusivo para su cuenta de IBM Cloud. Todos los subdominios que cree para NLB en clústeres de su cuenta utilizan este HASH globalmente exclusivo.
0001 Actúa como contador para cada subdominio que cree.
<region> La región donde se ha creado el clúster.
containers.appdomain.cloud El subdominio de los subdominios de Red Hat OpenShift on IBM Cloud.

Habilitación de comprobaciones de estado en un subdominio mediante la creación de un supervisor de estado

Habilite las comprobaciones de estado en las direcciones IP de NLB detrás de un solo subdominio para determinar si están disponibles o no.

Si utiliza políticas de red pre-DNAT de Calico, grupos de seguridad de VPC, listas de control de acceso(ACL)de VPC u otra solución de cortafuegos personalizada para bloquear el tráfico entrante a los servicios Ingress o de enrutador, debe permitir el tráfico entrante desde los puntos finales de supervisión de estado. Para obtener más información, consulte la documentación sobre cómo permitir el tráfico de red entrante para la supervisión de subdominios de entrada.

Antes de empezar, registre las IP de NLB en un subdominio de DNS.

  1. Obtenga el nombre del subdominio. En la salida, observe que el host tiene el Estado de supervisor Unconfigured.

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    Salida de ejemplo

    Hostname                                                                                   Status         Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud        Unconfigured   N/A     0      N/A
    
  2. Cree un supervisor de comprobación de estado para el subdominio. Si no incluye un parámetro de configuración, se utiliza el valor predeterminado.

    ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --enable --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>
    
    -c, --cluster <cluster_name_or_ID>
    Obligatorio: el nombre o el ID del clúster en el que está registrado el subdominio.
    --nlb-host <host_name>
    Obligatorio: el subdominio para el que desea habilitar un supervisor de comprobación de estado.
    --enable
    Incluye esta opción para activar un nuevo monitor de comprobación de estado para un subdominio.
    --type <type>
    El protocolo que se utiliza para la comprobación de estado: HTTP, HTTPS o TCP. Valor predeterminado: HTTP.
    --path <path>
    Cuando type es HTTPS: la vía de acceso de punto final con la que se realiza la comprobación de estado. Valor predeterminado: /
    --timeout <timeout>
    El tiempo de espera, en segundos, antes de que se considere que no se puede establecer contacto con la IP. La comprobación de estado espera los segundos especificados en el parámetro interval antes de intentar acceder a la IP de nuevo. El valor debe ser un número entero comprendido entre 1 y 60. Valor predeterminado: 5
    --interval <interval>
    El intervalo, en segundos, entre cada comprobación de estado. Los intervalos cortos pueden mejorar el tiempo de migración tras error, pero aumentar la carga en los IP. El valor debe ser un número entero comprendido entre 60 y 300. Valor predeterminado: 60.
    --port <port>
    El número de puerto al que conectar para la comprobación de estado. Cuando type es TCP, este parámetro es obligatorio. Cuando type es HTTP o HTTPS, sólo es necesario definir el puerto si se utiliza un puerto distinto de 80 para HTTP o de 443 para HTTPS. Valor predeterminado para TCP: 0. Valor predeterminado para HTTP: 80. Valor predeterminado para HTTPS: 443.
    --header <header>
    Requerido cuando type es o HTTP HTTPS: HTTP. Los encabezados de solicitud para la comprobación de estado se limitan al encabezado Host. Esta bandera solo es válida para el tipo HTTP o HTTPS. Este indicador admite valores en el siguiente formato: --header Header-Name=value. Cuando se actualiza un supervisor, las cabeceras existentes se sustituyen por las que especifique. Para eliminar todos los encabezados existentes, especifica el indicador con un valor vacío --header "".

    Mandato de ejemplo

    ibmcloud oc nlb-dns monitor configure --cluster mycluster --nlb-host mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud --enable --type HTTPS --path /alive --timeout 5 --interval 60 --header Host=example.com
    
  3. Verifique que el monitor de comprobación de estado esté configurado con los valores correctos.

    ibmcloud oc nlb-dns monitor get --cluster <cluster_name_or_id> --nlb-host <host_name>
    

    Salida de ejemplo

    Status:           enabled
    Type:             https
    Method:           GET
    Path:             /alive
    Expected Codes:   2xx
    Port:             443
    Timeout:          5
    Interval:         60
    Headers:
    Host:      example.com
    
  4. Visualice el estado de comprobación de estado del subdominio.

    ibmcloud oc nlb-dns monitor ls --cluster <cluster_name_or_id>
    

    Salida de ejemplo

    Hostname                                                                                Status      Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud     enabled     https   443    /alive
    

Actualización y eliminación de IP y supervisores de los subdominios

Puede añadir y eliminar direcciones IP de NLB de los subdominios que ha generado. También puede inhabilitar y habilitar supervisores de comprobación de estado para los subdominios según sea necesario.

IP de NLB

Si posteriormente añade más NLB en otras zonas del clúster para exponer la misma app, puede añadir las IP de NLB al subdominio existente.

ibmcloud oc nlb-dns add --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP> ... --nlb-host <host_name>

También puede eliminar las direcciones IP de los NLB que ya no desee que estén registradas en un subdominio. Tenga en cuenta que debe ejecutar el siguiente mandato para cada dirección IP que desee eliminar. Si elimina todas las IP de un subdominio, el subdominio sigue existiendo, pero no hay ninguna IP asociada al mismo.

ibmcloud oc nlb-dns rm classic --cluster <cluster_name_or_id> --ip <ip> --nlb-host <host_name>

Supervisores de comprobación de estado

Si tiene que cambiar la configuración del supervisor de estado, puede cambiar los valores específicos. Incluye únicamente las opciones de configuración que desees modificar.

ibmcloud oc nlb-dns monitor configure --cluster <cluster_name_or_id> --nlb-host <host_name> --type <type> --path <path> --timeout <timeout> --interval <interval> --port <port> --header <header>

Puede inhabilitar el supervisor de comprobación de estado para un subdominio en cualquier momento ejecutando el mandato siguiente:

ibmcloud oc nlb-dns monitor disable --cluster <cluster_name_or_id> --nlb-host <host_name>

Para volver a habilitar un supervisor para un subdominio, ejecute el mandato siguiente:

ibmcloud oc nlb-dns monitor enable --cluster <cluster_name_or_id> --nlb-host <host_name>