Skip to content

Commit

Permalink
add snapshot downloader
Browse files Browse the repository at this point in the history
change ordering of init containers again to make sure they all download snapshots
  • Loading branch information
nicolasochem committed Feb 24, 2021
1 parent 24f724f commit 5bc4c0f
Show file tree
Hide file tree
Showing 9 changed files with 104 additions and 67 deletions.
2 changes: 1 addition & 1 deletion baker-endorser/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM tezos/tezos:master
FROM tezos/tezos:v8-release
RUN sudo apk add jq bash
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
Expand Down
69 changes: 31 additions & 38 deletions charts/tezos/templates/baker.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -93,24 +93,6 @@ spec:
name: config-volume
- mountPath: /var/tezos
name: var-volume
- image: "{{ .Values.tezos_k8s_images.baker_endorser }}"

This comment has been minimized.

Copy link
@nicolasochem

nicolasochem Feb 24, 2021

Author Collaborator

Not intentional.

imagePullPolicy: IfNotPresent
name: baker
volumeMounts:
- mountPath: /var/tezos
name: var-volume
envFrom:
- configMapRef:
name: tezos-config
- secretRef:
name: tezos-secret
env:
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: DAEMON
value: baker
- image: "{{ .Values.tezos_k8s_images.baker_endorser }}"
imagePullPolicy: IfNotPresent
name: endorser
Expand Down Expand Up @@ -150,6 +132,37 @@ spec:
name: var-volume
{{- end }}
initContainers:
- image: {{ .Values.tezos_k8s_images.config_generator }}
imagePullPolicy: IfNotPresent
name: config-generator
args:
- "--generate-config-json"
envFrom:
- secretRef:
name: tezos-secret
- configMapRef:
name: tezos-config
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- mountPath: /etc/tezos
name: config-volume
- mountPath: /var/tezos
name: var-volume
- image: "{{ .Values.tezos_k8s_images.snapshot_downloader }}"
imagePullPolicy: IfNotPresent
name: snapshot-downloader
volumeMounts:
- mountPath: /var/tezos
name: var-volume
- mountPath: /etc/tezos
name: config-volume
envFrom:
- configMapRef:
name: tezos-config
{{- if not .Values.is_invitation }}
- image: {{ .Values.tezos_k8s_images.wait_for_bootstrap }}
imagePullPolicy: IfNotPresent
Expand Down Expand Up @@ -183,26 +196,6 @@ spec:
fieldRef:
fieldPath: metadata.name
{{- end }}
- image: {{ .Values.tezos_k8s_images.config_generator }}
imagePullPolicy: IfNotPresent
name: config-generator
args:
- "--generate-config-json"
envFrom:
- secretRef:
name: tezos-secret
- configMapRef:
name: tezos-config
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- mountPath: /etc/tezos
name: config-volume
- mountPath: /var/tezos
name: var-volume
securityContext:
fsGroup: 100
volumes:
Expand Down
1 change: 1 addition & 0 deletions charts/tezos/templates/configs.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ data:
"timestamp": "{{ .Values.genesis.timestamp }}",
"chain_type": "{{ .Values.chain_type }}",
"network": "{{ .Values.network }}",
"snapshot_url": "{{ .Values.snapshot_url }}",
"proto_command": "{{ .Values.protocol.command }}",
"protocol_hash": "{{ .Values.protocol.hash }}"
}
Expand Down
52 changes: 25 additions & 27 deletions charts/tezos/templates/node.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,19 +63,37 @@ spec:
name: var-volume
{{- end }}
initContainers:
- args:
- "-c"
- "[ -f /var/tezos/node/identity.json ] || (mkdir -p /var/tezos/node && /usr/local/bin/tezos-node identity generate 0 --data-dir /var/tezos/node --config-file /etc/tezos/config.json)"
command:
- /bin/sh
image: {{ .Values.images.tezos | quote }}
name: identity-job
- image: {{ .Values.tezos_k8s_images.config_generator }}
imagePullPolicy: IfNotPresent
name: config-generator
args:
- "--generate-config-json"
envFrom:
- secretRef:
name: tezos-secret
- configMapRef:
name: tezos-config
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- mountPath: /etc/tezos
name: config-volume
- mountPath: /var/tezos
name: var-volume
- image: "{{ .Values.tezos_k8s_images.snapshot_downloader }}"
imagePullPolicy: IfNotPresent
name: snapshot-downloader
volumeMounts:
- mountPath: /var/tezos
name: var-volume
- mountPath: /etc/tezos
name: config-volume
envFrom:
- configMapRef:
name: tezos-config
{{- if not .Values.is_invitation }}
- image: {{ .Values.tezos_k8s_images.wait_for_bootstrap }}
imagePullPolicy: IfNotPresent
Expand Down Expand Up @@ -109,26 +127,6 @@ spec:
fieldRef:
fieldPath: metadata.name
{{- end }}
- image: {{ .Values.tezos_k8s_images.config_generator }}
imagePullPolicy: IfNotPresent
name: config-generator
args:
- "--generate-config-json"
envFrom:
- secretRef:
name: tezos-secret
- configMapRef:
name: tezos-config
env:
- name: MY_POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
volumeMounts:
- mountPath: /etc/tezos
name: config-volume
- mountPath: /var/tezos
name: var-volume
securityContext:
fsGroup: 100
volumes:
Expand Down
2 changes: 2 additions & 0 deletions charts/tezos/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,9 @@ tezos_k8s_images:
config_generator: tezos-k8s-config-generator:dev
wait_for_bootstrap: tezos-k8s-wait-for-bootstrap:dev
zerotier: tezos-k8s-zerotier:dev
snapshot_downloader: tezos-k8s-snapshot-downloader:dev

snapshot_url: https://mainnet.xtz-shots.io/rolling
protocol:
bootstrap_mutez: "4000000000000"
hash: PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo
Expand Down
5 changes: 4 additions & 1 deletion config-generator/entrypoint.py
Original file line number Diff line number Diff line change
Expand Up @@ -112,14 +112,17 @@ def get_node_config(
net_addr=None,
):

node_config = { "data-dir": "/var/tezos/node",
node_config = { "data-dir": "/var/tezos/node/data",
"rpc": {
"listen-addrs": [f"{os.getenv('MY_POD_IP')}:8732", "127.0.0.1:8732"],
},
"p2p": {
"bootstrap-peers": bootstrap_peers,
"listen-addr": ( net_addr + ":9732" if net_addr else "[::]:9732" )
},
"shell": {
"history_mode": "rolling"
},
#"log": { "level": "debug"},
}
if CHAIN_PARAMS["chain_type"] == "public":
Expand Down
4 changes: 4 additions & 0 deletions devspace.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@ images:
image: tezos-k8s-wait-for-bootstrap
dockerfile: ./wait-for-bootstrap/Dockerfile
context: ./wait-for-bootstrap
snapshot-downloader:
image: tezos-k8s-snapshot-downloader
dockerfile: ./snapshot-downloader/Dockerfile
context: ./snapshot-downloader
config-generator:
image: tezos-k8s-config-generator
dockerfile: ./config-generator/Dockerfile
Expand Down
5 changes: 5 additions & 0 deletions snapshot-downloader/Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
FROM tezos/tezos:master
RUN sudo apk add curl lz4 xz jq
COPY entrypoint.sh /
ENTRYPOINT ["/entrypoint.sh"]
CMD []
31 changes: 31 additions & 0 deletions snapshot-downloader/entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
#!/bin/sh

set -x

bin_dir="/usr/local/bin"

data_dir="/var/tezos"
node_dir="$data_dir/node"
node_data_dir="$node_dir/data"
node="$bin_dir/tezos-node"

tezos_network=$(echo $CHAIN_PARAMS | jq -r '.network')
snapshot_url=$(echo $CHAIN_PARAMS | jq -r '.snapshot_url')
if [ -d ${node_dir}/data/context ]; then
echo "Blockchain has already been imported, exiting"
exit 0
elif [ -z "$snapshot_url" ]; then
echo "No snapshot was passed as parameter, exiting"
exit 0
else
echo "Did not find pre-existing data, importing blockchain"
mkdir -p ${node_dir}/data
echo '{ "version": "0.0.4" }' > ${node_dir}/version.json
cp -v /usr/local/share/tezos/alphanet_version ${node_dir}
snapshot_file=${node_dir}/chain.snapshot
curl -L -o $snapshot_file $snapshot_url
exec "${node}" snapshot import ${snapshot_file} --data-dir ${node_data_dir} --network $tezos_network --config-file /etc/tezos/config.json
find ${node_dir}
rm -rvf ${snapshot_file}
echo ""
fi

0 comments on commit 5bc4c0f

Please sign in to comment.