Data: 15/09/22
Autores:
1.João Batista da Silva Junior (Assessor)
2.Michel Farias Ferreira (Assessor)
Esse documento tem o intuito de exemplificar a configuração utilizada para permitir que o banco Mongo do projeto Wekan tenha o acesso externo disponibilizado.
Fez-se necessário realizar o estudo para atender a uma demanda solicitada pela CAGD.
O projeto solicitado pela CAGD para ter acesso externo é o Wekan, especificamente o banco Mongo que está disponibilizado o OCP.
O OpenShift Container Platform oferece suporte ao encaminhamento de porta para pods. Foi realizado a tentativa de disponibilização no Openshift
Você pode usar a CLI para encaminhar uma ou mais portas locais para um pod. Isso permite que você escute em uma determinada porta ou porta aleatória localmente e tenha dados encaminhados de e para determinadas portas no pod.
O suporte para encaminhamento de porta está embutido na CLI:
$ oc port-forward [<local_port>:]<remote_port> […[<local_port_n>:]<remote_port_n>]
A CLI escuta em cada porta local especificada pelo usuário, encaminhando usando o protocolo descrito abaixo.
As portas podem ser especificadas usando os seguintes formatos:
5000
O cliente escuta na porta 5000 localmente e encaminha para 5000 no pod.
6000:5000
O cliente escuta na porta 6000 localmente e encaminha para 5000 no pod.
:5000 ou 0:5000
O cliente seleciona uma porta local livre e encaminha para 5000 no pod.
O OpenShift Container Platform lida com solicitações de redirecionamento de porta de clientes. Ao receber uma solicitação, o OpenShift Container Platform atualiza a resposta e aguarda que o cliente crie fluxos de encaminhamento de porta. Quando o OpenShift Container Platform recebe um novo fluxo, ele copia os dados entre o fluxo e a porta do pod.
Arquitetonicamente, há opções para encaminhar para a porta de um pod. A implementação compatível do OpenShift Container Platform invoca-se diretamente no host do nó para inserir o namespace de rede do pod e, em seguida, invoca soquete para copiar dados entre o fluxo e a porta do pod. No entanto, uma implementação personalizada pode incluir a execução de um pod auxiliar sentir que executa e soquete, para que esses binários não precisem ser instalados no host.
Você pode usar a CLI para encaminhar uma ou mais portas locais para um pod.
Procedimento
Use o seguinte comando para escutar na porta especificada em um pod:
$ oc port-forward [<local_port>:]<remote_port> […[<local_port_n>:]<remote_port_n>]
Por exemplo:
Use o seguinte comando para escutar em portas 5000 e 6000 localmente e encaminhar dados de e para portas 5000 e 6000 no pod:
$ oc port-forward 5000 6000
Saída de exemplo
Forwarding from 127.0.0.1:5000 -> 5000
Forwarding from [::1]:5000 -> 5000
Forwarding from 127.0.0.1:6000 -> 6000
Forwarding from [::1]:6000 -> 6000
Use o seguinte comando para escutar na porta 8888 localmente e encaminhar 5000 no pod:
$ oc port-forward 8888:5000
Saída de exemplo
Forwarding from 127.0.0.1:8888 -> 5000
Forwarding from [::1]:8888 -> 5000
Use o seguinte comando para escutar em uma porta livre localmente e encaminhar 5000 no pod:
$ oc port-forward :5000
Saída de exemplo
Forwarding from 127.0.0.1:42390 -> 5000
Forwarding from [::1]:42390 -> 5000
Ou:
$ oc port-forward 0:5000
Os clientes iniciam o encaminhamento de porta para um pod emitindo uma solicitação ao servidor da API do Kubernetes:
/proxy/nodes/<node_name>/portForward//
Na URL acima:
<node_name>é o FQDN do nó.
é o namespace do pod de destino.
é o nome do pod de destino.
Por exemplo:
/proxy/nodes/node123.openshift.com/portForward/myns/mypod
Depois de enviar uma solicitação de encaminhamento de porta ao servidor da API, o cliente atualiza a conexão para uma que suporte fluxos multiplexados; a implementação atual usa o Hypertext Transfer Protocol Versão 2 (HTTP/2) .
O cliente cria um fluxo com o porte cabeçalho que contém a porta de destino no pod. Todos os dados gravados no fluxo são entregues por meio do kubernetes ao pod e à porta de destino. Da mesma forma, todos os dados enviados do pod para essa conexão encaminhada são entregues de volta ao mesmo fluxo no cliente.
O cliente fecha todos os fluxos, a conexão atualizada e a conexão subjacente quando termina com a solicitação de encaminhamento de porta.
Tal estudo levou à configuração do Openshift OCP para permitir acesso ao banco do Wekan. Conforme a urgência, não houve tempo para finalizar a demanda.
Outra alternativa foi mudar o ambiente do Wekan no Portainer e disponibilizar o banco Mongo lá o que facilitou na forma de disponibilizar o acesso externo ao banco.