IBM Cloud Docs
Escolhendo um serviço de exposição de app

Escolhendo um serviço de exposição de app

Exponha de forma segura seus apps para o tráfego externo usando o controlador de ingresso do Red Hat OpenShift ou IBM Cloud® Kubernetes Service NodePort, ou balanceador de carga de rede.

Compreendendo opções para expor apps

Para expor de forma segura seus apps ao tráfego externo, é possível escolher entre os serviços a seguir.

Controlador de ingresso do Red Hat OpenShift

Exponha vários aplicativos em um cluster configurando o roteamento com o controlador Red Hat OpenShift Ingress. O controlador de Ingress usa o subdomínio de Ingress como um ponto de entrada público ou privado seguro e exclusivo para rotear solicitações recebidas. É possível usar um subdomínio para expor diversos apps em seu cluster como serviços. A Solução do controlador de ingresso usa três componentes.

  • O oerador de ingresso que gerencia os controladores de ingresso em seu cluster.
  • O controlador do Ingress é um serviço do Kubernetes baseado em HAProxy que gerencia todo o tráfego recebido para os apps em seu cluster, implementando regras de roteamento para os apps. Esse controlador é gerenciado pelo operador do Ingress. O controlador de ingresso atende a solicitações de serviços HTTP, ou HTTPS recebidas e, em seguida, encaminha solicitações para os pods para esse app apenas de acordo com as regras definidas no recurso de ingresso e implementadas pelo controlador de ingresso.
  • O recurso de rota define as regras para como rotear e carregar solicitações recebidas de balanceamento para um app.

Uma rota expõe um serviço como um nome de host no formato <service_name>-<project>.<cluster_name>-<random_hash>-0000.<region>.containers.appdomain.cloud. Um controlador de ingresso é implementado por padrão em seu cluster, que possibilita que as rotas sejam usadas por clientes externos. O controlador de ingresso utiliza o seletor de serviço para encontrar o serviço e os terminais que apoiam o serviço. É possível configurar o seletor de serviço para direcionar o tráfego por meio de uma rota para diversos serviços. Também é possível criar rotas não seguras ou seguras usando o certificado TLS que é atribuído pelo controlador de ingresso para o seu nome de host. Observe que o controlador de ingresso suporta apenas os protocolos HTTP e HTTPS.

NodePort

Quando você expõe apps com um serviço NodePort, um NodePort no intervalo de 30000 a 32767 e um endereço IP interno do cluster são designados ao serviço. Para acessar o serviço de fora do cluster, use o endereço IP público ou privado de qualquer nó do trabalhador e o NodePort no formato <IP_address>:<nodeport>. No entanto, os endereços IP públicos e privados do nó do trabalhador não são permanentes. Quando um nó do trabalhador é removido ou recriado, um novo endereço IP público e um privado são designados ao nó do trabalhador. NodePorts são ideais para testar o acesso público ou privado ou fornecer acesso apenas por um curto período de tempo.

LoadBalancer

O tipo de serviço LoadBalancer é implementado de forma diferente, dependendo do provedor de infraestrutura de seu cluster.

  • Clusters clássicos: Balanceador de carga em rede (NLB). Cada cluster padrão é provisionado com quatro endereços IP públicos e privados móveis que podem ser usados para criar um balanceador de carga de rede TCP/UDP (NLB) de camada 4 para seu app. É possível customizar seu NLB expondo qualquer porta necessária ao seu app. Os endereços IP público e privado móveis que são designados ao NLB são permanentes e não mudam quando um nó do trabalhador é recriado no cluster. Se você criar NLBs públicos, será possível criar um subdomínio para seu app que registre os endereços IP de NLB públicos com uma entrada de DNS. Também é possível ativar monitores de verificação de funcionamento nos IPs do NLB para cada subdomínio.
  • Clusters VPC: Balanceador de carga para VPC. Ao criar um serviço LoadBalancer do Kubernetes para um app em seu cluster, um balanceador de carga do VPC de camada 7 é criado automaticamente em seu VPC fora de seu cluster. O balanceador de carga do VPC é multizonal e roteia solicitações para seu app por meio dos NodePorts privados que são abertos automaticamente em seus nós do trabalhador. Por padrão, o balanceador de carga também é criado com um hostname que você pode usar para acessar o seu app, mas também é possível criar um subdomínio para o seu app que cria uma entrada DNS.
Ingresso

É possível usar o Ingresso para expor seu app ao tráfego externo por meio do controlador do Ingresso Red Hat OpenShift. O Red Hat OpenShift Controller Manager converte seus recursos de ingresso em recursos de rota e o controlador de ingresso do Red Hat OpenShift processa essas rotas.

Escolhendo entre soluções de balanceamento de carga

Agora que você entende quais opções você tem para expor apps em seu cluster Red Hat OpenShift, escolha a melhor solução para a sua carga de trabalho.

A tabela a seguir compara os recursos de cada método de exposição de app.

Comparação de rede externa para apps em clusters Red Hat OpenShift.
Características NodePort LoadBalancer (Clássico - NLB) LoadBalancer (Balanceador de carga VPC) Controlador de Ingresso
IP externo estável True True
Nome do host externo True True True
Finalização de SSL Sim* Sim* True
Balanceamento de carga de HTTP(S) True
Regras de roteamento customizadas True
Múltiplos apps por rota ou serviço True
Implementação de multinuvem híbrida consistente True

* A finalização de SSL é fornecida pelos comandos ibmcloud oc nlb-dns. Em clusters clássicos, esses comandos são suportados apenas para NLBs públicos.

Planejando o balanceamento de carga externa pública

Exponha publicamente um app em seu cluster para a Internet.

Em clusters clássicos, seus nós do trabalhador estão conectados a uma VLAN pública. A VLAN pública determina o endereço IP público que é designado a cada nó do trabalhador, que fornece a cada nó do trabalhador uma interface de rede pública. Os serviços de rede pública se conectam a essa interface de rede pública, fornecendo ao seu app um endereço IP público e, opcionalmente, uma URL pública.

Em clusters VPC, os nós do trabalhador são conectados somente a sub-redes privadas do VPC. No entanto, ao criar serviços de rede pública, um balanceador de carga do VPC é criado automaticamente. O balanceador de carga do VPC pode rotear solicitações públicas para seu app fornecendo a ele uma URL pública. Quando um app é exposto publicamente, qualquer um que tenha a URL pública pode enviar uma solicitação para o app.

Quando um app é publicamente exposto, qualquer pessoa que tenha o endereço IP de serviço público ou a URL configurada para ele pode enviar uma solicitação para seu app. Por essa razão, exponha o mínimo de apps possível. Somente exponha um app para o público quando ele estiver pronto para aceitar o tráfego de clientes ou usuários externos da web.

A interface de rede pública para os nós do trabalhador é protegida por configurações de política de rede do Calico predefinidas que são configuradas em cada nó do trabalhador durante a criação do cluster. Por padrão, todo o tráfego de rede de saída é permitido para todos os nós do trabalhador. O tráfego de rede de entrada está bloqueado, exceto para algumas portas. Essas portas são abertas para que a IBM possa monitorar o tráfego de rede e instalar automaticamente atualizações de segurança para o mestre do Kubernetes e para que as conexões possam ser estabelecidas para serviços de rede pública. Para obter mais informações sobre essas políticas, incluindo como modificá-las, veja Políticas de rede.

Rede de apps públicos para clusters clássicos

Para tornar um app disponível publicamente para a Internet em um cluster clássico, escolha um método de exposição de app que use rotas, NodePorts, NLBs ou a configuração do Ingress. A tabela a seguir descreve cada método possível, por que você pode usá-lo e como configurá-lo. Para obter informações básicas sobre os serviços de rede que estão listados, consulte Entendendo os tipos de serviço do Kubernetes.

Não é possível usar vários métodos de exposição de aplicativos para um app.

Características dos métodos de exposição de aplicativos públicos
Nome Método de balanceamento de carga Caso de uso implementação
Rota Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas

Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Escolha este método para permanecer nativo de Red Hat OpenShift; por exemplo, é possível usar o console da web do Red Hat OpenShift para criar e gerenciar rotas.

  1. Crie um serviço ClusterIP para atribuir um endereço IP interno ao seu aplicativo.
  2. Configure uma rota Red Hat OpenShift.
  3. Personalize regras de roteamento com configurações opcionais.
NodePort Porta em um nó do trabalhador que expõe o app no endereço IP público do trabalhador Teste o acesso público a um app ou forneça acesso apenas por um curto período de tempo. Crie um serviço NodePort público.
NLB v1.0 (+ subdomínio) Balanceamento de carga básico que expõe o aplicativo com um endereço IP ou um subdomínio. Exponha rapidamente um app para o público com um endereço IP ou um subdomínio que suporte a finalização de SSL. Crie um balanceador de carga de rede pública (NLB) 1.0 em um cluster único ou multizona. Opcionalmente, registre um subdomínio e verificações de funcionamento.
NLB v2.0 (+ subdomínio) Balanceamento de carga DSR que expõe o aplicativo com um endereço IP ou um subdomínio.

Exponha um app que pode receber altos níveis de tráfego para o público com um endereço IP ou um subdomínio que suporte a terminação SSL.

  1. Complete os pré-requisitos.
  2. Crie um NLB público 2.0 em um cluster único ou multizona .
  3. Opcionalmente, registre um subdomínio e verificações de funcionamento.
Controlador de Ingresso Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Crie um Recurso de ingresso. para o controlador de ingresso público padrão.

Rede de apps públicos para clusters de VPC

Para disponibilizar um app publicamente para a Internet em um cluster de VPC, escolha um método de exposição do app que use rotas, balanceadores de carga de VPC ou configuração do Ingress. A tabela a seguir descreve cada método possível, por que você pode usá-lo e como configurá-lo. Para obter informações básicas sobre os serviços de rede que estão listados, consulte Entendendo os tipos de serviço do Kubernetes.

Não é possível usar vários métodos de exposição de aplicativos para um app.

Características dos métodos de exposição de aplicativos públicos
Nome Método de balanceamento de carga Caso de uso implementação
Rota Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Escolha esse método para permanecer nativo com o Red Hat OpenShift; por exemplo, é possível usar o console da web do Red Hat OpenShift para criar e gerenciar rotas. Criar uma rota usando o controlador de ingresso público padrão em clusters com um terminal em serviço em nuvem pública, ou criar uma rota usando um controlador de ingresso público customizado em clusters com um terminal em serviço de nuvem privada apenas.
Balanceador de carga da VPC Balanceamento básico de carga que expõe o aplicativo com um nome de host. Exponha rapidamente um aplicativo para o público com um nome de host designado pelo balanceador de carga do VPC. Criar um serviço LoadBalancer público em seu cluster. Um balanceador de carga multizonal do VPC é criado automaticamente em seu VPC, que designa um nome do host a seu serviço LoadBalancer para seu app.
Ingresso Balanceamento de carga de HTTP(S) que expõe o aplicativo com um subdomínio e usa regras de roteamento customizadas. Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Crie um recurso Ingress para o controlador Ingress público padrão em clusters com um terminal em serviço de nuvem pública ou crie um recurso Ingress para um controlador Ingress público customizado apenas em clusters com um terminal em serviço de nuvem privada.

Planejando o balanceamento de carga externa privado

Exponha de forma privada um app em seu cluster somente para a rede privada.

Quando você implementa um app em um cluster Kubernetes no IBM Cloud Kubernetes Service, é possível que você deseje torná-lo acessível somente para usuários e serviços na mesma rede privada que seu cluster. O balanceamento de carga privado é ideal para tornar seu app disponível para solicitações de fora do cluster sem o expor ao público em geral. Também é possível usar o balanceamento de carga privado para testar o acesso, o roteamento de solicitação e outras configurações para seu app antes de ele ser exposto posteriormente para o público com serviços de rede pública.

Como exemplo, suponha que você criou um balanceador de carga privado para seu app. Esse balanceador de carga privado pode ser acessado por:

  • Qualquer pod no mesmo cluster.
  • Qualquer pod em qualquer cluster na mesma conta do IBM Cloud.
  • Se você não estiver na conta do IBM Cloud, mas ainda estiver atrás do firewall da empresa, qualquer sistema por meio de uma conexão VPN com a sub-rede na qual o IP do balanceador de carga está.
  • Se você estiver em uma conta IBM Cloud diferente, qualquer sistema por meio de uma conexão VPN com a sub-rede na qual o IP do balanceador de carga estiver.
  • Em clusters clássicos, se você tiver o VRF ou o VLAN Spanning ativado, qualquer sistema que esteja conectado a qualquer uma das VLANs privadas na mesma conta do IBM Cloud.
  • Em clusters VPC:
    • Se o tráfego for permitido entre as sub-redes do VPC, qualquer sistema no mesmo VPC.
    • Se o tráfego for permitido entre VPCs, qualquer sistema que tenha acesso ao VPC no qual o cluster está.

Rede de aplicativos privados para clusters clássicos

Quando seus nós do trabalhador estiverem conectados a uma VLAN pública e a uma VLAN privada, será possível tornar seu app acessível por meio de uma rede privada apenas criando rotas privadas, NodePorts, NLBs ou configurando o Ingress. Em seguida, é possível criar políticas do Calico para bloquear o tráfego público para os serviços.

A interface de rede pública para os nós do trabalhador é protegida por configurações de política de rede do Calico predefinidas que são configuradas em cada nó do trabalhador durante a criação do cluster. Por padrão, todo o tráfego de rede de saída é permitido para todos os nós do trabalhador. O tráfego de rede de entrada está bloqueado, exceto para algumas portas. Essas portas são abertas para que a IBM possa monitorar o tráfego de rede e instalar automaticamente as atualizações de segurança para o mestre do Kubernetes e para que as conexões possam ser estabelecidas para os serviços NodePort, LoadBalancer e Ingress.

Como as políticas de rede padrão do Calico permitem o tráfego público de entrada para esses serviços, é possível criar políticas do Calico para, em vez disso, bloquear todo o tráfego público para os serviços. Por exemplo, um serviço NodePort abre uma porta em um nó trabalhador por meio do endereço IP privado e público do nó do trabalhador. Um serviço NLB com um endereço IP privado móvel abre um NodePort público em cada nó trabalhador. Deve-se criar uma política de rede preDNAT do Calico para bloquear os NodePorts públicos.

Confira os métodos a seguir para a rede de apps privados:

Características de padrões de implementação de rede para uma configuração de VLAN pública e privada
Nome Método de balanceamento de carga Caso de uso implementação
Rota Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Escolha esse método para permanecer nativo com o Red Hat OpenShift; por exemplo, é possível usar o console da web do Red Hat OpenShift para criar e gerenciar rotas.
  1. Crie um serviço ClusterIP para atribuir um endereço IP interno ao seu aplicativo.
  2. Criar um controlador Ingress que é exposto por um balanceador de carga privado.
  3. Configure uma rota Red Hat OpenShift.
  4. Personalize regras de roteamento com configurações opcionais.
NodePort Porta em um nó do trabalhador que expõe o app no endereço IP privado do trabalhador Teste o acesso privado a um app ou forneça acesso por apenas um curto período de tempo.
  1. Crie um serviço NodePort.
  2. Um serviço NodePort abre uma porta em um nó do trabalhador sobre o endereço IP privado e público do nó do trabalhador. Deve-se usar uma política de rede preDNAT do Calico para bloquear o tráfego para os NodePorts públicos.
NLB 1.0 Balanceamento de carga básico que expõe o app com um endereço IP privado Exponha rapidamente um app a uma rede privada com um endereço IP privado.
  1. Crie um serviço do NLB privado. Um NLB com um endereço IP privado móvel ainda tem uma porta de nó público aberta em cada nó do trabalhador.
  2. Crie uma política de rede preDNAT do Calico para bloquear o tráfego para os NodePorts públicos.
NLB v2.0 Balanceamento de carga do DSR que expõe o app com um endereço IP privado Exponha um app que possa receber altos níveis de tráfego para uma rede privada com um endereço IP.
  1. Complete os pré-requisitos.
  2. Crie um NLB privado 2.0 em um cluster único ou multizona. Um NLB com um endereço IP privado móvel ainda tem uma porta de nó público aberta em cada nó do trabalhador.
  3. Crie uma política de rede preDNAT do Calico para bloquear o tráfego para os NodePorts públicos.
Ingresso Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Consulte Expondo apps publicamente com o Ingress

Rede de apps privados para clusters de VPC

Para disponibilizar um aplicativo em uma rede privada somente em um cluster VPC, escolha um padrão de implementação de balanceamento de carga baseado na configuração do terminal em serviço de seu cluster: terminal em serviço de nuvem pública e privada ou somente do terminal em serviço de nuvem privada. Para cada configuração de terminal em serviço, a tabela a seguir descreve cada método de exposição de app possível, por que é possível usá-lo e como configurá-lo.

Padrões de implementação de rede privada para um cluster VPC
Nome Método de balanceamento de carga Caso de uso implementação
Rota Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Escolha esse método para permanecer nativo com o Red Hat OpenShift; por exemplo, é possível usar o console da web do Red Hat OpenShift para criar e gerenciar rotas. Crie um controlador de ingresso usando o controlador de ingresso privado padrão em clusters com um terminal em serviço de nuvem privada apenas, ou criar uma rota usando um controlador de ingresso privado customizado em clusters com um terminal em serviço em nuvem pública.
NodePort Porta em um nó do trabalhador que expõe o app no endereço IP privado do trabalhador Teste o acesso privado a um app ou forneça acesso por apenas um curto período de tempo. Criar um serviço NodePort privado .
Balanceador de carga da VPC Balanceamento de carga básico que expõe o aplicativo com um nome de host privado Exponha rapidamente um aplicativo para uma rede privada com um nome de host privado designado pelo balanceador de carga do VPC. Crie um serviço LoadBalancer privado em seu cluster. Um balanceador de carga multizonal do VPC é criado automaticamente em seu VPC, que designa um nome do host a seu serviço LoadBalancer para seu app.
Ingresso Balanceamento de carga de HTTP(S) que expõe o app com um subdomínio e usa regras de roteamento customizadas Implemente regras de roteamento customizadas e finalização de SSL para diversos apps. Crie um recurso do Ingress para o controlador do Ingress privado padrão em clusters com um terminal em serviço de nuvem privada apenas ou crie um recurso do Ingress para um controlador do Ingress privado customizado em clusters com um terminal em serviço de nuvem pública.