Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 4 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -23,11 +23,13 @@ relayerdb
venv/

deploy

!deploy/
!deploy/**
deploy/networks
smart-contracts/combined.log
smart-contracts/yarn-error.log
test/integration/output.json
test/integration/sifchainrelayerdb/*
*.log

dist
dist
18 changes: 18 additions & 0 deletions deploy/helm/sifnode/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Patterns to ignore when building packages.
.DS_Store
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
*.swp
*.bak
*.tmp
*.orig
*~
.project
.idea/
*.tmproj
.vscode/
6 changes: 6 additions & 0 deletions deploy/helm/sifnode/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: v2
name: sifnode
description: Sifchain full node
type: application
version: 0.1.0
appVersion: 1.16.0
43 changes: 43 additions & 0 deletions deploy/helm/sifnode/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
{{/* vim: set filetype=mustache: */}}
{{- define "sifnode.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- define "sifnode.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}

{{- define "sifnode.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

{{- define "sifnode.labels" -}}
helm.sh/chart: {{ include "sifnode.chart" . }}
{{ include "sifnode.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}

{{- define "sifnode.selectorLabels" -}}
app.kubernetes.io/name: {{ include "sifnode.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{- define "sifnode.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "sifnode.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
12 changes: 12 additions & 0 deletions deploy/helm/sifnode/templates/serviceaccount.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "sifnode.serviceAccountName" . }}
labels:
{{- include "sifnode.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
26 changes: 26 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-configmap.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "sifnode.fullname" . }}-scripts
data:
external-ip.sh: |
#!/bin/sh

apk add --no-cache bind-tools >/dev/null 2>&1 || true

SERVICE=$1
CONFIGMAP=$2

external_ip=""

while [ -z "$external_ip" ]; do
echo "Waiting for load balancer external endpoint..."
external_ip=$(kubectl get svc "$SERVICE" -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
if [ -z "$external_ip" ]; then
hostname=$(kubectl get svc "$SERVICE" -o jsonpath='{.status.loadBalancer.ingress[0].hostname}')
[ ! -z "$hostname" ] && external_ip=$(dig +short "$hostname" | sort | head -1)
fi
[ -z "$external_ip" ] && sleep 10
done

kubectl create configmap "$CONFIGMAP" --from-literal=externalIP="$external_ip" --dry-run=client -o yaml | kubectl apply -f -
111 changes: 111 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-deployment.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "sifnode.fullname" . }}
labels:
{{- include "sifnode.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "sifnode.selectorLabels" . | nindent 6 }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "sifnode.selectorLabels" . | nindent 8 }}
spec:
serviceAccountName: {{ include "sifnode.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
initContainers:
- name: external-ip
image: alpine/k8s:1.18.2
command:
- /bin/sh
- /scripts/external-ip.sh
- sifnode
- {{ printf "%s-external-ip" (include "sifnode.fullname" .) | quote }}
volumeMounts:
- name: scripts
mountPath: /scripts
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
command: ["/bin/sh"]
volumeMounts:
- name: data
mountPath: /root/
{{- if .Values.sifnode.env.peerAddress }}
args: ["-c", "sifgen node create $CHAINNET $MONIKER \"$MNEMONIC\" $EXTERNAL_IP $PEER_ADDRESS $GENESIS_URL; sifnoded start --rpc.laddr tcp://0.0.0.0:26657"]
{{- else }}
args: ["-c", "sifgen node create $CHAINNET $MONIKER \"$MNEMONIC\" $EXTERNAL_IP; sifnoded start --rpc.laddr tcp://0.0.0.0:26657"]
{{- end }}
ports:
- name: p2p
containerPort: 26656
protocol: TCP
- name: rpc
containerPort: 26657
protocol: TCP
env:
- name: CHAINNET
value: {{ .Values.sifnode.env.chainnet | quote }}
- name: MONIKER
value: {{ .Values.sifnode.env.moniker | quote }}
- name: MNEMONIC
valueFrom:
secretKeyRef:
name: {{ include "sifnode.fullname" . }}
key: mnemonic
- name: EXTERNAL_IP
valueFrom:
configMapKeyRef:
name: {{ include "sifnode.fullname" . }}-external-ip
key: externalIP
- name: PEER_ADDRESS
value: {{ .Values.sifnode.env.peerAddress | quote }}
- name: GENESIS_URL
value: {{ .Values.sifnode.env.genesisURL | quote }}
livenessProbe:
tcpSocket:
port: 26657
initialDelaySeconds: 5
periodSeconds: 10
readinessProbe:
tcpSocket:
port: 26657
initialDelaySeconds: 5
periodSeconds: 10
resources:
{{- toYaml .Values.resources | nindent 12 }}
volumes:
- name: data
{{- if .Values.persistence.enabled }}
persistentVolumeClaim:
claimName: {{ template "sifnode.fullname" . }}
{{- else }}
emptyDir: {}
{{- end }}
- name: scripts
configMap:
name: {{ include "sifnode.fullname" . }}-scripts
defaultMode: 0777
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
23 changes: 23 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-pvc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if .Values.persistence.enabled }}
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: {{ template "sifnode.fullname" . }}
labels:
{{- include "sifnode.labels" . | nindent 4 }}
spec:
accessModes:
- {{ .Values.persistence.accessMode | quote }}
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.persistence.storageClass }}"
{{- end }}
{{- else if eq .Values.global.cloudProvider "azure" }}
storageClassName: "managed-csi"
{{- end }}
{{- end -}}
12 changes: 12 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-role.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: {{ include "sifnode.fullname" . }}
labels:
{{ include "sifnode.labels" . | nindent 4 }}
rules:
- apiGroups: [""]
resources: ["services", "configmaps"]
verbs: ["get", "watch", "list", "create", "update", "patch", "delete"]
{{- end -}}
16 changes: 16 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-rolebinding.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: {{ include "sifnode.fullname" . }}
labels:
{{ include "sifnode.labels" . | nindent 4 }}
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: {{ include "sifnode.fullname" . }}
subjects:
- kind: ServiceAccount
name: {{ include "sifnode.serviceAccountName" . }}
namespace: {{ .Release.Namespace }}
{{- end -}}
7 changes: 7 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-secret.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
apiVersion: v1
kind: Secret
metadata:
name: {{ include "sifnode.fullname" . }}
type: Opaque
data:
mnemonic: {{ .Values.sifnode.env.mnemonic | b64enc }}
30 changes: 30 additions & 0 deletions deploy/helm/sifnode/templates/sifnode-service.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "sifnode.fullname" . }}
labels:
{{- include "sifnode.labels" . | nindent 4 }}
{{- $isAws := eq .Values.global.cloudProvider "aws" }}
{{- if or $isAws .Values.sifnode.service.annotations }}
annotations:
{{- if $isAws }}
service.beta.kubernetes.io/aws-load-balancer-cross-zone-load-balancing-enabled: "true"
service.beta.kubernetes.io/aws-load-balancer-backend-protocol: "tcp"
service.beta.kubernetes.io/aws-load-balancer-proxy-protocol: "*"
service.beta.kubernetes.io/aws-load-balancer-type: "nlb"
{{- end }}
{{- with .Values.sifnode.service.annotations }}
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}
spec:
type: {{ .Values.sifnode.service.type }}
ports:
- port: 26656
protocol: TCP
name: p2p
- port: 26657
protocol: TCP
name: rpc
selector:
{{- include "sifnode.selectorLabels" . | nindent 4 }}
56 changes: 56 additions & 0 deletions deploy/helm/sifnode/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
global:
cloudProvider: aws

replicaCount: 1

imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""

serviceAccount:
create: true
annotations: {}
name: ""

podAnnotations: {}
podSecurityContext: {}
securityContext: {}

image:
repository: sifchain/sifnoded
pullPolicy: Always
tag: "testnet"

sifnode:
env:
chainnet:
moniker:
genesisURL:
peerAddress:
mnemonic: ""
service:
type: LoadBalancer
annotations: {}

service:
type: LoadBalancer
port: 26656

persistence:
enabled: true
size: 500Gi
accessMode: ReadWriteOnce
storageClass: ""

ingress:
enabled: false
annotations: {}
hosts:
- host: sifnode.local
paths: []
tls: []

resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
Loading