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.
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.
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.
|
|
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.
|
|
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.
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:
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. |
|
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. |
|
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. |
|
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. |
|
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.
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. |