Com a crescente necessidade de blockchains modernas e tecnicamente avançadas, a Hyperledger Fabric emergiu como uma estrutura de blockchain robusta, de código aberto e permissionada, integrada com recursos exclusivos de gerenciamento de identidade e controle de acesso. Devido a esses atributos, a estrutura da Hyperledger é amplamente adotada para uma variedade de aplicações do setor, como a criação de dApps altamente viáveis e soluções descentralizadas de nível empresarial para setores que abrangem Web3, bancos, cadeias de suprimentos, DeFi, finanças comerciais e muito mais.
Se você planeja implantar seu aplicativo blockchain no ecossistema Hyperledger Fabric para aproveitar suas tecnologias subjacentes, precisará de uma rede Hyperledger distribuída em qualquer infraestrutura local ou em nuvem. Este guia fala sobre a implantação da rede da Hyperledger Fabric no Kubernetes, uma plataforma ideal para implantação de blockchain com uma infraestrutura de hospedagem de dApps escalável e resiliente.
Implantados no Kubernetes, os nós e redes de blockchain tornam-se fáceis de gerenciar, dimensionar e orquestrar. Além disso, o Kubernetes usa recursos com eficiência, de acordo com a carga do sistema específico da rede, resultando em baixo custo e poder de computação para criar e dimensionar aplicativos.
Agora que você entende os fundamentos da Hyperledger Fabric e do Kubernetes, é hora de discutir o processo de implantação passo a passo da rede.
Como implantar uma rede Hyperledger Fabric no Kubernetes
Você construirá o seguinte:
Fabric CA
Primeiro, você implantará uma Autoridade de Certificação (CA) da Fabric, com suporte do PostgresSQL, para gerenciar identidades.
Fabric Orderer
Em seguida, você implantará um serviço Orderer (ordenador) de vários nós de ordenação da Fabric para estabelecer consenso sobre o cluster Raft. Este serviço de ordenação da Fabric permite consenso em redes de desenvolvimento e produção.
Fabric Peer
Por fim, você implantará vários peers (pares) e os conectará a um canal. Ligaremos os peers a um banco de dados CouchDB conforme descrito na imagem abaixo:
Pré-requisitos:
Você precisa das 3 coisas a seguir para implantar sua rede Hyperledger Fabric. Além disso, você deve entender a tecnologia de conteinerização e como o Kubernetes funciona:
- Um cluster Kubernetes em funcionamento.
- Um nome de domínio para seu cluster.
- Um repositório com artefatos.
Assim que tiver o cluster, instale o controlador do Ingress. Para este guia, estamos usando o NGINX.
Implantando a rede Hyperledger Fabric no Kubernetes
Instalando o Helm Chart da Fabric CA.
Instale o Helm Chart real da Fabric CA. Execute o comando Kubectl get pods
para buscar o pod real que executa a CA. Em seguida, execute kubectl logs
para ver se o servidor da CA está em execução. Use o seguinte comando:
helm install stable/hlf-ca -n ca -namespace blockchain -f./helm_values/ca_values.yaml
CA_POD=$(kubectl get pods -n blockchain -l "app=hlfca,release=ca" -ojsonpath="{.items[0].metadata.name}")
kubectl logs -n blockchain $CA_POD | grep 'Listening on'
Como você pode ver, os valores para a CA são mais complicados.
Primeiro, defina a tag de imagem na qual você usa a Fabric v2.x ou v2.5. Além disso, implemente um Ingress. Essa abordagem permite que você acesse a autoridade de certificação fora do cluster Kubernetes.
Em seguida, defina as configurações, como a versão das ferramentas da Hyperledger, que são personalizáveis em um dos mapas de configuração no gráfico. Os mapas de configuração são abstrações do Kubernetes que armazenam valores disponibilizados ao POD.
Observe que você também deve especificar a solicitação de assinatura de certificado e uma lista de afiliação, que permanecerá vazia no cenário atual.
Por fim, adicione uma afinidade de Pod novamente. Garantimos que nosso servidor Fabric CA seja implantado na mesma máquina Kubernetes que nosso servidor PostgreSQL. Consulte as imagens abaixo para melhor visualização:
Gerando a identidade da Fabric CA
Depois que a CA começar a ser executada, registre-se na identidade da Fabric CA. Para executar o primeiro comando, use kubectl exec para verificar a existência de um certificado dentro da pasta do provedor de serviços de associação da Fabric CA.
Feito corretamente, você pode executar o comando fabric-ca-client enroll
na CA, que aponta para o Ingress da CA. Depois disso, você pode executar o Kublect get ingress
em sua máquina para obter o Ingress conectado ao serviço da Fabric CA. Este é o domínio sobre o qual falamos nos pré-requisitos.
Com esta configuração, você pode executar o comando curl e obter as informações da CA. Lembre-se de que a configuração bem-sucedida depende muito da configuração correta do TLS pelo Gerenciador de certificados. Portanto, pode ser necessário esperar mais tempo para que a configuração funcione. Use o seguinte comando para executar o comando curl:
kubectl exec -n blockchain $CA_POD -- cat/var/hyperledger/fabric-ca/msp/signcerts/cert.pem
kubectl exec -n blockchain $CA_POD -- bash -c 'fabric-ca-client
enroll -d -uhttp://$CA_ADMIN:$CA_PASSWORD@$SERVICE_DNS:7054′
CA_INGRESS=$(kubectl get ingress -n blockchain -l "app=hlfca,release=ca" -ojsonpath="{.items[0].spec.rules[0].host}")
curl https://$CA_INGRESS/cainfo
Obtendo o material criptográfico
Depois de configurar e instalar sua CA, você pode transferir o certificado ou o servidor CA para sua máquina usando o binário do cliente Fabric CA. Por exemplo, se estiver usando um Mac, use o Homebrew para instalá-lo.
Em seguida, use Kubectl exec
para executar o comando register na Fabric CA, que registra a organização responsável por hospedar os Orderers e os Peers.
Após o registro bem-sucedido, você pode usar o cliente Fabric CA novamente para se inscrever na identidade e receber sua chave privada e seu certificado. Como essa identidade é a do administrador, executaremos o seguinte comando para copiar o certificado do signcerts para a pasta admincerts.
FABRIC_CA_CLIENT_HOME=./config fabric-ca-client getcacert -uhttp://$CA_INGRESS -M ./AidTechMSP
kubectl exec -n blockchain $CA_POD -- fabric-ca-client register -id.name org-admin -id.secret OrgAdm1nPW -id.attrs 'admin=true:ecert'
FABRIC_CA_CLIENT_HOME=./config fabric-ca-client enroll -uhttp://org-admin:OrgAdm1nPW@$CA_INGRESS -M ./AidTechMSP
mkdir -p ./config/AidTechMSP/admincerts
cp ./config/AidTechMSP/signcerts/* ./config/AidTechMSP/admincerts
Salvando material criptográfico no Kubernetes
Forneça o certificado da autoridade criptografada para estabelecer uma conexão TLS e se comunicar com a CA configurada. Isso porque o cliente Fabric CA verifica se o certificado apresentado durante a conexão corresponde ao associado ao servidor CA. Como seus aplicativos utilizarão o certificado e a chave, você deve empregar um comando kubectl create secret generic
para incluir o arquivo como um segredo no serviço Kubernetes:
ORG_CERT=$(ls ./config/AidTechMSP/admincerts/cert.pem)
kubectl create secret generic -n blockchain hlf-org-admincert-from-file=cert.pem=$ORG_CERT
ORG_KEY=$(ls ./config/AidTechMSP/keystore/*_sk)
kubectl create secret generic -n blockchain hlf-org-adminkey-from-file=key.pem=$ORG_KEY
CA_CERT =$(ls ./config/AidTechMSP/cacert/*.pem)
kubectl create secret generic -n blockchain hlf-ca-cert-from-file=cert.pem=$CA_CERT
Gerando Gênesis e Canal
Agora você pode executar o configtx Gen2. É utilizado duas vezes dentro dos dois perfis criados para gerar um bloco gênesis para os orderers e uma cadeia de transações para os peers. Portanto, você tem dois segredos (secrets) do Kubernetes para armazenar esses itens no cluster.
cd ./config
configtxgen -profile OrdererGenesis -outputBlock ./genesis.block
configtxgen -profile MyChannel -channelID mychannel -outputCreateChannelTx ./mychannel.tx
kubectl create secret generic -n blockchain hlf-genesis -fromfile=genesis.block
kubectl create secret generic -n blockchain hlf-channel -fromfile=mychannel.tx
Fabric Orderer
Após a configuração bem-sucedida de uma Fabric CA totalmente funcional, é hora de passar para o Orderer. A seguir estão as etapas envolvidas na execução do Orderer.
- Instalando o serviço de ordenação Raft
- Configurando a Identidade do Orderer
- Salvando o material criptográfico do Orderer no Kubernetes
- Instalando o Helm Chart do Fabric Orderer
Vamos discutir todas essas etapas uma a uma:
Configurando o cluster Raft
A configuração do cluster Raft é necessária em dois locais:
Configuração local
Governa aspectos relacionados ao nó, incluindo comunicação TLS, armazenamento de arquivos e comportamento de replicação.
Configuração do canal
Define a associação do cluster Raft para o canal associado e os parâmetros específicos do protocolo, como frequência de pulsação (heartbeat), tempos limite de líder, etc.
Como cada canal tem sua própria instância para executar o protocolo Raft, consulte o nó Raft na configuração dos canais pertencentes a ele. Adicione servidores específicos de canal e certificados TLS de cliente à configuração de canal para isso. Essa ação garantirá que, quando os nós receberem mensagens de qualquer canal, eles possam confirmar a identidade do nó que envia a mensagem.
Consulte a seção abaixo do configtx.yaml que menciona três nós raft no canal:
Consenters:
- Host: raft0.example.com
Port: 7050
ClientTLSCert: path/to/ClientTLSCert0
ServerTLSCert: path/to/ServerTLSCert0
- Host: raft1.example.com
Port: 7050
ClientTLSCert: path/to/ClientTLSCert1
ServerTLSCert: path/to/ServerTLSCert1
- Host: raft2.example.com
Port: 7050
ClientTLSCert: path/to/ClientTLSCert2
ServerTLSCert: path/to/ServerTLSCert2
Uma vez concluída a configuração do canal, as ferramentas configtx.yaml lerão os caminhos dos certificados TLS e, assim, substituirão os caminhos dos bytes correspondentes dos certificados.
Configurando a Identidade do Orderer
Agora, você pode configurar a Identidade do Orderer. Primeiro, use kubectl exec
para se conectar à fabric-ca e registrar a identidade do Orderer com uma CA. Em seguida, obtenha os materiais criptográficos para identificar o Orderer ao inscrevê-lo. Para esta instância, colocaremos uma senha fictícia “ord${NUM}_pw,” mas em uma implantação real, é melhor usar uma string complexa (por exemplo, alfanumérica de comprimento de pelo menos 12).
Aqui, você trabalhará com o primeiro Orderer; se você deseja instalar o segundo Orderer, altere a exportação inicial e defina o NUM para 2 no seguinte comando:
export NUM=1
kubectl exec $CA_POD -n blockchain -- fabric-ca-client register -id.name ord${NUM} -id.secret ord${NUM}_pw -id.type orderer
FABRIC_CA_CLIENT_HOME=./config fabric-ca-client enroll -d -u https://ord${NUM}:ord${NUM}_pw@$CA_INGRESS -M ord${NUM}_MSP
Salvando o material criptográfico do Orderer no Kubernetes
Depois de criar o material criptográfico para o Orderer, você pode armazená-lo no Kubernetes para usá-lo durante a implantação do Helm chart. Abaixo está a ilustração de como salvar o certificado e a chave do Orderer.
NODE_CERT=$(ls ./config/ord_${NUM}_MSP/signcerts/*.pem)
kubectl create secret generic -n blockchain hlf-ord${NUM}-idcert -from-file=cert.pem=$NODE_CERT
NODE_KEY=$(ls ./config/ord_${NUM}_MSP/keystore/*_sk)
kubectl create secret generic -n blockchain hlf-ord${NUM}-idkey -from-file=key.pem=$NODE_KEY
Instalando o Helm Chart do Fabric Orderer
Agora você pode instalar os Orderers reais para verificar se eles foram inicializados. Use o seguinte comando:
helm install stable/hlf-ord -n ord${NUM} -namespace blockchain -f./helm_values/ord${NUM}_values.yaml
ORD_POD=$(kubectl get pods -n blockchain -l "app=hlf-ord,release=ord${NUM}" -o jsonpath="{.items[0].metadata.name}")
kubectl logs -n blockchain $ORD_POD | grep 'completeInitialization'
Além disso, defina o tipo de consenso, o serviço de Ordenação Raft e o ID MSP do provedor de serviços de associação da organização. Por fim, especifique um conjunto de segredos necessários para conectar-se ao Certificado de Autoridade adequadamente, como o segredo caServerTls, o segredo do bloco gênesis (hlf–genesis neste exemplo) e o certificado de administrador para a organização.
Em seguida, você pode usar o comando kubectl get pods
para obter o Pod do Orderer e verificar se a ordenação foi iniciada usando kubectl logs
durante a filtragem para a string completeInitialization
. Isso conclui a criação de um serviço básico de ordenação que usa o Raft.
Fabric Peer
Finalmente, é hora de instalar o Fabric Peer, que mantém o registro completo dos blocos. A instalação envolve as várias etapas a seguir;
- Instalando o Helm Chart do CouchDB
- Configurando a identidade do Peer
- Salvando o material criptográfico do Peer no Kubernetes
- Instalando o Helm Chart do Fabric Peer
- Criando o canal
- Buscando o canal e ingressando nele
Instalando o Helm Chart do CouchDB
A primeira etapa da instalação do banco de dados CouchDB é semelhante à instalação do chart do PostgreSQL. Após a implantação, use os registros do Kubernetes para garantir que ele esteja em execução.
O arquivo de valores (values) é direto nesta instância, especificando a versão do Hyperledger carsDB e, novamente, especifica a persistência para que o banco de dados couchDB mantenha os dados e a antiafinidade para que os pods do couchDB sejam implantados em diferentes máquinas Kubernetes.
Configurando a identidade do Peer
Recupere a CA_PASSWORD para configurar a identidade do peer. É uma senha única gerada automaticamente pelo chart. Em seguida, registre o peer na autoridade certificadora, como fizemos com o Orderer, especificando um tipo de ID diferente (neste caso, um peer). O peer tentará se registrar com a CA periodicamente até que seja bem-sucedido. Depois disso, você verá as strings aparecendo nos registros.
kubectl exec $CA_POD -n blockchain -- fabric-ca-client register -id.name peer${NUM} -id.secret peer${NUM}_pw -id.type peer
FABRIC_CA_CLIENT_HOME=./config fabric-ca-client enroll -d -u https://peer${NUM}:peer${NUM}_pw@$CA_INGRESS -M peer${NUM}_MSP
Salvando o material criptográfico do Peer no Kubernetes
Como o Orderer, salve o material criptográfico do Peer no Kubernetes. Mais uma vez, salve o certificado e a chave do Peer usando o seguinte comando:
NODE_CERT=$(ls ./config/peer_${NUM}_MSP/signcerts/*.pem)
kubectl create secret generic -n blockchain hlf-peer${NUM}-idcert -from-file=cert.pem=$NODE_CERT
NODE_KEY=$(ls ./config/peer_${NUM}_MSP/keystore/*_sk)
kubectl create secret generic -n blockchain hlf-peer${NUM}-idkey -from-file=key.pem=$NODE_KEY
Instalando o Helm Chart do Fabric Peer
Agora, instale o Fabric Peer executando o seguinte comando:
helm install stable/hlf-peer -n peer${NUM} -namespace blockchain -f ./helm_values/peer${NUM}_values.yaml
PEER_POD=$(kubectl get pods -n blockchain -l "app=hlf-peer,release=peer${NUM}" -o jsonpath="{.items[0].metadata.name}")
kubectl logs -n blockchain $PEER_POD | grep 'Starting peer
O arquivo de valores para o peer é semelhante ao arquivo de valores do Orderer, pois menciona o endereço 'fabric-ca' e o nome de usuário do peer na autoridade de certificação. Ele também especifica que você está usando o CouchDB e o nome da implantação do Helm do CouchDB. Certifique-se de anotar os segredos de que precisamos, como o segredo ca-TLS, que você deve comunicar com segurança; o segredo do canal, especificando a transação do canal que permitirá ao peer criar e ingressar nos canais; e a chave do certificado de administrador da organização, que também é necessária para ingressar no canal para solicitar permissão para a rede.
Criando o canal
Depois de criar o primeiro peer, crie o canal usando o comando abaixo. Para isso, você precisará do endereço do Orderer, um nome relevante para o canal e um local para a transação canalizada.
kubectl exec -n blockchain $PEER_POD -- peer channel create -o ord1-hlford.
blockchain.svc.cluster.local:7050 -c mychannel -f/hl_config/channel/mychannel.tx
Buscando o canal e ingressando nele
Depois de criar o canal, execute o comando fetch e ingresse nele em todos os peers que você criou. Faça isso executando o comando peer channel fetch config
dentro do Peer. Em seguida, execute peer channel join
dentro de cada contêiner de peer. Por fim, execute peer channel list
para verificar se o Peer ingressou no canal.
kubectl exec -n blockchain $PEER_POD -- peer channel fetch
config /var/hyperledger/mychannel.block -c mychannel -o ord1-hlford.blockchain.svc.cluster.local:7050
kubectl exec -n blockchain $PEER_POD -- bash -c
'CORE_PEER_MSPCONFIGPATH=$ADMIN_MSP_PATH
peer channel join -b /var/hyperledger/mychannel.block'
kubectl exec -n blockchain $PEER_POD -- peer channel list
Pronto! Se você seguiu todas as etapas corretamente, sua rede Hyperledger no Kubernetes será implantada com sucesso. Aproveite sua rede para executar nós, criar dApps ou aplicativos Web3 personalizados.
Mude para a implantação rápida e sem código do Hyperledger Fabric com o Zeeve
O Zeeve oferece uma poderosa plataforma de infra-estrutura Web3 para implantar seus nós Hyperledger Fabric e redes em minutos. O Zeeve oferece suporte às versões LTS 1.4x e a mais recente 2.2x para fornecer uma infraestrutura atualizada para os nós da Hyperledger Fabric. Como uma infraestrutura Blockchain de baixo código de nível empresarial, o Zeeve permite fácil implantação, monitoramento e gerenciamento de nós e redes blockchain em protocolos públicos e autorizados.
Aproveitando a pilha Web3 sem código do Zeeve, empresas, startups Blockchain, empresas de consultoria Blockchain e desenvolvedores Web3 podem implantar rapidamente nós de Blockchain e aplicativos descentralizados e gerenciá-los com monitoramento 24 horas por dia, 7 dias por semana, análises avançadas e alertas em tempo real. Para saber mais sobre o Zeeve, visite nosso Centro de Desenvolvedores ou junte-se a nós no Twitter e Telegram.
Artigo escrito por Sankalp Sharma. Traduzido por Marcelo Panegali.
Latest comments (0)