Setup TOTVS Gateway local clsuter

Requisitos

Overview

Linux

No linux vamos replicar o uso comum em clouds de load balancer, MetalLB vai fazer esse papel distribuindo os IPs para os pods do cluster. E haverá um gateway para expor acesso via esse LB. Linux Local

Windows

No windows, como o WSL não provê os IPs de pods para o windows, precisamos conectar no cluster via NodePort. Replicando a porta de entrada do nó via NAT e acessando via portfowarding. Windows Local

Instalação

Primeiro clone o repositório totvs-gateway-infra-local. Depois siga os passos de acordo com seu SO.

Windows

  1. Crie o cluster Kind baseado no .yaml que tem no repositorio
kind create cluster --config "{PATH_REPOSITORY_DIR}\kind\kind-config.yaml"
  1. Aplique o helmfile com a label phase=crds
cd {PATH_REPOSITORY_DIR}\install
helmfile apply -e local-win -l phase=crds
  1. Agora aplique o helmfile sem labels
cd {PATH_REPOSITORY_DIR}\install
helmfile apply -e local-win 
  1. Agora busque o service public-gateway-istio e altere a porta do nó para(nodePort) 30080
- name: http
  protocol: TCP
  appProtocol: http
  port: 80
  nodeport: 30080 #Garanta 30080 aqui!
  1. Abra o arquivo C:\windows\system32\drivers\etc\hosts e adicione as linhas
127.0.0.1  api.gateway.local.test
127.0.0.1  gateway.local.test

Linux

  1. Crie o cluster Kind bas eado no .yaml que tem no repositorio
kind create cluster --config "{PATH_REPOSITORY_DIR}/kind/kind-config.yaml"
  1. verifique qual o CIDR da networking disponibilizada pelo docker
docker network inspect -f '{{(index .IPAM.Config 0).Subnet}}' kind
    • Se o retorno for diferente de 172.18.0.0/16 altere o ipRange no arquivo ./install/envs/local-ubuntu/totovs-gateway-server.yaml para uma faixa que se aloque dentro do CIDR disponibilizado pelo seu docker.
  1. Aplique o helmfile com a label phase=crds

cd {PATH_REPOSITORY_DIR}/install
helmfile apply -e local-win -l phase=crds
  1. Agora aplique o helmfile sem labels
cd {PATH_REPOSITORY_DIR}/install
helmfile apply -e local-win 
  1. Busque nos services do cluster o service public-gateway-istio e veja qual IP está na propriedade EXTERNAL_IP. Abra o arquivo /etc/hosts e adicione as linhas
{SEU_EXTERNAL_IP}  api.gateway.local.test
{SEU_EXTERNAL_IP}  gateway.local.test

Upload Docker Images locais para o cluster

Para subir uma imagem local, buildada na sua máquina e utilizar no cluster use o seguinte comando:

kind load docker-image minha-imagem:tag --name totvs-gateway

Setup Redis insight para ver dados no valkey

Para ver dados no valkey podemos utilizar uma imagem do redis insight direto no cluster.

  1. utilizando helm instale o redis insight no seu cluster
$ helm repo add redisinsight https://raw.githubusercontent.com/hansehe/redisinsight-helm/master/helm/charts
$ helm install redisinsight redisinsight/redisinsight -n valkey
  1. depois, com o pod redisinsight já executando faça um portfowarding para o serviço dele
kubectl port-forward svc/redisinsight 5540:5540 -n valkey
  1. Na página inicial busque por "Add connection details manually"
  2. Para adicionar a conexão, informe:
  3. host: valkey-primary
  4. port: 6379
  5. database alias: valkey:6379
  6. username: (deixe em branco)
  7. password: (verifique no arquivo de configurações do valkey)
  8. clique para adicionar a conexão e está pronto!