diff --git a/charts/w3f-polkadot/Chart.yaml b/charts/w3f-polkadot/Chart.yaml new file mode 100644 index 0000000..a8d0477 --- /dev/null +++ b/charts/w3f-polkadot/Chart.yaml @@ -0,0 +1,4 @@ +description: Polkadot Node chart. +name: w3f-polkadot +version: v0.34.1 +apiVersion: v2 diff --git a/charts/w3f-polkadot/templates/_helpers.tpl b/charts/w3f-polkadot/templates/_helpers.tpl new file mode 100644 index 0000000..7b30e67 --- /dev/null +++ b/charts/w3f-polkadot/templates/_helpers.tpl @@ -0,0 +1,90 @@ +{{/* Generates bootnodes string */}} +{{- define "polkadot-deployer.bootnodes" -}} +{{- range .Values.bootNodes }}--bootnodes={{ . }} {{ end -}} +{{- end }} + +{{/* Returns custom-chainspec configmap name */}} +{{- define "polkadot-deployer.custom-chainspec-configmap" -}} +polkadot-custom-chainspec +{{- end }} + +{{/* Returns the certificate name */}} +{{- define "polkadot-deployer.certificateName" -}} +{{ .Release.Name }} +{{- end }} + +{{/* Returns the TLS secret name */}} +{{- define "polkadot-deployer.tlsSecretName" -}} +{{ .Release.Name }} +{{- end }} + +{{/* Returns the session key secret name */}} +{{- define "polkadot-deployer.sessionKey" -}} +{{ .Release.Name }}-session-key +{{- end }} + +{{/* Returns the node key secret name */}} +{{- define "polkadot-deployer.nodeKey" -}} +{{ .Release.Name }}-node-key +{{- end }} + +{{/* Returns the PSP name */}} +{{- define "polkadot-deployer.podSecurityPolicyName" -}} +{{ .Release.Name }} +{{- end }} + +{{/* Returns the external websockets service name */}} +{{- define "polkadot-deployer.websocketService" -}} +{{ .Release.Name }}-external-websockets +{{- end }} + +{{/* Returns the telemetry parameter content */}} +{{- define "polkadot-deployer.telemetry" -}} +{{- if .Values.telemetry }}--telemetry-url={{ .Values.telemetry }} {{ end -}} +{{- end }} + +{{/* Returns the p2p service name */}} +{{- define "polkadot-deployer.p2pService" -}} +{{ .Release.Name }}-p2p +{{- end }} + +{{/* Returns the http RPC service name */}} +{{- define "polkadot-deployer.rpcService" -}} +{{ .Release.Name }}-rpc +{{- end }} + +{{/* Returns the bootnode service name */}} +{{- define "polkadot-deployer.bootnodeService" -}} +{{ .Release.Name }}-bootnode +{{- end }} + +{{/* Returns the chainspec to use */}} +{{- define "polkadot-deployer.chainspecName" -}} +{{- if .Values.chainspec.preset -}} +{{ .Values.chainspec.name }} +{{- else -}} +{{ .Values.chainspec.basePath }}/{{ .Values.chainspec.name }} +{{- end -}} +{{- end }} + +{{/* Returns the statefulset name */}} +{{- define "polkadot-deployer.statefulsetName" -}} +{{ .Release.Name }} +{{- end }} + +{{/* Returns the default name to use with session injection related resources */}} +{{- define "polkadot-deployer.sessionInjectionName" -}} +{{ .Release.Name }}-session-injection +{{- end }} + +{{/* Returns the default name to use with pod restarter related resources */}} +{{- define "polkadot-deployer.podRestarterName" -}} +{{ .Release.Name }}-pod-restarter +{{- end }} + +{{/* Json for private docker registry */}} +{{- define "imagePullSecret" }} +{{- with .Values.imagePullSecret.imageCredentials }} +{{- printf "{\"auths\":{\"%s\":{\"username\":\"%s\",\"password\":\"%s\",\"email\":\"%s\",\"auth\":\"%s\"}}}" .registry .username .password .email (printf "%s:%s" .username .password | b64enc) | b64enc }} +{{- end }} +{{- end }} diff --git a/charts/w3f-polkadot/templates/configmap.yaml b/charts/w3f-polkadot/templates/configmap.yaml new file mode 100644 index 0000000..4a7b6c2 --- /dev/null +++ b/charts/w3f-polkadot/templates/configmap.yaml @@ -0,0 +1,80 @@ +{{ if .Values.createConfigMap -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "polkadot-deployer.custom-chainspec-configmap" . }} +data: + custom_chainspec.json: |- + {{- $totalItems := len .Values.chainspec.addresses.stash }} + {{- $lastIndex := sub $totalItems 1 }} + { + "name": {{ .Values.networkName | quote }}, + "id": {{ .Values.networkName | quote }}, + "bootNodes": [ + {{- $lastBootIndex := sub (len .Values.bootNodes) 1}} + {{- range $index, $value := .Values.bootNodes }} + {{ $value | quote }}{{- if ne $index $lastBootIndex }},{{- end }} + {{- end }} + ], + "protocolId": "dot", + "properties": { + "tokenDecimals": 15 + }, + "genesis": { + "runtime": { + "palletBalances": { + "balances": [ + {{- range $index, $value := .Values.chainspec.addresses.stash }} + [ + {{ $value | quote }}, + 1048576000000000000 + ]{{- if ne $index $lastIndex }},{{- end }} + {{- end }} + ] + }, + "palletSession": { + "keys": [ + {{- $grandpaSessionKeys := .Values.chainspec.addresses.session_grandpa }} + {{- $babeSessionKeys := .Values.chainspec.addresses.session_babe }} + {{- $imonlineSessionKeys := .Values.chainspec.addresses.session_imonline }} + {{- $parachainSessionKeys := .Values.chainspec.addresses.session_parachain }} + {{- $audiSessionKeys := .Values.chainspec.addresses.session_audi }} + + {{- range $index, $value := .Values.chainspec.addresses.stash }} + [ + {{ $value | quote }}, + {{ $value | quote }}, + { + "grandpa": {{ index $grandpaSessionKeys $index | quote }}, + "babe": {{ index $babeSessionKeys $index | quote }}, + "parachain_validator": {{ index $parachainSessionKeys $index | quote }}, + "im_online": {{ index $imonlineSessionKeys $index | quote }}, + "authority_discovery": {{ index $audiSessionKeys $index | quote }} + } + ]{{- if ne $index $lastIndex }},{{- end }} + {{- end }} + ] + }, + "palletStaking": { + "validatorCount": {{ $totalItems }}, + "invulnerables": [ + {{- range $index, $value := .Values.chainspec.addresses.stash }} + {{ $value | quote }}{{- if ne $index $lastIndex }},{{- end }} + {{- end }} + ], + "stakers": [ + {{- $controllers := .Values.chainspec.addresses.controller }} + {{- range $index, $value := .Values.chainspec.addresses.stash }} + [ + {{ $value | quote }}, + {{ index $controllers $index | quote }}, + 5000, + "Validator" + ]{{- if ne $index $lastIndex }},{{- end }} + {{- end }} + ] + } + } + } + } +{{ end }} diff --git a/charts/w3f-polkadot/templates/cronjob-pod-restart.yaml b/charts/w3f-polkadot/templates/cronjob-pod-restart.yaml new file mode 100644 index 0000000..7d3308c --- /dev/null +++ b/charts/w3f-polkadot/templates/cronjob-pod-restart.yaml @@ -0,0 +1,20 @@ +{{ if .Values.nodeRestart.enabled }} +apiVersion: batch/v1beta1 +kind: CronJob +metadata: + name: {{ include "polkadot-deployer.podRestarterName" . }} +spec: + schedule: {{ .Values.nodeRestart.schedule }} + jobTemplate: + spec: + template: + spec: + serviceAccountName: {{ include "polkadot-deployer.podRestarterName" . }} + containers: + - name: {{ include "polkadot-deployer.podRestarterName" . }} + image: {{ .Values.initImage.repo }}:{{ .Values.initImage.tag }} + args: + - /app/restart_pods.sh + - {{ include "polkadot-deployer.statefulsetName" . }} + restartPolicy: Never +{{ end }} diff --git a/charts/w3f-polkadot/templates/job-session-injection.yaml b/charts/w3f-polkadot/templates/job-session-injection.yaml new file mode 100644 index 0000000..1ea3028 --- /dev/null +++ b/charts/w3f-polkadot/templates/job-session-injection.yaml @@ -0,0 +1,38 @@ +{{ if and .Values.validator .Values.sessionInjection.enabled }} +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ include "polkadot-deployer.sessionInjectionName" . }} +spec: + template: + spec: + serviceAccountName: {{ include "polkadot-deployer.sessionInjectionName" . }} + containers: + - name: {{ include "polkadot-deployer.sessionInjectionName" . }} + image: {{ .Values.initImage.repo }}:{{ .Values.initImage.tag }} + command: + - /app/inject_session_keys.sh + - {{ include "polkadot-deployer.rpcService" . }}:{{ .Values.rpcPort }} + - {{ include "polkadot-deployer.statefulsetName" . }} + volumeMounts: + - name: session-keys + mountPath: /keys + restartPolicy: Never + volumes: + - name: session-keys + secret: + secretName: {{ include "polkadot-deployer.sessionKey" . }} + defaultMode: 256 + items: + - key: grandpa-session-key + path: grandpa-session + - key: babe-session-key + path: babe-session + - key: imonline-session-key + path: imonline-session + - key: parachain-session-key + path: parachain-session + - key: audi-session-key + path: audi-session + backoffLimit: 120 +{{ end }} diff --git a/charts/w3f-polkadot/templates/role-pod-restarter.yaml b/charts/w3f-polkadot/templates/role-pod-restarter.yaml new file mode 100644 index 0000000..e9d3569 --- /dev/null +++ b/charts/w3f-polkadot/templates/role-pod-restarter.yaml @@ -0,0 +1,16 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: Role +metadata: + name: {{ include "polkadot-deployer.podRestarterName" . }} +rules: +- apiGroups: ["apps"] + verbs: + - "get" + resources: + - "statefulsets" +- apiGroups: ["apps"] + verbs: + - "get" + - "patch" + resources: + - "statefulsets/scale" diff --git a/charts/w3f-polkadot/templates/rolebinding-pod-restarter.yaml b/charts/w3f-polkadot/templates/rolebinding-pod-restarter.yaml new file mode 100644 index 0000000..d35904e --- /dev/null +++ b/charts/w3f-polkadot/templates/rolebinding-pod-restarter.yaml @@ -0,0 +1,13 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: RoleBinding +metadata: + name: {{ include "polkadot-deployer.podRestarterName" . }} +roleRef: + apiGroup: rbac.authorization.k8s.io + kind: Role + name: {{ include "polkadot-deployer.podRestarterName" . }} +subjects: +- kind: ServiceAccount + name: {{ include "polkadot-deployer.sessionInjectionName" . }} +- kind: ServiceAccount + name: {{ include "polkadot-deployer.podRestarterName" . }} diff --git a/charts/w3f-polkadot/templates/secret-docker-registry.yaml b/charts/w3f-polkadot/templates/secret-docker-registry.yaml new file mode 100644 index 0000000..1f8862a --- /dev/null +++ b/charts/w3f-polkadot/templates/secret-docker-registry.yaml @@ -0,0 +1,9 @@ +{{ if .Values.imagePullSecret }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ .Values.imagePullSecret.secretName | default "dockerregistrysecret" }} +type: kubernetes.io/dockerconfigjson +data: + .dockerconfigjson: {{ template "imagePullSecret" . }} +{{ end }} diff --git a/charts/w3f-polkadot/templates/secret-node-key.yaml b/charts/w3f-polkadot/templates/secret-node-key.yaml new file mode 100644 index 0000000..e7f4596 --- /dev/null +++ b/charts/w3f-polkadot/templates/secret-node-key.yaml @@ -0,0 +1,9 @@ +{{ if .Values.nodeKey }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "polkadot-deployer.nodeKey" . }} +type: Opaque +data: + node-key: {{ .Values.nodeKey | b64enc }} +{{ end }} diff --git a/charts/w3f-polkadot/templates/secret-session-key.yaml b/charts/w3f-polkadot/templates/secret-session-key.yaml new file mode 100644 index 0000000..f1cc3b6 --- /dev/null +++ b/charts/w3f-polkadot/templates/secret-session-key.yaml @@ -0,0 +1,13 @@ +{{ if and .Values.validator .Values.sessionInjection.enabled }} +apiVersion: v1 +kind: Secret +metadata: + name: {{ include "polkadot-deployer.sessionKey" . }} +type: Opaque +data: + grandpa-session-key: {{ .Values.keys.session_grandpa | b64enc }} + babe-session-key: {{ .Values.keys.session_babe | b64enc }} + imonline-session-key: {{ .Values.keys.session_imonline | b64enc }} + parachain-session-key: {{ .Values.keys.session_parachain | b64enc }} + audi-session-key: {{ .Values.keys.session_audi | b64enc }} +{{- end }} diff --git a/charts/w3f-polkadot/templates/service-node.yaml b/charts/w3f-polkadot/templates/service-node.yaml new file mode 100644 index 0000000..8ea62a4 --- /dev/null +++ b/charts/w3f-polkadot/templates/service-node.yaml @@ -0,0 +1,14 @@ +{{ if .Values.createBootnodeService -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "polkadot-deployer.bootnodeService" . }} + labels: + node: {{ .Release.Name }} +spec: + ports: + - port: {{ .Values.p2pPort }} + name: p2p + selector: + node: {{ .Release.Name }} +{{ end }} diff --git a/charts/w3f-polkadot/templates/service-p2p.yaml b/charts/w3f-polkadot/templates/service-p2p.yaml new file mode 100644 index 0000000..bf314ab --- /dev/null +++ b/charts/w3f-polkadot/templates/service-p2p.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "polkadot-deployer.p2pService" . }} + labels: + node: {{ .Release.Name }} +spec: + externalTrafficPolicy: Local + ports: + - port: {{ .Values.p2pPort }} + name: p2p + nodePort: {{ .Values.p2pPort }} + selector: + node: {{ .Release.Name }} + type: NodePort diff --git a/charts/w3f-polkadot/templates/service-rpc.yaml b/charts/w3f-polkadot/templates/service-rpc.yaml new file mode 100644 index 0000000..63bb7ff --- /dev/null +++ b/charts/w3f-polkadot/templates/service-rpc.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "polkadot-deployer.rpcService" . }} + labels: + node: {{ .Release.Name }} +spec: + ports: + - port: {{ .Values.rpcPort }} + name: http-rpc + - port: {{ .Values.metricsPort }} + name: metrics + selector: + node: {{ .Release.Name }} diff --git a/charts/w3f-polkadot/templates/serviceaccount-pod-restarter.yaml b/charts/w3f-polkadot/templates/serviceaccount-pod-restarter.yaml new file mode 100644 index 0000000..d471b9d --- /dev/null +++ b/charts/w3f-polkadot/templates/serviceaccount-pod-restarter.yaml @@ -0,0 +1,6 @@ +{{ if .Values.nodeRestart.enabled }} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "polkadot-deployer.podRestarterName" . }} +{{ end }} diff --git a/charts/w3f-polkadot/templates/serviceaccount-session-injection.yaml b/charts/w3f-polkadot/templates/serviceaccount-session-injection.yaml new file mode 100644 index 0000000..f348e6f --- /dev/null +++ b/charts/w3f-polkadot/templates/serviceaccount-session-injection.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "polkadot-deployer.sessionInjectionName" . }} diff --git a/charts/w3f-polkadot/templates/servicemonitor.yaml b/charts/w3f-polkadot/templates/servicemonitor.yaml new file mode 100644 index 0000000..79fe41a --- /dev/null +++ b/charts/w3f-polkadot/templates/servicemonitor.yaml @@ -0,0 +1,15 @@ +{{ if .Values.monitoring }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ .Release.Name }} + labels: +{{ toYaml .Values.serviceMonitorLabels | indent 4 }} + release: prometheus-operator +spec: + selector: + matchLabels: + node: {{ .Release.Name }} + endpoints: + - port: metrics +{{ end }} diff --git a/charts/w3f-polkadot/templates/statefulset.yaml b/charts/w3f-polkadot/templates/statefulset.yaml new file mode 100644 index 0000000..322d270 --- /dev/null +++ b/charts/w3f-polkadot/templates/statefulset.yaml @@ -0,0 +1,222 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "polkadot-deployer.statefulsetName" . }} + labels: + node: {{ .Release.Name }} + app: {{ .Release.Name }} +spec: + replicas: 1 + revisionHistoryLimit: 3 + updateStrategy: + type: RollingUpdate + selector: + matchLabels: + node: {{ .Release.Name }} + app: {{ .Release.Name }} + serviceName: {{ include "polkadot-deployer.statefulsetName" . }} + template: + metadata: + labels: + node: {{ .Release.Name }} + app: {{ .Release.Name }} + spec: + {{- if not .Values.local }} + securityContext: + runAsUser: 1000 + fsGroup: 1000 + runAsNonRoot: true + {{- end }} + {{- if .Values.dnsNameservers }} + dnsPolicy: "None" + dnsConfig: + nameservers: +{{ toYaml .Values.dnsNameservers | indent 8 }} + {{ end }} + initContainers: + {{- if .Values.local }} + - name: volume-mount-permissions-data + image: busybox + command: ["sh", "-c", "chown -R 1000:1000 /data"] + securityContext: + runAsUser: 0 + runAsNonRoot: false + volumeMounts: + - name: data + mountPath: /data + {{- end }} + {{- if not .Values.chainspec.preset }} + - name: volume-mount-permissions-chainspec + image: busybox + command: ["sh", "-c", "chown -R 1000:1000 /chainspec"] + securityContext: + runAsUser: 0 + runAsNonRoot: false + volumeMounts: + - name: chainspec + mountPath: /chainspec + - name: {{ .Release.Name }}-init + image: {{ .Values.initImage.repo }}:{{ .Values.initImage.tag }} + command: + {{- if .Values.chainspec.custom }} + - /app/merge_chainspec.sh + - /app/custom_chainspec.json + {{- else }} + - cp + - /app/{{ .Values.chainspec.name }} + {{- end }} + - {{ include "polkadot-deployer.chainspecName" . }} + volumeMounts: + - name: chainspec + mountPath: {{ .Values.chainspec.basePath }} + {{- if .Values.chainspec.custom }} + - name: custom-chainspec + mountPath: /app/custom_chainspec.json + subPath: custom_chainspec.json + {{- end }} + {{- end }} + {{- if .Values.imagePullSecret }} + imagePullSecrets: + - name: {{ .Values.imagePullSecret.secretName }} + {{- end }} + containers: + - name: {{ .Release.Name }} + image: {{ .Values.image.repo }}:{{ .Values.image.tag }} + imagePullPolicy: IfNotPresent + command: ["/bin/sh"] + args: + - -c + - exec /usr/bin/{{ .Values.binaryName | default "polkadot" }} + {{- $chainspec := include "polkadot-deployer.chainspecName" . -}} + {{- if $chainspec }} + --chain={{ $chainspec }} + {{- end }} + --name={{ .Values.name }} + -d=/data + {{- if .Values.unsafeEndpointAccess }} + --unsafe-rpc-external + --unsafe-ws-external + --rpc-methods=Unsafe + {{- else }} + --rpc-external + --ws-external + {{- end }} + --rpc-cors all + --port {{ .Values.p2pPort }} + {{- if .Values.nodeKey }} + --node-key=$(cat /etc/polkadot/node-key) + {{- end }} + {{- if .Values.validator }} + --validator + {{- if .Values.extraArgs.validator }} + {{ .Values.extraArgs.validator }} + {{- end }} + {{- else if .Values.inPeers }} + --in-peers {{ .Values.inPeers }} + {{- if .Values.extraArgs.bootnode }} + {{ .Values.extraArgs.bootnode }} + {{- end }} + {{- end }} + {{- if .Values.telemetry }} + --telemetry-url '{{ .Values.telemetry }} 1' + {{- end }} + {{- if .Values.extraArgs.common }} + {{ .Values.extraArgs.common }} + {{- end }} + {{- if .Values.monitoring }} + --prometheus-external + {{- end }} + {{- range $value := .Values.extraBootnodes }} + --bootnodes={{ $value }} + {{- end }} + ports: + - containerPort: {{ .Values.p2pPort }} + name: p2p + - containerPort: {{ .Values.rpcPort }} + name: http-rpc + - containerPort: 9944 + name: websocket-rpc + - containerPort: {{ .Values.metricsPort }} + name: metrics + readinessProbe: + failureThreshold: 100 + httpGet: + path: /health + port: http-rpc + initialDelaySeconds: 10 + periodSeconds: 10 + livenessProbe: + failureThreshold: 100 + httpGet: + path: /health + port: http-rpc + initialDelaySeconds: 10 + periodSeconds: 10 + volumeMounts: + - name: data + mountPath: /data + {{- if not .Values.chainspec.preset }} + - name: chainspec + mountPath: {{ .Values.chainspec.basePath }} + {{- end }} + {{- if .Values.nodeKey }} + - name: node-key + mountPath: /etc/polkadot/node-key + subPath: node-key + {{- end }} + resources: +{{ toYaml .Values.resources | indent 10 }} + {{- if or .Values.nodeKey .Values.chainspec.custom }} + volumes: + {{- if .Values.nodeKey }} + - name: node-key + secret: + secretName: {{ include "polkadot-deployer.nodeKey" . }} + {{- if .Values.local }} + defaultMode: 511 + {{- else }} + defaultMode: 256 + {{- end }} + items: + - key: node-key + path: node-key + {{- end }} + {{- if .Values.chainspec.custom }} + - name: custom-chainspec + configMap: + name: {{ include "polkadot-deployer.custom-chainspec-configmap" . }} + {{- end }} + {{- end }} + volumeClaimTemplates: + - metadata: + name: data + spec: + {{- if .Values.persistence.enabled }} + accessModes: {{ .Values.persistence.accessModes }} + resources: + requests: + storage: {{ .Values.persistence.dataSize }} + {{- else }} + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 3Gi + {{- end }} + {{- if not .Values.chainspec.preset }} + - metadata: + name: chainspec + spec: + {{- if .Values.persistence.enabled }} + accessModes: {{ .Values.persistence.accessModes }} + resources: + requests: + storage: {{ .Values.persistence.chainspecSize }} + {{- else }} + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + {{- end }} + {{ end }} diff --git a/charts/w3f-polkadot/values.yaml b/charts/w3f-polkadot/values.yaml new file mode 100644 index 0000000..1f4babe --- /dev/null +++ b/charts/w3f-polkadot/values.yaml @@ -0,0 +1,93 @@ +image: + repo: parity/polkadot + tag: v0.8.27 + +initImage: + repo: web3f/polkadot-deployer + tag: 03c71cbe8e96cb241f6d0ca7ba1103c1a82f12e5 + +name: testnet-0-0 +deploymentName: testnet-0 +networkName: testnet + +chainspec: + preset: false + custom: true + basePath: "/chainspec" + name: "chainspec.json" + addresses: + stash: ["stash_key_1", "stash_key2"] + controller: ["controller_key_1", "controller_key2"] + +keys: + session_grandpa: "session_key" + session_babe: "session_key" + session_imonline: "session_key" + session_parachain: "session_key" + session_audi: "session_key" + +bootNodes: +- "/dns4/polkadot-node-0/tcp/30333/p2p/QmRpheLN4JWdAnY7HGJfWFNbfkQCb6tFf4vvA6hgjMZKrR" + +createBootnodeService: false +createConfigMap: false + +validator: true + +resources: {} +# requests: +# memory: "5Gi" +# cpu: "1.5" + +persistence: + enabled: false + dataSize: 200Gi + chainspecSize: 1Gi + accessModes: [ "ReadWriteOnce" ] + +dnsNameservers: +- 173.245.58.93 +- 173.245.59.247 + +telemetry: "" + +p2pPort: 30333 +rpcPort: 9933 +metricsPort: 9615 + +extraArgs: + validator: "" + bootnode: "" + common: "" + +extraBootnodes: [] + +local: false + +nodeRestart: + enabled: false + schedule: "0 4,12,20 * * *" + +sessionInjection: + enabled: true + +unsafeEndpointAccess: true + +binaryName: polkadot + +monitoring: false + +alertRulesLabels: + app: polkadot + +serviceMonitorLabels: + release: prometheus-operator + +inPeers: "500" + +# imagePullSecret: +# secretName: docker-registry-secret #k8s secret name +# imageCredentials: +# registry: registry.digitalocean.com #docker registry url +# username: username #registry username +# password: password #registry password