Skip to content
Draft
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
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -28,3 +28,5 @@ Dockerfile.cross
/notes
/test
/release
/helm/test-values.yaml
/helm/old/
23 changes: 23 additions & 0 deletions helm/chia/.helmignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
18 changes: 18 additions & 0 deletions helm/chia/Chart.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
apiVersion: v2
name: chia
description: A Helm chart for managing chia-operator resources

# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application

# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
# Versions are expected to follow Semantic Versioning (https://semver.org/)
version: 0.1.0
138 changes: 138 additions & 0 deletions helm/chia/templates/_helpers.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
{{/*
Expand the name of the chart.
*/}}
{{- define "chia.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}

{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "chia.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 }}

{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "chia.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}

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

{{/*
Selector labels
*/}}
{{- define "chia.selectorLabels" -}}
app.kubernetes.io/name: {{ include "chia.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}

{{/*
Create the name of the service account to use
*/}}
{{- define "chia.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "chia.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}

{{/*
Create the name of the CA secret to use
*/}}
{{- define "chia.caSecretName" -}}
{{- .Values.ca.secretName | default (printf "%s-ca" (include "chia.fullname" .)) }}
{{- end }}

{{/*
Common Chia configuration block
*/}}
{{- define "chia.commonConfig" -}}
{{- if .Values.testnet }}
testnet: {{ .Values.testnet }}
{{- end }}
timezone: {{ .Values.timezone }}
logLevel: {{ .Values.logLevel }}
selfHostname: {{ .Values.selfHostname }}
{{- if .Values.sourceRef }}
sourceRef: {{ .Values.sourceRef }}
{{- end }}
{{- if gt (len .Values.additionalEnv) 0 }}
additionalEnv: {{ toYaml .Values.additionalEnv | nindent 2 }}
{{- end }}
{{- end -}}

{{/*
Create the name of the CA secret to use
*/}}
{{- define "chia.exporterSecretName" -}}
{{- printf "%s-exporter" (include "chia.fullname" .) }}
{{- end }}

{{/*
Chia Exporter configuration block
*/}}
{{- define "chia.exporterConfig" -}}
{{- if .Values.chiaExporter.enabled }}
chiaExporter:
enabled: {{ .Values.chiaExporter.enabled }}
{{- if .Values.chiaExporter.image }}
image: {{ .Values.chiaExporter.image }}
{{- end }}
{{- if .Values.chiaExporter.additionalConfig }}
configSecretName: {{ include "chia.exporterSecretName" . }}
{{- end }}
service:
{{- if .Values.chiaExporter.service.annotations }}
annotations: {{ toYaml .Values.chiaExporter.service.annotations | nindent 6 }}
{{- end }}
{{- if .Values.chiaExporter.service.labels }}
labels: {{ toYaml .Values.chiaExporter.service.labels | nindent 6 }}
{{- end }}
{{- end }}
{{- end -}}

{{/*
Chia Healthcheck configuration block
*/}}
{{- define "chia.healthcheckConfig" -}}
{{- if .Values.chiaHealthcheck }}
{{- if .Values.chiaHealthcheck.enabled }}
chiaHealthcheck:
enabled: {{ .Values.chiaHealthcheck.enabled }}
{{- if .Values.chiaHealthcheck.image }}
image: {{ .Values.chiaHealthcheck.image }}
{{- end }}
{{- if .Values.chiaHealthcheck.dnsHostname }}
dnsHostname: {{ .Values.chiaHealthcheck.dnsHostname }}
{{- end }}
service:
enabled: {{ .Values.chiaHealthcheck.service.enabled }}
rollIntoPeerService: {{ .Values.chiaHealthcheck.service.rollIntoPeerService }}
{{- end }}
{{- end }}
{{- end -}}
23 changes: 23 additions & 0 deletions helm/chia/templates/chiaca.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if or (empty .Values.ca.chia_ca_crt) (empty .Values.ca.chia_ca_key) (empty .Values.ca.private_ca_crt) (empty .Values.ca.private_ca_key) -}}
apiVersion: k8s.chia.net/v1
kind: ChiaCA
metadata:
name: {{ include "chia.fullname" . }}
spec:
secret: {{ include "chia.caSecretName" . }}
{{- else }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "chia.caSecretName" . }}
stringData:
chia_ca.crt: |
{{ .Values.ca.chia_ca_crt | nindent 4 }}
chia_ca.key: |
{{ .Values.ca.chia_ca_key | nindent 4 }}
private_ca.crt: |
{{ .Values.ca.private_ca_crt | nindent 4 }}
private_ca.key: |
{{ .Values.ca.private_ca_key | nindent 4 }}
type: Opaque
{{- end }}
8 changes: 8 additions & 0 deletions helm/chia/templates/chiaexporter-config.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{{- if .Values.chiaExporter.additionalConfig }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "chia.exporterSecretName" . }}
stringData:
{{ toYaml .Values.chiaExporter.additionalConfig | nindent 2 }}
{{- end }}
23 changes: 23 additions & 0 deletions helm/chia/templates/chianode.tpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
{{- if .Values.node.enabled -}}
apiVersion: k8s.chia.net/v1
kind: ChiaNode
metadata:
name: {{ include "chia.fullname" . }}
spec:
replicas: {{ .Values.node.replicas }}
chia:
caSecretName: {{ include "chia.caSecretName" . }}
{{- if gt (len .Values.node.fullNodePeers) 0 }}
fullNodePeers: {{ toYaml .Values.node.fullNodePeers | nindent 6 }}
{{- end }}
{{ include "chia.commonConfig" . | nindent 4 }}
{{ include "chia.exporterConfig" . | nindent 2 }}
{{ include "chia.healthcheckConfig" . | nindent 2 }}
{{- if .Values.node.storage.chiaRoot.persistentVolumeClaim.enabled }}
storage:
chiaRoot:
persistentVolumeClaim:
storageClass: "{{ .Values.node.storage.chiaRoot.persistentVolumeClaim.storageClass }}"
resourceRequest: "{{ .Values.node.storage.chiaRoot.persistentVolumeClaim.resourceRequest }}"
{{- end }}
{{- end }}
111 changes: 111 additions & 0 deletions helm/chia/values.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,111 @@
# Options that will apply to all supported resources
testnet: false
timezone: UTC
logLevel: INFO
selfHostname: 0.0.0.0
sourceRef: "" # commit sha of github.com/Chia-Network/chia-blockchain to install from
# WARNING: This is a dangerous feature for advanced use cases
additionalEnv: []
# # Set normal environment variable key-value
# - name: FOO
# value: BAR
# # Set using valueFrom
# - name: HELLO
# valueFrom:
# configMapKeyRef:
# name: my-configmap
# key: WORLD

# CA is always enabled, and we'll either (default) create a new CA
# or if the crt/key fields are all filled in, then a secret will be created directly
ca:
secretName: ""
# If all 4 of the below fields are provided, a secret will be created instead of the chiaca resource
chia_ca_crt: |
-----BEGIN CERTIFICATE-----
MIIDKTCCAhGgAwIBAgIUXIpxI5MoZQ65/vhc7DK/d5ymoMUwDQYJKoZIhvcNAQEL
BQAwRDENMAsGA1UECgwEQ2hpYTEQMA4GA1UEAwwHQ2hpYSBDQTEhMB8GA1UECwwY
T3JnYW5pYyBGYXJtaW5nIERpdmlzaW9uMB4XDTIxMDEyMzA4NTEwNloXDTMxMDEy
MTA4NTEwNlowRDENMAsGA1UECgwEQ2hpYTEQMA4GA1UEAwwHQ2hpYSBDQTEhMB8G
A1UECwwYT3JnYW5pYyBGYXJtaW5nIERpdmlzaW9uMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAzz/L219Zjb5CIKnUkpd2julGC+j3E97KUiuOalCH9wdq
gpJi9nBqLccwPCSFXFew6CNBIBM+CW2jT3UVwgzjdXJ7pgtu8gWj0NQ6NqSLiXV2
WbpZovfrVh3x7Z4bjPgI3ouWjyehUfmK1GPIld4BfUSQtPlUJ53+XT32GRizUy+b
0CcJ84jp1XvyZAMajYnclFRNNJSw9WXtTlMUu+Z1M4K7c4ZPwEqgEnCgRc0TCaXj
180vo7mCHJQoDiNSCRATwfH+kWxOOK/nePkq2t4mPSFaX8xAS4yILISIOWYn7sNg
dy9D6gGNFo2SZ0FR3x9hjUjYEV3cPqg3BmNE3DDynQIDAQABoxMwETAPBgNVHRMB
Af8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4IBAQAEugnFQjzHhS0eeCqUwOHmP3ww
/rXPkKF+bJ6uiQgXZl+B5W3m3zaKimJeyatmuN+5ST1gUET+boMhbA/7grXAsRsk
SFTHG0T9CWfPiuimVmGCzoxLGpWDMJcHZncpQZ72dcy3h7mjWS+U59uyRVHeiprE
hvSyoNSYmfvh7vplRKS1wYeA119LL5fRXvOQNW6pSsts17auu38HWQGagSIAd1UP
5zEvDS1HgvaU1E09hlHzlpdSdNkAx7si0DMzxKHUg9oXeRZedt6kcfyEmryd52Mj
1r1R9mf4iMIUv1zc2sHVc1omxnCw9+7U4GMWLtL5OgyJyfNyoxk3tC+D3KNU
-----END CERTIFICATE-----
chia_ca_key: |
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDPP8vbX1mNvkIg
qdSSl3aO6UYL6PcT3spSK45qUIf3B2qCkmL2cGotxzA8JIVcV7DoI0EgEz4JbaNP
dRXCDON1cnumC27yBaPQ1Do2pIuJdXZZulmi9+tWHfHtnhuM+Ajei5aPJ6FR+YrU
Y8iV3gF9RJC0+VQnnf5dPfYZGLNTL5vQJwnziOnVe/JkAxqNidyUVE00lLD1Ze1O
UxS75nUzgrtzhk/ASqAScKBFzRMJpePXzS+juYIclCgOI1IJEBPB8f6RbE44r+d4
+Sra3iY9IVpfzEBLjIgshIg5Zifuw2B3L0PqAY0WjZJnQVHfH2GNSNgRXdw+qDcG
Y0TcMPKdAgMBAAECggEAa6lLgEl3HyAQACHZUNGoADOEdNlvyP26gpcn42i0SQqs
NOpQyI67Sc6o6wVZ1g+j0ePGiCAW4RT4emVriSPi4Xc4bpiP6OAvKmOlXg96gUzo
z1H0EKnTsifaLsMssr2C9gDzlKhUsF3+1biEUf5DLcz5k1nWcsIrikqO1pizR2mL
nMuhW+kRwR6bY75pGlQ8JmqQ3BTS6YBMJ+BkZ8XOBcj9c8mvxTL4tVk4Wnc9dcd+
dlkP1PkCM79WIF6pswW5ZDwGlU6pqk08qPzENjei/De6IBg8Lt4uJve79agV6Uxz
Y4xfRCWMunlj4VJwUcAzGhyjcBB1ZJi9JDBvnFmaDQKBgQDrMoBJ+vDcS0+2GQtH
k0GZ6wjhFttjqIVWFLmWgtvNO1K2+y6zwQjpFCAuAAUXXgfbVhIfFvp0HUxujjkE
3zeCYOlS8o9ESyWoPdg8woWjkZcya/4mE2jlj1+GI4SfHMska0EHUd4aaDk1en2a
vYKH27zD+yV+4IdyRsD0Bi93EwKBgQDhlHnODvf5QDVro+b3dsthkaP6F/s5oH/o
eLD1jEIGAN9Yz10njyLPfzaeiNPm6LSsKVXlgCjxQIuHTU2n0BsFke4F1ib0jOK4
o3NN4rfVRb5O9vP50THv4+VhB9806FwiB371JeOhmitCSwiYp0wZmV3WURF4e4Fr
Cr3YlC+1jwKBgQC03BTCzvFAtbkKMp/13krn7VDaphT2wbQmybEdCGu1mhS1GNqE
57/OW+eS9/jySyCHjdxJhAX8HDuWGE/Ia03oOFWzr0p0HcVLZqNNtdfGPEKkR18c
MHjNbj7qi42EPUQJMWDEHDRK4jJ76UGFKI2jo1m46vueYVJGkhn2jHsbeQKBgDim
/Ew20Col6QSmfhwKFpvjYsYtfaeEWns8zFxupCozz+PS+Dc2KGzqKwJ3pJgqOy29
l9fybtXf+uq5DFan2hF1C80lclUaiNoMGqol1TtXr6rPNIi59AumNXY/7tuvu2vE
bCsPH/L28ARPKdKEuYT4Umu/ol6aze7fHLymwrCbAoGAbm4vMLIy8wHYrAj5/een
YthUYbQ+XWOrrI1dJoGiwCIXTL4iBSO1ZjkR6M7yg9Zxv0BuqA+2tZqImLXsqIq/
g7Jtrn7LfogS3KOiVa3QAHoXegMrRf4S3DyP/GW8E27MMvqBEkdCDX53h07wvPng
0NRspbyMaX43/tp8ZWkaZf0=
-----END PRIVATE KEY-----
private_ca_crt: ""
private_ca_key: ""

node:
enabled: false
replicas: 1
fullNodePeers: []
# - host: "node.default.svc.cluster.local"
# port: 8444
storage:
chiaRoot:
persistentVolumeClaim:
enabled: false
storageClass: ""
resourceRequest: "300Gi"

chiaExporter:
enabled: false
image: "" # Override the default chia-exporter image
service:
annotations: {}
# hello: world
labels: {}
# network: mainnet
# component: full_node
additionalConfig: {} # If this is set, creates a secret and sets the configSecretName option
# CHIA_EXPORTER_MAXMIND_COUNTRY_DB_PATH: "/chia-data/country.db"
# CHIA_EXPORTER_MAXMIND_ASN_DB_PATH: "/chia-data/asn.db"
# CHIA_EXPORTER_MYSQL_HOST: "10.0.0.10"
# CHIA_EXPORTER_MYSQL_PASSWORD: "mypassword"
# CHIA_EXPORTER_MYSQL_DB_NAME: "mydbname"

chiaHealthcheck:
enabled: false
image: ""
dnsHostname: ""
service:
enabled: false
rollIntoPeerService: false