forked from TrueCloudLab/frostfs-node
[#309] Add configuration for storage node testnet deployment
Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
parent
0690a54299
commit
6b41f399d0
4 changed files with 184 additions and 0 deletions
21
Dockerfile.storage-testnet
Normal file
21
Dockerfile.storage-testnet
Normal file
|
@ -0,0 +1,21 @@
|
|||
FROM golang:1.14-alpine as basebuilder
|
||||
RUN apk add --update make bash
|
||||
|
||||
FROM basebuilder as builder
|
||||
ARG BUILD=now
|
||||
ARG VERSION=dev
|
||||
ARG REPO=repository
|
||||
WORKDIR /src
|
||||
COPY . /src
|
||||
|
||||
RUN make bin/neofs-node
|
||||
|
||||
# Executable image
|
||||
FROM scratch AS neofs-node
|
||||
|
||||
WORKDIR /
|
||||
|
||||
COPY --from=builder /src/bin/neofs-node /bin/neofs-node
|
||||
COPY --from=builder /src/config/testnet/config.yml /config.yml
|
||||
|
||||
CMD ["neofs-node", "--config", "/config.yml"]
|
93
config/testnet/README.md
Normal file
93
config/testnet/README.md
Normal file
|
@ -0,0 +1,93 @@
|
|||
# NEO testnet-preview4 storage node configuration
|
||||
|
||||
There is a prepared configuration for NeoFS storage node deployment in
|
||||
NEO testnet-preview4. The Easiest way to deploy storage node is to use prepared
|
||||
docker image of storage node and run it with docker-compose.
|
||||
|
||||
## Build image
|
||||
|
||||
To build custom neofs-storage node image for NEO testnet-preview4:
|
||||
|
||||
```
|
||||
neofs-node$ make image-storage-testnet
|
||||
...
|
||||
Successfully built 80ef4e3c488d
|
||||
Successfully tagged nspccdev/neofs-storage-testnet:0.14.1-dirty
|
||||
$
|
||||
```
|
||||
|
||||
## Deploy node
|
||||
|
||||
To run storage node in NEO testnet-preview4 environment you should deposit
|
||||
GAS assets, update docker-compose file and run it.
|
||||
|
||||
### Deposit
|
||||
|
||||
Storage node holder should deposit assets because it generates a bit of
|
||||
sidechain GAS for node's wallet. Sidechain GAS used to send bootstrap tx.
|
||||
|
||||
To make a deposit invoke `deposit` method of NeoFS contract in testnet-preview4.
|
||||
There are three arguments in this method:
|
||||
- scripthash of the wallet
|
||||
- amount of GAS (in decimal)
|
||||
- scripthash of the storage node wallet.
|
||||
|
||||
|
||||
NeoFS contract scripthash in NEO testnet-preview4 is `121da848e5239d24353c7b567a719d27e0fe7c06`
|
||||
|
||||
Last argument can be empty if you want to use
|
||||
wallet key as storage node key. See a deposit example with `neo-go`:
|
||||
|
||||
```
|
||||
neo-go contract invokefunction -r http://neo3-preview.go.nspcc.ru:20332 \
|
||||
-w wallet.json -a NcrE6C1mvScQpAnFctK1Mw7P7i1buLCKav \
|
||||
121da848e5239d24353c7b567a719d27e0fe7c06 \
|
||||
deposit \
|
||||
0cbd9d3c3e3a3d12ff5b8bd0d3a0548c6eeac4b9 \
|
||||
int:1 \
|
||||
bytes: \
|
||||
-- 0cbd9d3c3e3a3d12ff5b8bd0d3a0548c6eeac4b9
|
||||
```
|
||||
|
||||
### Configure
|
||||
|
||||
Then configure docker-compose.yml file. Change endpoints values. Both of them
|
||||
should contain your public IP.
|
||||
|
||||
```yaml
|
||||
environment:
|
||||
- NEOFS_NODE_ADDRESS=192.168.140.1:36512
|
||||
- NEOFS_GRPC_ENDPOINT=192.168.140.1:36512
|
||||
```
|
||||
|
||||
It is recommended to pass node's key as a file. To do so convert your wallet
|
||||
WIF to 32-byte hex (via `neofs-cli` for example) and save it in file.
|
||||
|
||||
```
|
||||
// Print WIF in a 32-byte hex format
|
||||
$ neofs-cli util keyer Kwp4Q933QujZLUCcn39tzY94itNQJS4EjTp28oAMzuxMwabm3p1s
|
||||
PrivateKey 11ab917cd99170cb8d0d48e78fca317564e6b3aaff7f7058952d6175cdca0f56
|
||||
PublicKey 02be8b2e837cab232168f5c3303f1b985818b7583682fb49026b8d2f43df7c1059
|
||||
WIF Kwp4Q933QujZLUCcn39tzY94itNQJS4EjTp28oAMzuxMwabm3p1s
|
||||
Wallet3.0 NVKYb9UHYv9mf6gY6CkBgR5ZYPhtx5d9sr
|
||||
ScriptHash3.0 65d667398a35820f421630e49f73d7ea34952e67
|
||||
ScriptHash3.0BE 672e9534ead7739fe43016420f82358a3967d665
|
||||
|
||||
// Save 32-byte hex into a file
|
||||
$ echo '11ab917cd99170cb8d0d48e78fca317564e6b3aaff7f7058952d6175cdca0f56' | xxd -r -p > my_wallet.key
|
||||
```
|
||||
|
||||
Then specify path to this file in docker-compose
|
||||
```yaml
|
||||
volumes:
|
||||
- neofs_storage:/storage
|
||||
- ./my_wallet.key:/node.key
|
||||
```
|
||||
|
||||
You also can provide WIF directly with
|
||||
`NEOFS_NODE_KEY=Kwp4Q933QujZLUCcn39tzY94itNQJS4EjTp28oAMzuxMwabm3p1s`
|
||||
env in docker-compose.
|
||||
|
||||
### Start
|
||||
|
||||
Run node with `docker-compose up` command and stop it with `docker-compose down`.
|
51
config/testnet/config.yml
Normal file
51
config/testnet/config.yml
Normal file
|
@ -0,0 +1,51 @@
|
|||
logger:
|
||||
level: info
|
||||
|
||||
morph:
|
||||
rpc_endpoint:
|
||||
- http://rpc1-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc2-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc3-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc4-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc5-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc6-morph.preview4.nspcc.ru:24333
|
||||
- http://rpc7-morph.preview4.nspcc.ru:24333
|
||||
notification_endpoint:
|
||||
- ws://rpc1-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc2-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc3-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc4-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc5-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc6-morph.preview4.nspcc.ru:24333/ws
|
||||
- ws://rpc7-morph.preview4.nspcc.ru:24333/ws
|
||||
dial_timeout: 20s
|
||||
|
||||
bootstrap:
|
||||
periodic:
|
||||
enabled: true
|
||||
|
||||
accounting:
|
||||
scripthash: b9af268168b1546d8b1e0c25dece3faa31153058
|
||||
container:
|
||||
scripthash: 31761cba924830bfce2662a39fc7f830b90adbef
|
||||
netmap:
|
||||
scripthash: 7b383bc5a385859469f366b08b04b4fcd9a41f55
|
||||
node:
|
||||
key: /node.key
|
||||
attribute:
|
||||
0: /external:true
|
||||
|
||||
storage:
|
||||
shard:
|
||||
0:
|
||||
use_write_cache: false
|
||||
metabase:
|
||||
path: /storage/metabase
|
||||
perm: 0777
|
||||
blobstor:
|
||||
path: /storage/blobstor
|
||||
perm: 0777
|
||||
blobovnicza:
|
||||
opened_cache_size: 32
|
||||
shallow_depth: 1
|
||||
shallow_width: 1
|
19
config/testnet/docker-compose.yml
Normal file
19
config/testnet/docker-compose.yml
Normal file
|
@ -0,0 +1,19 @@
|
|||
---
|
||||
|
||||
version: "2.4"
|
||||
services:
|
||||
storage01:
|
||||
image: nspccdev/neofs-storage-testnet:0.14.1
|
||||
container_name: neofs-testnet
|
||||
network_mode: host
|
||||
restart: always
|
||||
volumes:
|
||||
- neofs_storage:/storage
|
||||
- <NEOFS_NODE_KEY>:/node.key
|
||||
stop_signal: SIGINT
|
||||
environment:
|
||||
- NEOFS_NODE_ADDRESS=<ANNOUNCE_ADDRESS>
|
||||
- NEOFS_GRPC_ENDPOINT=<BIND_ADDRESS>
|
||||
|
||||
volumes:
|
||||
neofs_storage:
|
Loading…
Reference in a new issue