Pular para conteúdo

Acervo original preservado

Este conteúdo histórico pode conter propostas ou instruções anteriores ao checkout atual. Consulte Arquitetura para o comportamento documentado e Tutoriais para as ressalvas operacionais.

Ambiente local e propostas experimentais — sem adoção corporativa

Istio e Kubernetes Gateway API citados neste acervo são experimentos exclusivos do ambiente local. Recomendações históricas não representam decisões aprovadas nem a exposição oficial de DEV, STAGING ou PROD. Helm e Helmfile são ferramentas locais. Consulte Estudos e experimentos.

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"
    
  2. Aplique o helmfile com a label phase=crds
    cd {PATH_REPOSITORY_DIR}\install
    helmfile apply -e local-win -l phase=crds
    
  3. Agora aplique o helmfile sem labels
    cd {PATH_REPOSITORY_DIR}\install
    helmfile apply -e local-win 
    
  4. 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!
    
  5. 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"
    
  2. 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.
  3. Aplique o helmfile com a label phase=crds

    cd {PATH_REPOSITORY_DIR}/install
    helmfile apply -e local-ubuntu -l phase=crds
    

  4. Agora aplique o helmfile sem labels

    cd {PATH_REPOSITORY_DIR}/install
    helmfile apply -e local-ubuntu 
    

  5. 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
    
  2. 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
    
  3. Na página inicial busque por "Add connection details manually"
  4. Para adicionar a conexão, informe:
  5. host: valkey-primary
  6. port: 6379
  7. database alias: valkey:6379
  8. username: (deixe em branco)
  9. password: (verifique no arquivo de configurações do valkey)
  10. clique para adicionar a conexão e está pronto!