Kategorie
Uncategorized

Jak odpalić Hyper Ledger jedną komendą

Krótka historia o tym jak odpalić HLF na Google Cloud Platform, przy pomocy jednej komendy.

No to zaczynamy:

Najpierw zainstaluj klienta chmury google – https://cloud.google.com/sdk/docs/quickstarts

1. zaloguj się przez:
gcloud init

2. zainstaluj klienta k8s:
gcloud install kubectl

3. utwurz nowy klaster k8s na google cloud

4. pobierz dane dla kubectl do rozmawiania z klastrem:
gcloud container clusters get-credentials hlf –zone europe-west1-d

5. zainstaluj helma, narzędzie do łatwego stawiania aplikacji na k8s (używam macOS, dlatego używam brew do instalacji narzędzi, jeśli masz inny system użyj innego menadżera pakietów):
brew install helm

6. zainstaluje argo, narzędzie do odpalania złożonych procesów na k8s:
brew tap argoproj/tap
brew install argoproj/tap/argocd

7. zainstaluj narzędzia do hyperledger, przydadzą się do generowania certyfikatów i bloku genesis:
brew tap hyperledger/fabric
brew install fabric-tools@1.4.0

8. i jeszcze 2 narzędzia, jedno do ogarniania JSONa a drugie do YAMLa, przydadzą się do skryptów:
brew install python-yq
brew install jq

9. sklonuj repozytorium ze skryptami do stawiania HLFa
git clone git@github.com:APGGroeiFabriek/PIVT.git

10. w repozytorium wejdź do katalogu fabric-kube i odpal skrypt który wygeneruj co trzeba.
Certyfikaty i blok genesis:
./init.sh ./samples/simple/ ./samples/chaincode/

11. Tak to jest ta jedna komenda do stawiania całej sieci 🙂
helm install hlf-kube ./hlf-kube -f samples/simple/network.yaml -f samples/simple/crypto-config.yaml

Mamy to! Sieć już działa
Teraz możemy pobawić się dalej, np utworzyć kanał do wysyłania transakcji. W HLF każda transakcja jest przypisana do jakiegoś kanału.

12. Do stworzenia kanałów przyda ci się zainstalowane już wcześniej argo, ale żeby działało trzeba zainstalować jest też na k8s:
kubectl create namespace argo
kubectl apply -n argo -f https://raw.githubusercontent.com/argoproj/argo/stable/manifests/install.yaml
kubectl create clusterrolebinding YOURNAME-cluster-admin-binding –clusterrole=cluster-admin –user=YOUREMAIL@gmail.com

13. Teraz możemy stworzyć nowy kanał, na który będziemy mogli wysyłać transakcje:
helm template channel-flow/ -f samples/simple/network.yaml -f samples/simple/crypto-config.yaml | argo submit –

argo utworzy nowego poda do wykonania procesu tworzenia kanału dla peerów, możesz podejrzeć logi używając komendy:

kubectl logs hlf-channels-pcgtf-2308138487 -c main

Zamiast hlf-channels-pcgtf-2308138487 wstaw nazwę swojego poda

Logi powinny wyglądać mniej więcej tak:

2020-06-15 21:22:03.859 UTC [msp] getPemMaterialFromDir -> WARN 001 Failed reading file /etc/hyperledger/fabric/msp/admincerts/cert.pem: no pem content for file /etc/hyperledger/fabric/msp/admincerts/cert.pem
2020-06-15 21:22:03.868 UTC [channelCmd] InitCmdFactory -> INFO 002 Endorser and orderer connections initialized
2020-06-15 21:22:03.895 UTC [cli.common] readBlock -> INFO 003 Received block: 0
Channel common exists
— Channel common already exists, exiting with 0

14. Na koniec wrzucimy na sieć chain code, czyli smart contract HLF:

helm template chaincode-flow/ -f samples/simple/network.yaml -f samples/simple/crypto-config.yaml | argo submit –

znów możesz podejrzeć wynik sprawdzając logi na podzie

kubectl logs hlf-chaincodes-wx6ck-3552761254 -c main

powinny wyglądać mniej więcej tak:

2020-06-15 21:25:03.199 UTC [msp] getPemMaterialFromDir -> WARN 001 Failed reading file /etc/hyperledger/fabric/msp/admincerts/cert.pem: no pem content for file /etc/hyperledger/fabric/msp/admincerts/cert.pem
Chaincode very-simple version 1.0 is not installed to peer
— result is: 99
— Chaincode very-simple version 1.0 is not installed to peer peer0, will install..
2020-06-15 21:25:03.714 UTC [msp] getPemMaterialFromDir -> WARN 001 Failed reading file /etc/hyperledger/fabric/msp/admincerts/cert.pem: no pem content for file /etc/hyperledger/fabric/msp/admincerts/cert.pem
2020-06-15 21:25:03.726 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 002 Using default escc
2020-06-15 21:25:03.726 UTC [chaincodeCmd] checkChaincodeCmdParams -> INFO 003 Using default vscc
2020-06-15 21:25:03.732 UTC [chaincodeCmd] install -> INFO 004 Installed remotely response

Niedługo dodam do posta zmontowane video, pokazujące krop po kroku jak postawić sieć