Guia de Instalação

Este documento tem como objetivo orientar a instalação da solução Hamsa Privacy em ambiente Kubernetes. O passo a passo a seguir inclui a preparação do ambiente, configuração de namespaces, registro de container, download dos arquivos de instalação e execução dos scripts de demonstração. Todas as instruções foram elaboradas para garantir que o processo ocorra de forma padronizada, segura e eficiente.

Pré-requisitos

Estar conectado a um cluster Kubernetes configurado (acesso e permissões).

  • Helmfile instalado (instalação oficial).
  • Helm instalado (ver instalação oficial).
  • Kubectl configurado para acessar seu cluster Kubernetes.
  • Node.js e npm instalados (necessários para o deploy dos smart contracts).

1. Criação de Namespaces

Para garantir que a instalação ocorra com sucesso, crie os seguintes namespaces:


node1

node2

node3

node4

browse

infra

Execute o comando abaixo para criar todos os namespaces de uma só vez:

kubectl create namespace node1; \\\
kubectl create namespace node2; \
kubectl create namespace node3; \
kubectl create namespace node4; \
kubectl create namespace browse; \
kubectl create namespace infra

2. Cadastrando o Container Registry em Cada Namespace

É necessário criar um secret do tipo docker-registry em cada namespace listado acima. O exemplo abaixo mostra a criação do secret apenas para o namespace node1. Substitua USER e PASSWORD pelas credenciais que **serão enviados no dia de instalação pelo time da Hamsa** no script abaixo:

kubectl create secret docker-registry acr-secret \\\
\--namespace=node1 \
\--docker-server=hamsaprivacyacrdev.azurecr.io \
\--docker-username=USER \
\--docker-password=PASSWORD
📘

Importante:

Repita o comando para cada namespace (node2, node3, node4, browse e infra), ajustando o parâmetro --namespace conforme necessário.


3. Baixando o Projeto

Você deverá receber duas pastas:

  1. Helmfiles de instalação (contêm especificações do que será instalado no cluster Kubernetes).
  2. Scripts de demonstração (contêm cenários de testes prontos, a serem executados para demonstrar o funcionamento da solução).

Os arquivos de Helmfile e os scripts de demonstração serão enviados no dia da instalação.


4. Estrutura dos Diretórios dos Helmfiles

/envs
├── 1
├── 2
├── 3
├── 4
├── browser
└── infra

Cada pasta pasta numerada representa o nó de uma instituição, para simularmos o ambiente completo, iremos instalar todas as 4, sendo cada uma delas

  • O 1 sendo o Banco Central
  • O 2 sendo a Selic
  • O 3 sendo Banco A
  • O 4 sendo Banco B

5. Configuração Inicial

5.1 Configuração da L1 Blockchain no projeto Demo

Nos arquivos de demonstração:

  1. Edite o arquivo hardhat.config.js:
    1. Altere o parâmetro server_L1_besu para o endereço da sua Layer 1.
    2. Garanta que a primeira conta configurada possua saldo suficiente para o deploy dos smart contracts.
    3. Ajuste parâmetros de rede (ChainID e outras configurações personalizadas, caso necessário).
  2. Realize o deploy dos smart contracts executando:
npm run p2-deploy-L1-all
  1. Copie as informações geradas no output (endereços dos contratos). Esses dados serão usados para configurar e instalar os nós, além de serem necessários nas demos.

5.2 Atualizando as Configurações do Kubernetes nos Helmfiles

Agora iremos alterar os Helmfiles de instalação

5.2.1 Arquivo /envs/qa-envs.yaml

Atualize os seguintes parâmetros usando os valores obtidos no passo anterior:

L1-url: <URL configurada em hardhat>  
dvp-L1url: <mesma URL do parâmetro acima>
L1-chainId: <ChainID configurado em hardhat>
DVP_L1MATCHSCADDRESS: <dvp_match_address>
DVP_L1TMSCADDRESS: <l1_tmsc_address>
ROLLUP_VERIFYCONFIG_VERIFYCONTRACT: <l1_verifier_address>
L1_EVENTADDRESS: <l1_event_address>

5.2.2 Arquivos /envs/{1,2,3,4}/values-app-envs.yaml

Verifique e ajuste os seguintes parâmetros:

L1_DEPLOYERKEYS: <Chaves com saldo para interação com L1-verifier>  
DVP_L1MATCHSUBMITTERKEYS: <Chaves com saldo para dvp-match>

Assegure-se de que as chaves configuradas possuam saldo suficiente, caso a blockchain tenha taxas.

5.3 Configuração das Chaves de Settlement (Assets)

Verifique se as chaves (private keys) estão corretamente configuradas nos arquivos correspondentes a cada instituição:

  • CentralBank: /envs/1/values-app-msft-node.yaml
  • Selic:/envs/2/values-app-msft-node.yaml
  • BankA: /envs/3/values-app-msft-node.yaml
  • BankB: /envs/4/values-app-msft-node.yaml

Cada instituição deve ter sua própria chave para evitar conflitos.


6. Deploy dos Serviços com Helmfile

Para cada diretório em /envs, execute o helmfile install conforme as instruções abaixo.

6.1 Deploy do Central Bank (envs/1)

cd envs/1\
helmfile install

Nota: O Rollup está desativado por padrão para economia de recursos. Se necessário, descomente node-rollup, prover e mongoDb no arquivo helmfile.yaml.

6.2 Deploy do Selic (envs/2)

cd envs/2\
helmfile install

6.3 Deploy do BankA (envs/3)

cd envs/3\
helmfile install

6.4 Deploy do BankB (envs/4)

cd envs/4\
helmfile install

Nota: O Rollup também está desativado por padrão aqui. Descomente se necessário.

6.5 Deploy do Browser (Explorador dos Nós 3 e 4)

cd envs/browser\
helmfile install

Esse browser é utilizado para explorar os nós do BankA e BankB.

6.6 Deploy da Infraestrutura (Prometheus/Grafana/Kafka)

Apenas o Kafka é de instalação obrigatória.

Caso deseje instalar métricas detalhadas (Prometheus e Grafana), abra o arquivo helmfile.yaml em /envs/infra e descomente as referências a prometheus e grafana.

cd envs/infra\
helmfile install

Por padrão, somente Kafka está habilitado.


7. Validação Pós-deploy

  • Valide se os serviços estão em execução:
kubectl get pods
  • Opcionalmente, acesse o Grafana e o Prometheus (caso instalados) para validação de métricas e performance.

8. Scripts de Demonstração

  • Após a instalação e configuração, utilize os Scripts de demonstração para rodar cenários de teste que exemplificam o funcionamento da solução.
  • Esses scripts serão enviados separadamente, juntamente com instruções detalhadas.