[mintnet-kubernetes] upgrade to work with tm 0.10.0 and basecoin 0.5.0
This commit is contained in:
parent
35a2a58ac0
commit
e1f268b9d2
|
@ -64,7 +64,7 @@ spec:
|
||||||
annotations:
|
annotations:
|
||||||
pod.beta.kubernetes.io/init-containers: '[{
|
pod.beta.kubernetes.io/init-containers: '[{
|
||||||
"name": "tm-gen-validator",
|
"name": "tm-gen-validator",
|
||||||
"image": "tendermint/tendermint:0.9.0",
|
"image": "tendermint/tendermint:0.10.0",
|
||||||
"imagePullPolicy": "IfNotPresent",
|
"imagePullPolicy": "IfNotPresent",
|
||||||
"command": ["bash", "-c", "
|
"command": ["bash", "-c", "
|
||||||
set -ex\n
|
set -ex\n
|
||||||
|
@ -82,7 +82,7 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: tm
|
- name: tm
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
image: tendermint/tendermint:0.9.0
|
image: tendermint/tendermint:0.10.0
|
||||||
resources:
|
resources:
|
||||||
requests:
|
requests:
|
||||||
cpu: 50m
|
cpu: 50m
|
||||||
|
@ -111,7 +111,7 @@ spec:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
name: tm-config
|
name: tm-config
|
||||||
key: validators
|
key: validators
|
||||||
- name: TMROOT
|
- name: TMHOME
|
||||||
value: /tendermint
|
value: /tendermint
|
||||||
command:
|
command:
|
||||||
- bash
|
- bash
|
||||||
|
@ -152,7 +152,7 @@ spec:
|
||||||
done
|
done
|
||||||
seeds=$(IFS=','; echo "${seeds[*]}")
|
seeds=$(IFS=','; echo "${seeds[*]}")
|
||||||
|
|
||||||
tendermint node --seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
tendermint node --p2p.seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: tmdir
|
- name: tmdir
|
||||||
mountPath: /tendermint
|
mountPath: /tendermint
|
||||||
|
|
|
@ -25,13 +25,13 @@ make create
|
||||||
3. get account's address of the second pod
|
3. get account's address of the second pod
|
||||||
|
|
||||||
```
|
```
|
||||||
ADDR=`kubectl exec -c app tm-1 -- cat /app/key.json | grep "address" | tr -d "\""`
|
ADDR=`kubectl exec -c app tm-1 -- cat /app/key.json | jq ".address" | tr -d"\""`
|
||||||
```
|
```
|
||||||
|
|
||||||
4. send 5 coins to it from the first pod
|
4. send 5 coins to it from the first pod
|
||||||
|
|
||||||
```
|
```
|
||||||
kubectl exec -c app tm-0 -- basecoin tx send --to "0x$ADDR" --amount 5
|
kubectl exec -c app tm-0 -- basecoin tx send --to "0x$ADDR" --amount 5mycoin --from /app/key.json
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -46,38 +46,49 @@ metadata:
|
||||||
name: app-config
|
name: app-config
|
||||||
data:
|
data:
|
||||||
genesis.json: |-
|
genesis.json: |-
|
||||||
[
|
|
||||||
"base/chainID",
|
|
||||||
"test_chain_id",
|
|
||||||
"base/account",
|
|
||||||
{
|
{
|
||||||
"coins" : [
|
"chain_id": "chain-tTH4mi",
|
||||||
{"denom": "blank", "amount": 1000}
|
"app_options": {
|
||||||
],
|
"accounts": [
|
||||||
"pub_key" : ["tm-0"]
|
|
||||||
},
|
|
||||||
"base/account",
|
|
||||||
{
|
{
|
||||||
|
"pub_key": "tm-0",
|
||||||
"coins": [
|
"coins": [
|
||||||
{"denom": "blank", "amount": 1000}
|
|
||||||
],
|
|
||||||
"pub_key" : ["tm-1"]
|
|
||||||
},
|
|
||||||
"base/account",
|
|
||||||
{
|
{
|
||||||
"coins" : [
|
"denom": "mycoin",
|
||||||
{"denom": "blank", "amount": 1000}
|
"amount": 1000000000
|
||||||
],
|
|
||||||
"pub_key" : ["tm-2"]
|
|
||||||
},
|
|
||||||
"base/account",
|
|
||||||
{
|
|
||||||
"coins" : [
|
|
||||||
{"denom": "blank", "amount": 1000}
|
|
||||||
],
|
|
||||||
"pub_key" : ["tm-3"]
|
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pub_key": "tm-1",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "mycoin",
|
||||||
|
"amount": 1000000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pub_key": "tm-2",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "mycoin",
|
||||||
|
"amount": 1000000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pub_key": "tm-3",
|
||||||
|
"coins": [
|
||||||
|
{
|
||||||
|
"denom": "mycoin",
|
||||||
|
"amount": 1000000000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
---
|
---
|
||||||
apiVersion: policy/v1beta1
|
apiVersion: policy/v1beta1
|
||||||
kind: PodDisruptionBudget
|
kind: PodDisruptionBudget
|
||||||
|
@ -103,7 +114,7 @@ spec:
|
||||||
annotations:
|
annotations:
|
||||||
pod.beta.kubernetes.io/init-containers: '[{
|
pod.beta.kubernetes.io/init-containers: '[{
|
||||||
"name": "tm-gen-validator",
|
"name": "tm-gen-validator",
|
||||||
"image": "tendermint/tendermint:0.9.0",
|
"image": "tendermint/tendermint:0.10.0",
|
||||||
"imagePullPolicy": "IfNotPresent",
|
"imagePullPolicy": "IfNotPresent",
|
||||||
"command": ["bash", "-c", "
|
"command": ["bash", "-c", "
|
||||||
set -ex\n
|
set -ex\n
|
||||||
|
@ -119,7 +130,7 @@ spec:
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "app-gen-key",
|
"name": "app-gen-key",
|
||||||
"image": "tendermint/basecoin:latest",
|
"image": "tendermint/basecoin:0.5.0",
|
||||||
"imagePullPolicy": "IfNotPresent",
|
"imagePullPolicy": "IfNotPresent",
|
||||||
"command": ["bash", "-c", "
|
"command": ["bash", "-c", "
|
||||||
set -ex\n
|
set -ex\n
|
||||||
|
@ -137,7 +148,7 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: tm
|
- name: tm
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
image: tendermint/tendermint:0.9.0
|
image: tendermint/tendermint:0.10.0
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 46656
|
- containerPort: 46656
|
||||||
name: p2p
|
name: p2p
|
||||||
|
@ -159,7 +170,7 @@ spec:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
name: tm-config
|
name: tm-config
|
||||||
key: validators
|
key: validators
|
||||||
- name: TMROOT
|
- name: TMHOME
|
||||||
value: /tendermint
|
value: /tendermint
|
||||||
command:
|
command:
|
||||||
- bash
|
- bash
|
||||||
|
@ -200,7 +211,7 @@ spec:
|
||||||
done
|
done
|
||||||
seeds=$(IFS=','; echo "${seeds[*]}")
|
seeds=$(IFS=','; echo "${seeds[*]}")
|
||||||
|
|
||||||
tendermint node --seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
tendermint node --p2p.seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: tmdir
|
- name: tmdir
|
||||||
mountPath: /tendermint
|
mountPath: /tendermint
|
||||||
|
@ -212,7 +223,10 @@ spec:
|
||||||
|
|
||||||
- name: app
|
- name: app
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
image: tendermint/basecoin:latest
|
image: tendermint/basecoin:0.5.0
|
||||||
|
env:
|
||||||
|
- name: BCHOME
|
||||||
|
value: /app
|
||||||
workingDir: /app
|
workingDir: /app
|
||||||
command:
|
command:
|
||||||
- bash
|
- bash
|
||||||
|
@ -224,11 +238,11 @@ spec:
|
||||||
cp /etc/app/genesis.json genesis.json
|
cp /etc/app/genesis.json genesis.json
|
||||||
fqdn_suffix=$(hostname -f | sed 's#[^.]*\.\(\)#\1#')
|
fqdn_suffix=$(hostname -f | sed 's#[^.]*\.\(\)#\1#')
|
||||||
# for every "base/account"
|
# for every "base/account"
|
||||||
i=3
|
i=0
|
||||||
length=$(cat genesis.json | jq ". | length")
|
length=$(cat genesis.json | jq ".app_options.accounts | length")
|
||||||
while [[ $i -lt $length ]]; do
|
while [[ $i -lt $length ]]; do
|
||||||
# extract pod name ("tm-0")
|
# extract pod name ("tm-0")
|
||||||
pod=$(cat genesis.json | jq -r ".[$i].pub_key[0]")
|
pod=$(cat genesis.json | jq -r ".app_options.accounts[$i].pub_key")
|
||||||
|
|
||||||
# wait until pod starts to serve its pub_key
|
# wait until pod starts to serve its pub_key
|
||||||
set +e
|
set +e
|
||||||
|
@ -245,16 +259,16 @@ spec:
|
||||||
# get its pub_key
|
# get its pub_key
|
||||||
curl -s "http://$pod.$fqdn_suffix/app_pub_key.json" | jq "." > k.json
|
curl -s "http://$pod.$fqdn_suffix/app_pub_key.json" | jq "." > k.json
|
||||||
|
|
||||||
# replace pod name with it (["tm-0"] => "[1, XXXXXXXXXXXXXXXXXXXX]")
|
# replace pod name with it ("tm-0" => "{"type": ..., "data": ...}")
|
||||||
cat genesis.json | jq ".[$i].pub_key = $(cat k.json | jq '.')" > tmpgenesis && mv tmpgenesis genesis.json
|
cat genesis.json | jq ".app_options.accounts[$i].pub_key = $(cat k.json | jq '.')" > tmpgenesis && mv tmpgenesis genesis.json
|
||||||
rm -f k.json
|
rm -f k.json
|
||||||
|
|
||||||
i=$((i+2)) # skip "base/account" field itself
|
i=$((i+1))
|
||||||
done
|
done
|
||||||
|
|
||||||
rm -f /socks/app.sock # remove old socket
|
rm -f /socks/app.sock # remove old socket
|
||||||
|
|
||||||
basecoin start --address="unix:///socks/app.sock"
|
basecoin start --address="unix:///socks/app.sock" --without-tendermint
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: appdir
|
- name: appdir
|
||||||
mountPath: /app
|
mountPath: /app
|
||||||
|
|
|
@ -1,3 +1,5 @@
|
||||||
|
**OUTDATED**
|
||||||
|
|
||||||
# Using with lightclient
|
# Using with lightclient
|
||||||
|
|
||||||
We have an awesome cluster running, let's try to test this out without
|
We have an awesome cluster running, let's try to test this out without
|
||||||
|
|
|
@ -63,7 +63,7 @@ spec:
|
||||||
annotations:
|
annotations:
|
||||||
pod.beta.kubernetes.io/init-containers: '[{
|
pod.beta.kubernetes.io/init-containers: '[{
|
||||||
"name": "tm-gen-validator",
|
"name": "tm-gen-validator",
|
||||||
"image": "tendermint/tendermint:0.9.0",
|
"image": "tendermint/tendermint:0.10.0",
|
||||||
"imagePullPolicy": "IfNotPresent",
|
"imagePullPolicy": "IfNotPresent",
|
||||||
"command": ["bash", "-c", "
|
"command": ["bash", "-c", "
|
||||||
set -ex\n
|
set -ex\n
|
||||||
|
@ -81,7 +81,7 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: tm
|
- name: tm
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
image: tendermint/tendermint:0.9.0
|
image: tendermint/tendermint:0.10.0
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 46656
|
- containerPort: 46656
|
||||||
name: p2p
|
name: p2p
|
||||||
|
@ -103,7 +103,7 @@ spec:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
name: tm-config
|
name: tm-config
|
||||||
key: validators
|
key: validators
|
||||||
- name: TMROOT
|
- name: TMHOME
|
||||||
value: /tendermint
|
value: /tendermint
|
||||||
command:
|
command:
|
||||||
- bash
|
- bash
|
||||||
|
@ -144,7 +144,7 @@ spec:
|
||||||
done
|
done
|
||||||
seeds=$(IFS=','; echo "${seeds[*]}")
|
seeds=$(IFS=','; echo "${seeds[*]}")
|
||||||
|
|
||||||
tendermint node --seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
tendermint node --p2p.seeds="$seeds" --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: tmdir
|
- name: tmdir
|
||||||
mountPath: /tendermint
|
mountPath: /tendermint
|
||||||
|
@ -163,10 +163,7 @@ spec:
|
||||||
- |
|
- |
|
||||||
set -ex
|
set -ex
|
||||||
|
|
||||||
go get -d github.com/tendermint/abci/cmd/counter
|
go get github.com/tendermint/abci/cmd/counter
|
||||||
cd $GOPATH/src/github.com/tendermint/abci/
|
|
||||||
make get_deps
|
|
||||||
make install
|
|
||||||
|
|
||||||
rm -f /socks/app.sock # remove old socket
|
rm -f /socks/app.sock # remove old socket
|
||||||
|
|
||||||
|
|
|
@ -63,7 +63,7 @@ spec:
|
||||||
annotations:
|
annotations:
|
||||||
pod.beta.kubernetes.io/init-containers: '[{
|
pod.beta.kubernetes.io/init-containers: '[{
|
||||||
"name": "tm-gen-validator",
|
"name": "tm-gen-validator",
|
||||||
"image": "tendermint/tendermint:0.9.0",
|
"image": "tendermint/tendermint:0.10.0",
|
||||||
"imagePullPolicy": "IfNotPresent",
|
"imagePullPolicy": "IfNotPresent",
|
||||||
"command": ["bash", "-c", "
|
"command": ["bash", "-c", "
|
||||||
set -ex\n
|
set -ex\n
|
||||||
|
@ -81,7 +81,7 @@ spec:
|
||||||
containers:
|
containers:
|
||||||
- name: tm
|
- name: tm
|
||||||
imagePullPolicy: IfNotPresent
|
imagePullPolicy: IfNotPresent
|
||||||
image: tendermint/tendermint:0.9.0
|
image: tendermint/tendermint:0.10.0
|
||||||
ports:
|
ports:
|
||||||
- containerPort: 46656
|
- containerPort: 46656
|
||||||
name: p2p
|
name: p2p
|
||||||
|
@ -103,7 +103,7 @@ spec:
|
||||||
configMapKeyRef:
|
configMapKeyRef:
|
||||||
name: tm-config
|
name: tm-config
|
||||||
key: validators
|
key: validators
|
||||||
- name: TMROOT
|
- name: TMHOME
|
||||||
value: /tendermint
|
value: /tendermint
|
||||||
command:
|
command:
|
||||||
- bash
|
- bash
|
||||||
|
@ -144,7 +144,7 @@ spec:
|
||||||
done
|
done
|
||||||
seeds=$(IFS=','; echo "${seeds[*]}")
|
seeds=$(IFS=','; echo "${seeds[*]}")
|
||||||
|
|
||||||
tendermint node --seeds="$seeds" --moniker="`hostname`" --proxy_app="dummy"
|
tendermint node --p2p.seeds="$seeds" --moniker="`hostname`" --proxy_app="dummy"
|
||||||
volumeMounts:
|
volumeMounts:
|
||||||
- name: tmdir
|
- name: tmdir
|
||||||
mountPath: /tendermint
|
mountPath: /tendermint
|
||||||
|
|
|
@ -1,10 +0,0 @@
|
||||||
create:
|
|
||||||
@echo "==> Creating deployment"
|
|
||||||
@kubectl create -f app.yaml
|
|
||||||
|
|
||||||
destroy:
|
|
||||||
@echo "==> Destroying deployment"
|
|
||||||
@kubectl delete -f app.yaml
|
|
||||||
@kubectl delete pvc -l app=tm
|
|
||||||
|
|
||||||
.PHONY: create destroy
|
|
|
@ -1,288 +0,0 @@
|
||||||
---
|
|
||||||
# Single pod installation (see basecoin for distributed setup)
|
|
||||||
apiVersion: v1
|
|
||||||
kind: Service
|
|
||||||
metadata:
|
|
||||||
annotations:
|
|
||||||
service.alpha.kubernetes.io/tolerate-unready-endpoints: "true"
|
|
||||||
name: localchain
|
|
||||||
labels:
|
|
||||||
app: localchain
|
|
||||||
spec:
|
|
||||||
ports:
|
|
||||||
- port: 46656
|
|
||||||
name: p2p
|
|
||||||
- port: 46657
|
|
||||||
name: rpc
|
|
||||||
clusterIP: None
|
|
||||||
selector:
|
|
||||||
app: tm
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: tm-config
|
|
||||||
data:
|
|
||||||
validators: "tm-0"
|
|
||||||
validator.power: "10"
|
|
||||||
genesis.json: |-
|
|
||||||
{
|
|
||||||
"genesis_time": "2016-03-24T23:29:20.457Z",
|
|
||||||
"chain_id": "chain-iqwZgb",
|
|
||||||
"validators": [],
|
|
||||||
"app_hash": ""
|
|
||||||
}
|
|
||||||
pub_key_nginx.conf: |-
|
|
||||||
server {
|
|
||||||
listen 80 default_server;
|
|
||||||
listen [::]:80 default_server ipv6only=on;
|
|
||||||
location /pub_key.json { root /usr/share/nginx/; }
|
|
||||||
location /app_pub_key.json { root /usr/share/nginx/; }
|
|
||||||
}
|
|
||||||
---
|
|
||||||
apiVersion: v1
|
|
||||||
kind: ConfigMap
|
|
||||||
metadata:
|
|
||||||
name: app-config
|
|
||||||
data:
|
|
||||||
genesis.json: |-
|
|
||||||
[
|
|
||||||
"base/chainID",
|
|
||||||
"test_chain_id",
|
|
||||||
"base/account",
|
|
||||||
{
|
|
||||||
"pub_key": ["tm-0"],
|
|
||||||
"coins": [
|
|
||||||
{"denom":"CITI/USD","amount":1000},
|
|
||||||
{"denom":"UBS/EURO","amount":1000}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
---
|
|
||||||
apiVersion: policy/v1beta1
|
|
||||||
kind: PodDisruptionBudget
|
|
||||||
metadata:
|
|
||||||
name: tm-budget
|
|
||||||
spec:
|
|
||||||
selector:
|
|
||||||
matchLabels:
|
|
||||||
app: tm
|
|
||||||
minAvailable: 2
|
|
||||||
---
|
|
||||||
apiVersion: apps/v1beta1
|
|
||||||
kind: StatefulSet
|
|
||||||
metadata:
|
|
||||||
name: tm
|
|
||||||
spec:
|
|
||||||
serviceName: localchain
|
|
||||||
replicas: 1
|
|
||||||
template:
|
|
||||||
metadata:
|
|
||||||
labels:
|
|
||||||
app: tm
|
|
||||||
annotations:
|
|
||||||
pod.beta.kubernetes.io/init-containers: '[{
|
|
||||||
"name": "tm-gen-validator",
|
|
||||||
"image": "tendermint/tendermint:0.9.0",
|
|
||||||
"imagePullPolicy": "IfNotPresent",
|
|
||||||
"command": ["bash", "-c", "
|
|
||||||
set -ex\n
|
|
||||||
if [ ! -f /tendermint/priv_validator.json ]; then\n
|
|
||||||
tendermint gen_validator > /tendermint/priv_validator.json\n
|
|
||||||
# pub_key.json will be served by pub-key container\n
|
|
||||||
cat /tendermint/priv_validator.json | jq \".pub_key\" > /tendermint/pub_key.json\n
|
|
||||||
fi\n
|
|
||||||
"],
|
|
||||||
"volumeMounts": [
|
|
||||||
{"name": "tmdir", "mountPath": "/tendermint"}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "app-gen-key",
|
|
||||||
"image": "tendermint/basecoin:latest",
|
|
||||||
"imagePullPolicy": "IfNotPresent",
|
|
||||||
"command": ["bash", "-c", "
|
|
||||||
set -ex\n
|
|
||||||
if [ ! -f /app/key.json ]; then\n
|
|
||||||
basecoin key new > /app/key.json\n
|
|
||||||
# pub_key.json will be served by app-pub-key container\n
|
|
||||||
cat /app/key.json | jq \".pub_key\" > /app/pub_key.json\n
|
|
||||||
fi\n
|
|
||||||
"],
|
|
||||||
"volumeMounts": [
|
|
||||||
{"name": "appdir", "mountPath": "/app"}
|
|
||||||
]
|
|
||||||
}]'
|
|
||||||
spec:
|
|
||||||
containers:
|
|
||||||
- name: tm
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
image: tendermint/tendermint:0.9.0
|
|
||||||
ports:
|
|
||||||
- containerPort: 46656
|
|
||||||
name: p2p
|
|
||||||
- containerPort: 46657
|
|
||||||
name: rpc
|
|
||||||
env:
|
|
||||||
- name: VALIDATOR_POWER
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: tm-config
|
|
||||||
key: validator.power
|
|
||||||
- name: VALIDATORS
|
|
||||||
valueFrom:
|
|
||||||
configMapKeyRef:
|
|
||||||
name: tm-config
|
|
||||||
key: validators
|
|
||||||
- name: TMROOT
|
|
||||||
value: /tendermint
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- "-c"
|
|
||||||
- |
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
# copy template
|
|
||||||
cp /etc/tendermint/genesis.json /tendermint/genesis.json
|
|
||||||
|
|
||||||
# fill genesis file with validators
|
|
||||||
IFS=',' read -ra VALS_ARR <<< "$VALIDATORS"
|
|
||||||
fqdn_suffix=$(hostname -f | sed 's#[^.]*\.\(\)#\1#')
|
|
||||||
for v in "${VALS_ARR[@]}"; do
|
|
||||||
# wait until validator generates priv/pub key pair
|
|
||||||
set +e
|
|
||||||
|
|
||||||
curl -s "http://$v.$fqdn_suffix/pub_key.json" > /dev/null
|
|
||||||
ERR=$?
|
|
||||||
while [ "$ERR" != 0 ]; do
|
|
||||||
sleep 5
|
|
||||||
curl -s "http://$v.$fqdn_suffix/pub_key.json" > /dev/null
|
|
||||||
ERR=$?
|
|
||||||
done
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# add validator to genesis file along with its pub_key
|
|
||||||
curl -s "http://$v.$fqdn_suffix/pub_key.json" | jq ". as \$k | {pub_key: \$k, amount: $VALIDATOR_POWER, name: \"$v\"}" > pub_validator.json
|
|
||||||
cat /tendermint/genesis.json | jq ".validators |= .+ [$(cat pub_validator.json)]" > tmpgenesis && mv tmpgenesis /tendermint/genesis.json
|
|
||||||
rm pub_validator.json
|
|
||||||
done
|
|
||||||
|
|
||||||
tendermint node --moniker="`hostname`" --proxy_app="unix:///socks/app.sock"
|
|
||||||
volumeMounts:
|
|
||||||
- name: tmdir
|
|
||||||
mountPath: /tendermint
|
|
||||||
- mountPath: /etc/tendermint/genesis.json
|
|
||||||
name: tmconfigdir
|
|
||||||
subPath: genesis.json
|
|
||||||
- name: socksdir
|
|
||||||
mountPath: /socks
|
|
||||||
|
|
||||||
- name: app
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
image: tendermint/basecoin:latest
|
|
||||||
workingDir: /app
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- "-c"
|
|
||||||
- |
|
|
||||||
set -ex
|
|
||||||
|
|
||||||
# replace "tm-N" with public keys in genesis file
|
|
||||||
cp /etc/app/genesis.json genesis.json
|
|
||||||
fqdn_suffix=$(echo $(hostname -f) | sed 's#[^.]*\.\(\)#\1#')
|
|
||||||
# for every "base/account"
|
|
||||||
i=3
|
|
||||||
length=$(cat genesis.json | jq ". | length")
|
|
||||||
while [ $i -lt $length ]; do
|
|
||||||
# extract pod name ("tm-0")
|
|
||||||
pod=$(cat genesis.json | jq -r ".[$i].pub_key[0]")
|
|
||||||
|
|
||||||
# wait until pod starts to serve its pub_key
|
|
||||||
set +e
|
|
||||||
|
|
||||||
curl -s "http://$pod.$fqdn_suffix/app_pub_key.json" > /dev/null
|
|
||||||
ERR=$?
|
|
||||||
while [ "$ERR" != 0 ]; do
|
|
||||||
sleep 5
|
|
||||||
curl -s "http://$pod.$fqdn_suffix/app_pub_key.json" > /dev/null
|
|
||||||
ERR=$?
|
|
||||||
done
|
|
||||||
set -e
|
|
||||||
|
|
||||||
# get its pub_key
|
|
||||||
curl -s "http://$pod.$fqdn_suffix/app_pub_key.json" | jq "." > k.json
|
|
||||||
|
|
||||||
# replace pod name with it (["tm-0"] => "[1, XXXXXXXXXXXXXXXXXXXX]")
|
|
||||||
cat genesis.json | jq ".[$i].pub_key = $(cat k.json | jq '.')" > genesis.json
|
|
||||||
rm -f k.json
|
|
||||||
|
|
||||||
i=$((i+2)) # skip "base/account" field itself
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f /socks/app.sock # remove old socket
|
|
||||||
|
|
||||||
basecoin start --address="unix:///socks/app.sock"
|
|
||||||
volumeMounts:
|
|
||||||
- name: appdir
|
|
||||||
mountPath: /app
|
|
||||||
- mountPath: /etc/app/genesis.json
|
|
||||||
name: appconfigdir
|
|
||||||
subPath: genesis.json
|
|
||||||
- name: socksdir
|
|
||||||
mountPath: /socks
|
|
||||||
|
|
||||||
- name: pub-key
|
|
||||||
imagePullPolicy: IfNotPresent
|
|
||||||
image: nginx:latest
|
|
||||||
ports:
|
|
||||||
- containerPort: 80
|
|
||||||
name: pub-key
|
|
||||||
command:
|
|
||||||
- bash
|
|
||||||
- "-c"
|
|
||||||
- |
|
|
||||||
set -ex
|
|
||||||
# fixes 403 Permission Denied (open() "/tendermint/pub_key.json" failed (13: Permission denied))
|
|
||||||
# => we cannot serve from /tendermint, so we copy the file
|
|
||||||
mkdir -p /usr/share/nginx
|
|
||||||
cp /tendermint/pub_key.json /usr/share/nginx/pub_key.json
|
|
||||||
cp /app/pub_key.json /usr/share/nginx/app_pub_key.json
|
|
||||||
nginx -g "daemon off;"
|
|
||||||
volumeMounts:
|
|
||||||
- name: tmdir
|
|
||||||
mountPath: /tendermint
|
|
||||||
- name: appdir
|
|
||||||
mountPath: /app
|
|
||||||
- mountPath: /etc/nginx/conf.d/pub_key.conf
|
|
||||||
name: tmconfigdir
|
|
||||||
subPath: pub_key_nginx.conf
|
|
||||||
|
|
||||||
volumes:
|
|
||||||
- name: tmconfigdir
|
|
||||||
configMap:
|
|
||||||
name: tm-config
|
|
||||||
- name: appconfigdir
|
|
||||||
configMap:
|
|
||||||
name: app-config
|
|
||||||
- name: socksdir
|
|
||||||
emptyDir: {}
|
|
||||||
|
|
||||||
volumeClaimTemplates:
|
|
||||||
- metadata:
|
|
||||||
name: tmdir
|
|
||||||
annotations:
|
|
||||||
volume.alpha.kubernetes.io/storage-class: anything
|
|
||||||
spec:
|
|
||||||
accessModes: [ "ReadWriteOnce" ]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 2Gi
|
|
||||||
- metadata:
|
|
||||||
name: appdir
|
|
||||||
annotations:
|
|
||||||
volume.alpha.kubernetes.io/storage-class: anything
|
|
||||||
spec:
|
|
||||||
accessModes: [ "ReadWriteOnce" ]
|
|
||||||
resources:
|
|
||||||
requests:
|
|
||||||
storage: 12Mi
|
|
Loading…
Reference in New Issue