Skip to content

Commit 99bb406

Browse files
committed
feat: initial ergo-node chart
1 parent 054e70b commit 99bb406

File tree

7 files changed

+282
-0
lines changed

7 files changed

+282
-0
lines changed

charts/ergo-node/Chart.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
apiVersion: v2
2+
name: ergo-node
3+
description: Ergo protocol description & reference client implementation
4+
version: 0.1.0
5+
appVersion: "latest"
6+
maintainers:
7+
- name: wolf31o2
8+
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
{{/* vim: set filetype=mustache: */}}
2+
{{/*
3+
Expand the name of the chart.
4+
*/}}
5+
{{- define "ergo-node.name" -}}
6+
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
7+
{{- end -}}
8+
9+
{{/*
10+
Create a default fully qualified app name.
11+
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
12+
If release name contains chart name it will be used as a full name.
13+
*/}}
14+
{{- define "ergo-node.fullname" -}}
15+
{{- if .Values.fullnameOverride -}}
16+
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
17+
{{- else -}}
18+
{{- $name := default .Chart.Name .Values.nameOverride -}}
19+
{{- if contains $name .Release.Name -}}
20+
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
21+
{{- else -}}
22+
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
23+
{{- end -}}
24+
{{- end -}}
25+
{{- end -}}
26+
27+
28+
{{/*
29+
Create chart name and version as used by the chart label.
30+
*/}}
31+
{{- define "ergo-node.chart" -}}
32+
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
33+
{{- end -}}
34+
35+
36+
{{/*
37+
Define ergo network.
38+
*/}}
39+
{{- define "ergo-node.network" -}}
40+
{{- if .Values.ergo_network -}}
41+
{{ .Values.ergo_network }}
42+
{{- else -}}
43+
"mainnet"
44+
{{- end -}}
45+
{{- end -}}
46+
47+
{{/*
48+
Common labels
49+
*/}}
50+
{{- define "ergo-node.labels" -}}
51+
app.kubernetes.io/name: {{ include "ergo-node.fullname" . }}
52+
helm.sh/chart: {{ include "ergo-node.chart" . }}
53+
app.kubernetes.io/instance: {{ .Release.Name }}
54+
{{- if .Chart.AppVersion }}
55+
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
56+
{{- end }}
57+
app.kubernetes.io/managed-by: {{ .Release.Service }}
58+
ergo_network: {{ include "ergo-node.network" . }}
59+
ergo_service: ergo-node
60+
{{- end -}}
61+
62+
{{/*
63+
ergo node selector labels
64+
*/}}
65+
{{- define "ergo-node.matchLabels" -}}
66+
app.kubernetes.io/name: {{ include "ergo-node.fullname" . }}
67+
app.kubernetes.io/instance: {{ .Release.Name }}
68+
ergo_network: {{ include "ergo-node.network" . }}
69+
ergo_service: ergo-node
70+
{{- end -}}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
apiVersion: v1
2+
kind: ConfigMap
3+
metadata:
4+
name: {{ include "ergo-node.fullname" . }}-config
5+
labels:
6+
{{- include "ergo-node.labels" . | nindent 4 }}
7+
data:
8+
ergo.conf: |
9+
ergo {
10+
node {
11+
mining = {{ .Values.ergo.node.mining }}
12+
extraIndex = {{ .Values.ergo.node.extraIndex }}
13+
stateType = "{{ .Values.ergo.node.stateType }}"
14+
verifyTransactions = {{ .Values.ergo.node.verifyTransactions }}
15+
blocksToKeep = {{ .Values.ergo.node.blocksToKeep }}
16+
17+
utxo {
18+
utxoBootstrap = {{ .Values.ergo.node.utxo.utxoBootstrap }}
19+
storingUtxoSnapshots = {{ .Values.ergo.node.utxo.storingUtxoSnapshots }}
20+
p2pUtxoSnapshots = {{ .Values.ergo.node.utxo.p2pUtxoSnapshots }}
21+
}
22+
23+
nipopow {
24+
nipopowBootstrap = {{ .Values.ergo.node.nipopow.nipopowBootstrap }}
25+
p2pNipopows = {{ .Values.ergo.node.nipopow.p2pNipopows }}
26+
}
27+
}
28+
}
29+
30+
scorex {
31+
restApi {
32+
{{- if and .Values.scorex.restApi.publicUrl (ne .Values.scorex.restApi.publicUrl "") }}
33+
publicUrl = "{{ .Values.scorex.restApi.publicUrl }}"
34+
{{- end }}
35+
apiKeyHash = "{{ .Values.scorex.restApi.apiKeyHash }}"
36+
{{- if .Values.scorex.restApi.cors }}
37+
cors = [
38+
{{- range $index, $origin := .Values.scorex.restApi.cors }}
39+
"{{ $origin }}"{{- if not (eq (add1 $index) (len $.Values.scorex.restApi.cors)) }},{{ end }}
40+
{{- end }}
41+
]
42+
{{- end }}
43+
}
44+
45+
network {
46+
{{- if and .Values.scorex.network.declaredAddress (ne .Values.scorex.network.declaredAddress "") }}
47+
declaredAddress = "{{ .Values.scorex.network.declaredAddress }}"
48+
{{- end }}
49+
nodeName = "{{ .Values.scorex.network.nodeName }}"
50+
{{- if and .Values.scorex.network.knownPeers (gt (len .Values.scorex.network.knownPeers) 0) }}
51+
knownPeers = [
52+
{{- range $index, $peer := .Values.scorex.network.knownPeers }}
53+
"{{ $peer }}"{{- if not (eq (add1 $index) (len $.Values.scorex.network.knownPeers)) }},{{ end }}
54+
{{- end }}
55+
]
56+
{{- end }}
57+
}
58+
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
apiVersion: apps/v1
2+
kind: Deployment
3+
metadata:
4+
name: {{ include "ergo-node.fullname" . }}
5+
labels:
6+
{{- include "ergo-node.labels" . | nindent 4 }}
7+
spec:
8+
replicas: {{ .Values.replicaCount | default 1 }}
9+
selector:
10+
matchLabels:
11+
app.kubernetes.io/name: {{ .Chart.Name }}
12+
app.kubernetes.io/instance: {{ .Release.Name }}
13+
template:
14+
metadata:
15+
labels:
16+
app.kubernetes.io/name: {{ .Chart.Name }}
17+
app.kubernetes.io/instance: {{ .Release.Name }}
18+
spec:
19+
containers:
20+
- name: ergo
21+
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default "latest" }}"
22+
imagePullPolicy: {{ .Values.image.pullPolicy | default "IfNotPresent" }}
23+
command: ["java"]
24+
args:
25+
- "-jar"
26+
- "/home/ergo/ergo.jar"
27+
- "--{{ include "ergo-node.network" . }}"
28+
- "-c"
29+
- "/ergo/ergo.conf"
30+
env:
31+
- name: JAVA_TOOL_OPTIONS
32+
value: "-Xms{{ .Values.ergo.heapInitial }} -Xmx{{ .Values.ergo.heap }}"
33+
- name: _JAVA_OPTIONS
34+
value: ""
35+
ports:
36+
- name: p2p
37+
containerPort: {{ .Values.service.p2pPort | default 9030 }}
38+
- name: api
39+
containerPort: {{ .Values.service.apiPort | default 9053 }}
40+
volumeMounts:
41+
- name: config
42+
mountPath: /ergo/ergo.conf
43+
subPath: ergo.conf
44+
{{- if .Values.persistence.enabled }}
45+
- name: data
46+
mountPath: /home/ergo/.ergo
47+
{{- end }}
48+
volumes:
49+
- name: config
50+
configMap:
51+
name: {{ include "ergo-node.fullname" . }}-config
52+
{{- if .Values.persistence.enabled }}
53+
- name: data
54+
persistentVolumeClaim:
55+
claimName: {{ include "ergo-node.fullname" . }}-data
56+
{{- end }}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
{{- if .Values.persistence.enabled }}
2+
apiVersion: v1
3+
kind: PersistentVolumeClaim
4+
metadata:
5+
name: {{ include "ergo-node.fullname" . }}-data
6+
labels:
7+
{{- include "ergo-node.labels" . | nindent 4 }}
8+
spec:
9+
accessModes:
10+
{{- range .Values.persistence.accessModes }}
11+
- {{ . }}
12+
{{- end }}
13+
resources:
14+
requests:
15+
storage: {{ .Values.persistence.size }}
16+
{{- if .Values.persistence.storageClass }}
17+
storageClassName: {{ .Values.persistence.storageClass }}
18+
{{- end }}
19+
{{- end }}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
apiVersion: v1
3+
kind: Service
4+
metadata:
5+
labels:
6+
{{- include "ergo-node.labels" . | nindent 4 }}
7+
name: {{ include "ergo-node.fullname" . }}
8+
spec:
9+
type: {{ .Values.service.type | default "NodePort" }}
10+
ports:
11+
- name: api
12+
port: {{ .Values.service.apiPort | default 9053 }}
13+
targetPort: api
14+
protocol: TCP
15+
- name: p2p
16+
port: {{ .Values.service.p2pPort | default 9030 }}
17+
targetPort: p2p
18+
protocol: TCP
19+
selector:
20+
app.kubernetes.io/name: {{ .Chart.Name }}
21+
app.kubernetes.io/instance: {{ .Release.Name }}

charts/ergo-node/values.yaml

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
image:
3+
repository: ergoplatform/ergo
4+
tag: latest
5+
pullPolicy: IfNotPresent
6+
replicaCount: 1
7+
8+
ergo_network: "mainnet"
9+
ergo:
10+
heapInitial: "8G" #JVM starting heap
11+
heap: "12G" #JVM max heap
12+
node:
13+
mining: false
14+
extraIndex: true
15+
stateType: "utxo"
16+
verifyTransactions: true
17+
blocksToKeep: -1
18+
utxo:
19+
utxoBootstrap: false
20+
storingUtxoSnapshots: 2
21+
p2pUtxoSnapshots: 2
22+
nipopow:
23+
nipopowBootstrap: false
24+
p2pNipopows: 2
25+
26+
scorex:
27+
restApi:
28+
publicUrl: ""
29+
apiKeyHash: "324dcf027dd4a30a932c441f365a25e86b173defa4b8e58948253471b81b72cf" # Ergo default 'hello'
30+
cors:
31+
- "*" # for local/dev add hostnames for production
32+
network:
33+
declaredAddress: ""
34+
nodeName: "k8s-ergo-node"
35+
# knownPeers:
36+
# - "51.75.147.1:9020"
37+
# - "141.95.124.98:29031"
38+
# - "50.112.210.198:9030"
39+
# - "54.38.153.112:29031"
40+
41+
service:
42+
type: NodePort
43+
apiPort: 9053
44+
p2pPort: 9030
45+
46+
persistence:
47+
enabled: true
48+
size: 200Gi
49+
accessModes:
50+
- ReadWriteOnce

0 commit comments

Comments
 (0)