Skip to content

Commit 7ccd615

Browse files
authored
feat: update infra definitions for zkSync v29 (#17)
* updates for v28.8.0; consensus required * rm gossipStaticOutbound * update scripts and docker example * versions * make RUST_LOG configurable * error only on gen secrets * quote * up * reset env file * updates for 29.0.0 alpha; disable consensus for now * update for v29.1.0 * formatting; make consensus configmap conditional * fix helm; add lint wf * wf * wf
1 parent 337a779 commit 7ccd615

File tree

13 files changed

+225
-8
lines changed

13 files changed

+225
-8
lines changed

.github/workflows/helm-lint.yaml

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
name: Helm Lint and Test
2+
3+
on:
4+
push:
5+
branches: [ main, develop ]
6+
paths:
7+
- 'charts/**'
8+
pull_request:
9+
branches: [ main, develop ]
10+
paths:
11+
- 'charts/**'
12+
13+
jobs:
14+
lint-test:
15+
runs-on: ubuntu-latest
16+
steps:
17+
- name: Checkout
18+
uses: actions/checkout@v4
19+
with:
20+
fetch-depth: 0
21+
22+
- name: Set up Helm
23+
uses: azure/setup-helm@v4
24+
with:
25+
version: 'latest'
26+
27+
- name: Add Helm repositories
28+
run: |
29+
helm repo add stakewise https://charts.stakewise.io
30+
helm repo update
31+
32+
- name: Install Helm dependencies
33+
run: |
34+
for chart in charts/*/; do
35+
if [ -f "$chart/Chart.yaml" ]; then
36+
echo "Installing dependencies for $chart"
37+
helm dependency update "$chart"
38+
fi
39+
done
40+
41+
- name: Lint Helm charts
42+
run: |
43+
for chart in charts/*/; do
44+
if [ -f "$chart/Chart.yaml" ]; then
45+
echo "Linting $chart"
46+
helm lint "$chart"
47+
fi
48+
done
49+
50+
- name: Template Helm charts
51+
run: |
52+
for chart in charts/*/; do
53+
if [ -f "$chart/Chart.yaml" ]; then
54+
echo "Templating $chart"
55+
helm template test "$chart" --debug
56+
fi
57+
done
58+
59+
- name: Package Helm charts
60+
run: |
61+
for chart in charts/*/; do
62+
if [ -f "$chart/Chart.yaml" ]; then
63+
echo "Packaging $chart"
64+
helm package "$chart"
65+
fi
66+
done
67+
68+
- name: Run Helm tests (if available)
69+
run: |
70+
for chart in charts/*/; do
71+
if [ -f "$chart/Chart.yaml" ]; then
72+
echo "Checking for tests in $chart"
73+
if [ -d "$chart/templates/tests" ]; then
74+
echo "Test templates found in $chart"
75+
# Note: Actual test execution would require a Kubernetes cluster
76+
# This step validates that test templates can be rendered
77+
helm template test "$chart" --show-only templates/tests/ || true
78+
else
79+
echo "No test templates found in $chart - skipping"
80+
fi
81+
fi
82+
done

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
.idea
22
.vscode
33

4+
consensus_secrets.yaml
5+
46
# ignore fetched subcharts
57
**/charts/**/charts
68

README.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,22 @@ Override the appropriate env file (`.env.testnet` or `.env.mainnet`) with any va
1414
### Mainnet
1515
```sh
1616
cd docker
17+
./run.sh mainnet up
18+
```
19+
or
20+
```sh
21+
cd docker
1722
docker compose --env-file .env.mainnet -f external-node.yml up -d
1823
```
1924

2025
### Testnet
2126
```sh
2227
cd docker
28+
./run.sh testnet up
29+
```
30+
or
31+
```sh
32+
cd docker
2333
docker compose --env-file .env.testnet -f external-node.yml up -d
2434
```
2535

charts/abstract-node/Chart.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
apiVersion: v2
22
name: abstract-node
33
description: External node for syncing and serving blockchain data for Abstract
4-
version: 0.1.27
4+
version: 0.1.29
55
type: application
66
icon: https://abstract-assets.abs.xyz/icons/light.png
77
keywords:
@@ -11,7 +11,7 @@ keywords:
1111
home: https://abs.xyz
1212
sources:
1313
- https://github.com/matter-labs/zksync-era
14-
appVersion: "28.6.0"
14+
appVersion: "29.1.0"
1515

1616
dependencies:
1717
- name: common
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
{{- if or .Values.consensus.enabled -}}
2+
apiVersion: v1
3+
kind: ConfigMap
4+
metadata:
5+
name: {{ include "common.names.fullname" . }}-consensus
6+
labels:
7+
{{- include "common.labels.standard" . | nindent 4 }}
8+
data:
9+
config.yaml: |
10+
server_addr: '0.0.0.0:{{ .Values.consensus.port }}'
11+
public_addr: '{{ .Values.consensus.publicAddress }}:{{ .Values.consensus.port }}'
12+
debug_page_addr: '0.0.0.0:{{ .Values.consensus.debugPagePort }}'
13+
max_payload_size: {{ .Values.consensus.maxPayloadSize }}
14+
gossip_dynamic_inbound_limit: {{ .Values.consensus.gossipDynamicInboundLimit }}
15+
{{- end }}

charts/abstract-node/templates/statefulset.yaml

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,25 @@ spec:
4646
{{- end }}
4747
serviceAccountName: {{ include "common.names.serviceAccountName" . }}
4848
priorityClassName: {{ .Values.priorityClassName | quote }}
49+
{{- if .Values.consensus.enabled }}
50+
initContainers:
51+
- name: init-consensus-secrets
52+
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
53+
imagePullPolicy: {{ .Values.image.pullPolicy }}
54+
command:
55+
- "/bin/sh"
56+
- "-c"
57+
- >
58+
if [ ! -f /consensus/secrets.yaml ]; then
59+
/usr/bin/zksync_external_node generate-secrets > /consensus/secrets.yaml &&
60+
echo 'Created secrets'
61+
else
62+
echo 'Secrets already exist'
63+
fi
64+
volumeMounts:
65+
- name: consensus-secrets
66+
mountPath: /consensus
67+
{{- end }}
4968
containers:
5069
- name: {{ .Chart.Name }}
5170
image: "{{ .Values.image.registry }}/{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
@@ -147,6 +166,12 @@ spec:
147166
- name: EN_EXPERIMENTAL_SNAPSHOTS_RECOVERY_L1_BATCH
148167
value: {{ .Values.node.experimentalSnapshotsRecoveryL1Batch | quote }}
149168
{{- end }}
169+
{{- if .Values.consensus.enabled }}
170+
- name: EN_CONSENSUS_CONFIG_PATH
171+
value: "/consensus/config.yaml"
172+
- name: EN_CONSENSUS_SECRETS_PATH
173+
value: "/consensus/secrets.yaml"
174+
{{- end }}
150175
ports:
151176
{{- if .Values.rpc.http.enabled }}
152177
- name: http
@@ -164,11 +189,24 @@ spec:
164189
- name: healthcheck
165190
containerPort: {{ .Values.healthcheck.port }}
166191
{{- end }}
192+
{{- if .Values.consensus.enabled }}
193+
- name: consensus
194+
containerPort: {{ .Values.consensus.port }}
195+
- name: debug-page
196+
containerPort: {{ .Values.consensus.debugPagePort }}
197+
{{- end }}
167198
volumeMounts:
168199
- name: statekeeper
169200
mountPath: /db/ext-node/state_keeper
170201
- name: lightweight
171202
mountPath: /db/ext-node/lightweight
203+
{{- if .Values.consensus.enabled }}
204+
- name: consensus-secrets
205+
mountPath: /consensus
206+
- name: consensus-config
207+
mountPath: /consensus/config.yaml
208+
subPath: config.yaml
209+
{{- end }}
172210
{{- with .Values.resources }}
173211
resources:
174212
{{ toYaml . | nindent 12 | trim }}
@@ -217,8 +255,28 @@ spec:
217255
emptyDir: {}
218256
- name: lightweight
219257
emptyDir: {}
258+
{{- if .Values.consensus.enabled }}
259+
- name: consensus-secrets
260+
emptyDir: {}
261+
{{- end }}
220262
{{- else }}
221263
volumeClaimTemplates:
264+
{{- if .Values.consensus.enabled }}
265+
- metadata:
266+
name: consensus-secrets
267+
labels:
268+
{{- include "common.labels.statefulset" . | nindent 10 }}
269+
{{- with .Values.persistence.annotations }}
270+
annotations:
271+
{{ toYaml . | nindent 10 | trim }}
272+
{{- end }}
273+
spec:
274+
accessModes: {{ .Values.persistence.accessModes }}
275+
storageClassName: {{ .Values.persistence.storageClassName }}
276+
resources:
277+
requests:
278+
storage: {{ .Values.persistence.consensus.size | quote }}
279+
{{- end }}
222280
- metadata:
223281
name: lightweight
224282
labels:

charts/abstract-node/values.yaml

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ image:
7979
registry: docker.io
8080
repository: matterlabs/external-node
8181
pullPolicy: IfNotPresent
82-
tag: "v28.6.0"
82+
tag: "v29.1.0"
8383

8484
# This is for the secretes for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
8585
imagePullSecrets: []
@@ -165,6 +165,15 @@ rpc:
165165
enabled: true
166166
port: "3061"
167167

168+
consensus:
169+
# Consensus is currently disabled for Abstract
170+
enabled: false
171+
port: "3054"
172+
publicAddress: "127.0.0.1"
173+
debugPagePort: "5000"
174+
maxPayloadSize: '5000000'
175+
gossipDynamicInboundLimit: '100'
176+
168177
## Healthcheck configuration.
169178
##
170179
healthcheck:
@@ -253,10 +262,13 @@ persistence:
253262
accessModes:
254263
- ReadWriteOnce
255264
annotations: {}
265+
consensus:
266+
size: 1Mi
256267
lightweight:
257268
size: 10Gi
258269
statekeeper:
259270
size: 10Gi
271+
260272

261273
## Node labels for pod assignment
262274
## ref: https://kubernetes.io/docs/user-guide/node-selection/

docker/.env.mainnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Don't change these values unless you know what you're doing
22
NETWORK=mainnet
3-
EN_VERSION=v28.6.0
3+
EN_VERSION=v29.1.0
44
EN_MAIN_NODE_URL=https://api.mainnet.abs.xyz
55
EN_L1_CHAIN_ID=1
66
EN_L2_CHAIN_ID=2741

docker/.env.testnet

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Don't change these values unless you know what you're doing
22
NETWORK=testnet
3-
EN_VERSION=v28.6.0
3+
EN_VERSION=v29.1.0
44
EN_MAIN_NODE_URL=https://api.testnet.abs.xyz
55
EN_L1_CHAIN_ID=11155111
66
EN_L2_CHAIN_ID=11124
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
server_addr: '0.0.0.0:3054'
2+
public_addr: '127.0.0.1:3054'
3+
debug_page_addr: '0.0.0.0:5000'
4+
max_payload_size: 5000000
5+
gossip_dynamic_inbound_limit: 100

0 commit comments

Comments
 (0)