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,browseeinfra), ajustando o parâmetro--namespaceconforme necessário.
3. Baixando o Projeto
Você deverá receber duas pastas:
- Helmfiles de instalação (contêm especificações do que será instalado no cluster Kubernetes).
- 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:
- Edite o arquivo
hardhat.config.js:- Altere o parâmetro
server_L1_besupara o endereço da sua Layer 1. - Garanta que a primeira conta configurada possua saldo suficiente para o deploy dos smart contracts.
- Ajuste parâmetros de rede (ChainID e outras configurações personalizadas, caso necessário).
- Altere o parâmetro
- Realize o deploy dos smart contracts executando:
npm run p2-deploy-L1-all
- 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
/envs/qa-envs.yamlAtualize 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
/envs/{1,2,3,4}/values-app-envs.yamlVerifique 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 emongoDbno arquivohelmfile.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.
Updated 5 months ago
