Registrando um subdomínio DNS para um NLB

Infraestrutura clássica

Este conteúdo é específico para NLBs em clusters clássicos. Para clusters VPC, consulte Registrando um nome do host do balanceador de carga do VPC com um subdomínio DNS.

Depois de configurar os balanceadores de carga de rede (NLBs), é possível criar entradas DNS para os IPs do NLB criando subdomínios. Também é possível configurar monitores TCP/HTTP (S) para a verificação de funcionamento dos endereços IP do NLB atrás de cada subdomínio.

Subdomínio
Ao criar um NLB público em um cluster de zona única ou multizona, é possível expor seu app para a Internet criando um subdomínio para o endereço IP do NLB. Além disso, o IBM Cloud cuida de gerar e manter para você o certificado SSL curinga para o subdomínio. Em clusters multizona, é possível criar um subdomínio e incluir o endereço IP do NLB em cada zona para essa entrada DNS do subdomínio. Por exemplo, se você implementou NLBs para seu app em três zonas no Sul dos Estados Unidos, será possível criar o subdomínio mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud para os três endereços IP do NLB. Quando um usuário acessa seu subdomínio de app, o cliente acessa um desses IPs aleatoriamente, e a solicitação é enviada para esse NLB.

Atualmente, não é possível criar subdomínios para NLBs privados.

Ao usar o monitoramento HTTP, o agente de usuário padrão para o trabalho de monitoramento é NS1 HTTP Monitoring Job.

Monitor de verificação de funcionamento
Ative as verificações de funcionamento nos endereços IP do NLB por trás de um único subdomínio para determinar se eles estão disponíveis ou não. Ao ativar um monitor para seu subdomínio, o funcionamento do monitor verifica cada IP do NLB e mantém os resultados da consulta de DNS atualizados com base nessas verificações de funcionamento. Por exemplo, se os seus NLBs tiverem endereços IP 1.1.1.1, 2.2.2.2 e 3.3.3.3, uma consulta de DNS de operação normal de seu subdomínio retornará todos os três IPs, dos quais o cliente acessa um aleatoriamente. Se o NLB com o endereço IP 3.3.3.3 se tornar indisponível por qualquer motivo, como devido à falha na zona, em seguida, a verificação de funcionamento para esse IP falhará, o monitor removerá o IP com falha do subdomínio e a consulta de DNS retornará apenas os IPs funcionais 1.1.1.1 e 2.2.2.2.

É possível ver todos os subdomínios que estão registrados para IPs do NLB em seu cluster executando o comando a seguir.

ibmcloud oc nlb-dns ls --cluster CLUSTER_NAME_OR_ID

As atualizações de microsserviço DNS são assíncronas e podem levar vários minutos para serem aplicadas. Note que se você executar um comando ibmcloud oc nlb-dns e receber uma mensagem de confirmação de 200, ainda será possível esperar que suas mudanças sejam implementadas. Para verificar o status de seu subdomínio, execute ibmcloud oc nlb-dns ls e encontre a coluna Status na saída.

Registrando IPs do NLB com um subdomínio DNS

Exponha seu app para a Internet pública, criando um subdomínio para o endereço IP do balanceador de carga de rede (NLB).

Antes de Iniciar:

Para criar um subdomínio para um ou mais endereços IP do NLB:

  1. Obtenha o endereço EXTERNAL-IP para seu NLB. Se tiver NLBs em cada zona de um cluster multizona que exponham um app, obtenha os IPs para cada NLB.

    oc get svc
    

    Na saída de exemplo a seguir, os EXTERNAL-IPs do NLB são 168.2.4.5 e 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 o IP ao criar um subdomínio DNS. Para especificar vários endereços IP, use várias opções --ip .

    ibmcloud oc nlb-dns create classic --cluster <cluster_name_or_id> --ip <NLB_IP> --ip <NLB2_IP>
    
  3. Verifique se o subdomínio foi criado.

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

    Saída de exemplo

    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 um domínio customizado para apontar para o subdomínio fornecido pela IBM que você criou na etapa anterior.

    • Registre um domínio personalizado entrando em contato com seu provedor de Serviço de Nomes de Domínio (DNS).
    • Registre um domínio personalizado usando o IBM Cloud DNS.

    Você também pode registrar um domínio personalizado usando a anotação service.kubernetes.io/ibm-load-balancer-cloud-provider-dns-name na configuração do Load Balancer.

  5. Defina um alias para o seu domínio customizado especificando o subdomínio fornecido pela IBM como um registro de nome canônico (CNAME).

  6. Em um navegador da web, insira a URL para acessar seu app por meio do subdomínio que você criou.

Em seguida, é possível ativar verificações de funcionamento no subdomínio, criando um monitor de funcionamento.

Entendendo o formato do subdomínio

Os subdomínios para NLBs seguem o formato <cluster_name>-<globally_unique_account_HASH>-0001.<region>.containers.appdomain.cloud.

Por exemplo, um subdomínio que você cria para um NLB pode se parecer com mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud. A tabela a seguir descreve cada componente do subdomínio.

Entendendo o formato de subdomínio do NLB
Componente de subdomínio do NLB Descrição
* O curinga para o subdomínio é registrado por padrão para o seu cluster.
<cluster_name>

O nome do cluster. - Se o nome do cluster tiver 26 caracteres ou menos e for exclusivo nessa região, o nome inteiro será incluído e não será modificado: myclustername.

  • Se o nome do cluster tiver 26 caracteres ou menos e houver um cluster existente com o mesmo nome nessa região, o nome inteiro será incluído e um hífen com seis caracteres aleatórios será incluído: myclustername-ABC123.
  • Se o nome do cluster tiver 26 caracteres ou mais e for exclusivo nessa região, apenas os primeiros 24 caracteres do nome serão usados: myveryverylongclusternam.
  • Se o nome do cluster tiver 26 caracteres ou mais e houver um cluster existente com o mesmo nome nessa região, apenas os primeiros 17 caracteres do nome serão usados e um hífen com seis caracteres aleatórios será incluído: myveryverylongclu-ABC123.
<globally_unique_account_HASH> Um HASH exclusivo globalmente é criado para sua conta do IBM Cloud. Todos os subdomínios que você cria para NLBs em clusters em sua conta usam esse HASH exclusivo globalmente.
0001 Age como um contador para cada subdomínio criado.
<region> A região de criação do cluster.
containers.appdomain.cloud O subdomínio para os subdomínios do Red Hat OpenShift on IBM Cloud.

Ativar verificações de funcionamento em um subdomínio criando um monitor de funcionamento

Ative as verificações de funcionamento nos endereços IP do NLB por trás de um único subdomínio para determinar se eles estão disponíveis ou não.

Se você usar políticas de rede pré-DNAT do Calico, grupos de segurança de VPC, listas de controle de acesso(ACLs)de VPC ou outra solução de firewall personalizada para bloquear o tráfego de entrada para serviços de Ingress ou roteador, deverá permitir o tráfego de entrada dos endpoints de monitoramento de integridade. Para obter mais informações, consulte a documentação sobre como permitir o tráfego de rede de entrada para o monitoramento do subdomínio Ingress.

Antes de iniciar, registre os IPs de NLB com um subdomínio DNS.

  1. Obtenha o nome de seu subdomínio. Na saída, observe que o host tem um monitor Status de Unconfigured.

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

    Saída de exemplo

    Hostname                                                                                   Status         Type    Port   Path
    mycluster-a1b2cdef345678g9hi012j3kl4567890-0001.us-south.containers.appdomain.cloud        Unconfigured   N/A     0      N/A
    
  2. Crie um monitor de verificação de funcionamento para o subdomínio. Se você não incluir um parâmetro de configuração, o valor padrão será usado.

    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>
    Necessário: o nome ou ID do cluster no qual o subdomínio está registrado.
    --nlb-host <host_name>
    Necessário: o subdomínio para o qual ativar um monitor de verificação de funcionamento.
    --enable
    Inclua esta opção para ativar um novo monitor de verificação de integridade para um subdomínio.
    --type <type>
    O protocolo a ser usado para a verificação de funcionamento: HTTP, HTTPSou TCP. Padrão: HTTP.
    --path <path>
    Quando type é HTTPS: o caminho do terminal para realizar a verificação de funcionamento. Padrão: /
    --timeout <timeout>
    O tempo limite, em segundos, antes de o IP ser considerado inatingível. A verificação de funcionamento aguarda o número de segundos especificado no parâmetro interval antes de tentar atingir o IP novamente. O valor deve ser um número inteiro no intervalo de 1 a 60. Padrão:5
    --interval <interval>
    O intervalo, em segundos, entre cada verificação de funcionamento. Intervalos curtos podem melhorar o tempo de failover, mas aumentar o carregamento nos IPs. O valor deve ser um número inteiro no intervalo de 60 a 300. Padrão: 60.
    --port <port>
    O número da porta à qual se conectar para a verificação de funcionamento. Quando type for TCP, esse parâmetro será necessário. Quando type for HTTP ou HTTPS, defina a porta somente se você usar uma porta diferente de 80 para HTTP ou 443 para HTTPS. Padrão para TCP: 0. Padrão para HTTP: 80. Padrão para HTTPS: 443.
    --header <header>
    Obrigatório quando type é HTTP ou HTTPS``: HTTP os cabeçalhos de solicitação para a verificação de integridade estão limitados ao cabeçalho Host. Este sinalizador é válido apenas para os tipos HTTP ou HTTPS. Este sinalizador aceita valores no seguinte formato: --header Header-Name=value. Ao atualizar um monitor, os cabeçalhos existentes são substituídos por aqueles que você especifica. Para excluir todos os cabeçalhos existentes, especifique o sinalizador com um valor vazio --header "".

    Exemplo de comando

    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 se o monitor de verificação de funcionamento está definido com as configurações corretas.

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

    Saída de exemplo

    Status:           enabled
    Type:             https
    Method:           GET
    Path:             /alive
    Expected Codes:   2xx
    Port:             443
    Timeout:          5
    Interval:         60
    Headers:
    Host:      example.com
    
  4. Visualize o status de verificação de funcionamento do seu subdomínio.

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

    Saída de exemplo

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

Atualizando e removendo IPs e monitores de subdomínios

É possível incluir e remover endereços IP do NLB de subdomínios que você gerou. Também é possível desativar e ativar monitores de verificação de funcionamento para subdomínios, conforme necessário.

IPs do NLB

Se você posteriormente incluir mais NLBs em outras zonas de seu cluster para expor o mesmo app, será possível incluir os IPs do NLB no subdomínio existente.

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

Também é possível remover endereços IP de NLBs que você não deseja mais que sejam registrados com um subdomínio. Observe que se deve executar o comando a seguir para cada endereço IP que você deseja remover. Se você remover todos os IPs de um subdomínio, o subdomínio ainda existirá, mas nenhum IP será associado a ele.

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

Monitores de verificação de funcionamento

Se for necessário mudar a configuração do monitor de funcionamento, será possível mudar as configurações específicas. Inclua apenas as opções das configurações que você deseja alterar.

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>

É possível desativar o monitor de verificação de funcionamento para um subdomínio a qualquer momento executando o comando a seguir:

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

Para reativar um monitor para um subdomínio, execute o comando a seguir:

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