From 81ea495fc822c4cc6124f0bcbd5e1619181df5f5 Mon Sep 17 00:00:00 2001 From: sonicaj Date: Mon, 20 Mar 2023 15:36:25 +0000 Subject: [PATCH] Update catalog information --- catalog.json | 22 +- community/chia/1.0.0/Chart.lock | 6 + community/chia/1.0.0/Chart.yaml | 25 ++ community/chia/1.0.0/README.md | 10 + community/chia/1.0.0/app-readme.md | 10 + community/chia/1.0.0/charts/common-1.0.0.tgz | Bin 0 -> 53557 bytes .../chia/1.0.0/ci/additional-values.yaml | 21 ++ community/chia/1.0.0/ci/basic-values.yaml | 7 + community/chia/1.0.0/ci/farmer-values.yaml | 10 + community/chia/1.0.0/ix_values.yaml | 34 +++ community/chia/1.0.0/questions.yaml | 259 ++++++++++++++++++ community/chia/1.0.0/templates/NOTES.txt | 1 + community/chia/1.0.0/templates/_chia.tpl | 161 +++++++++++ community/chia/1.0.0/templates/_helper.tpl | 14 + .../chia/1.0.0/templates/_validation.tpl | 22 ++ community/chia/1.0.0/templates/common.yaml | 8 + community/chia/item.yaml | 4 + 17 files changed, 613 insertions(+), 1 deletion(-) create mode 100644 community/chia/1.0.0/Chart.lock create mode 100644 community/chia/1.0.0/Chart.yaml create mode 100644 community/chia/1.0.0/README.md create mode 100644 community/chia/1.0.0/app-readme.md create mode 100644 community/chia/1.0.0/charts/common-1.0.0.tgz create mode 100644 community/chia/1.0.0/ci/additional-values.yaml create mode 100644 community/chia/1.0.0/ci/basic-values.yaml create mode 100644 community/chia/1.0.0/ci/farmer-values.yaml create mode 100644 community/chia/1.0.0/ix_values.yaml create mode 100644 community/chia/1.0.0/questions.yaml create mode 100644 community/chia/1.0.0/templates/NOTES.txt create mode 100644 community/chia/1.0.0/templates/_chia.tpl create mode 100644 community/chia/1.0.0/templates/_helper.tpl create mode 100644 community/chia/1.0.0/templates/_validation.tpl create mode 100644 community/chia/1.0.0/templates/common.yaml create mode 100644 community/chia/item.yaml diff --git a/catalog.json b/catalog.json index 46b1a9b434..cb66787603 100644 --- a/catalog.json +++ b/catalog.json @@ -682,5 +682,25 @@ } }, "enterprise": {}, - "community": {} + "community": { + "chia": { + "app_readme": "

Chia

\n

This container runs as root user.

\n

When a port is set to < 9000. Host Networking is enabled automatically.

\n
\n

Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice.

\n
\n

Key file is stored in /plots/keyfile and is generated automatically, only if the file does not exist.\nIf you want to use your own keyfile, you can create a file called keyfile in the /plots directory and it will be used instead.

\n
\n

When set on harvester mode keys variable is set to none and no generation is performed.

\n
", + "categories": [ + "blockchain", + "chia" + ], + "description": "Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure.", + "healthy": true, + "healthy_error": null, + "location": "/__w/charts/charts/community/chia", + "latest_version": "1.0.0", + "latest_app_version": "1.7.0", + "latest_human_version": "1.7.0_1.0.0", + "last_update": null, + "name": "chia", + "recommended": false, + "title": "Chia", + "icon_url": "https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg" + } + } } \ No newline at end of file diff --git a/community/chia/1.0.0/Chart.lock b/community/chia/1.0.0/Chart.lock new file mode 100644 index 0000000000..fabb017b0d --- /dev/null +++ b/community/chia/1.0.0/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.0 +digest: sha256:f90dc95623b075f1d9ec4c4ba12464e2e789176ce7282a3aede37222201763b6 +generated: "2023-03-14T17:45:19.72539268+02:00" diff --git a/community/chia/1.0.0/Chart.yaml b/community/chia/1.0.0/Chart.yaml new file mode 100644 index 0000000000..174e3026a3 --- /dev/null +++ b/community/chia/1.0.0/Chart.yaml @@ -0,0 +1,25 @@ +name: chia +description: Chia is a modern cryptocurrency built from scratch, designed to be efficient, decentralized, and secure. +annotations: + title: Chia +type: application +version: 1.0.0 +apiVersion: v2 +appVersion: '1.7.0' +kubeVersion: '>=1.16.0-0' +maintainers: + - name: truenas + url: https://www.truenas.com/ +dependencies: +- name: common + repository: file://../../../common + version: 1.0.0 +home: https://www.chia.net/ +icon: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg +sources: +- https://github.com/Chia-Network/chia-docker +- https://github.com/truenas/charts/tree/master/library/ix-dev/community/chia +- https://www.chia.net/ +keywords: +- blockchain +- chia diff --git a/community/chia/1.0.0/README.md b/community/chia/1.0.0/README.md new file mode 100644 index 0000000000..b23e94dac0 --- /dev/null +++ b/community/chia/1.0.0/README.md @@ -0,0 +1,10 @@ +# Chia + +This container runs as `root` user. + +When a port is set to < 9000. Host Networking is enabled automatically. +> Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice. + +Key file is stored in `/plots/keyfile` and is generated automatically, **only** if the file does not exist. +If you want to use your own `keyfile`, you can create a file called `keyfile` in the `/plots` directory and it will be used instead. +> When set on `harvester` mode `keys` variable is set to `none` and no generation is performed. diff --git a/community/chia/1.0.0/app-readme.md b/community/chia/1.0.0/app-readme.md new file mode 100644 index 0000000000..b23e94dac0 --- /dev/null +++ b/community/chia/1.0.0/app-readme.md @@ -0,0 +1,10 @@ +# Chia + +This container runs as `root` user. + +When a port is set to < 9000. Host Networking is enabled automatically. +> Also NodePort services turn to ClusterIP services, to avoid attempts to bind ports twice. + +Key file is stored in `/plots/keyfile` and is generated automatically, **only** if the file does not exist. +If you want to use your own `keyfile`, you can create a file called `keyfile` in the `/plots` directory and it will be used instead. +> When set on `harvester` mode `keys` variable is set to `none` and no generation is performed. diff --git a/community/chia/1.0.0/charts/common-1.0.0.tgz b/community/chia/1.0.0/charts/common-1.0.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2e108fa250be67e17d136bb00d8f6b196fe5dc20 GIT binary patch literal 53557 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

X-4VW5DcEscE;d0bv?qpc2UPtk2Lw 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 BT{-{& literal 0 HcmV?d00001 diff --git a/community/chia/1.0.0/ci/additional-values.yaml b/community/chia/1.0.0/ci/additional-values.yaml new file mode 100644 index 0000000000..259c783e1a --- /dev/null +++ b/community/chia/1.0.0/ci/additional-values.yaml @@ -0,0 +1,21 @@ +chiaConfig: + additionalEnvs: + - name: testnet + value: true + +chiaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + plots: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/plots + additionalVolumes: + - type: hostPath + hostPath: /mnt/{{ .Release.Name }}/plots1 + isPlotDir: true + mountPath: /plots1 + - type: hostPath + hostPath: /mnt/{{ .Release.Name }}/random_mount + isPlotDir: false + mountPath: /random_mount diff --git a/community/chia/1.0.0/ci/basic-values.yaml b/community/chia/1.0.0/ci/basic-values.yaml new file mode 100644 index 0000000000..0b7704e1ba --- /dev/null +++ b/community/chia/1.0.0/ci/basic-values.yaml @@ -0,0 +1,7 @@ +chiaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + plots: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/plots diff --git a/community/chia/1.0.0/ci/farmer-values.yaml b/community/chia/1.0.0/ci/farmer-values.yaml new file mode 100644 index 0000000000..08c5a7f3ad --- /dev/null +++ b/community/chia/1.0.0/ci/farmer-values.yaml @@ -0,0 +1,10 @@ +chiaConfig: + service: farmer-only + +chiaStorage: + data: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/data + plots: + type: hostPath + hostPath: /mnt/{{ .Release.Name }}/plots diff --git a/community/chia/1.0.0/ix_values.yaml b/community/chia/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..8b4b41cd46 --- /dev/null +++ b/community/chia/1.0.0/ix_values.yaml @@ -0,0 +1,34 @@ +image: + repository: ghcr.io/chia-network/chia + tag: "1.7.0" + pullPolicy: IfNotPresent + +resources: + limits: + cpu: 4000m + memory: 8Gi + +chiaNetwork: + chiaPort: 8444 + farmerPort: 8447 + +chiaConfig: + # farmer-only | harvester | "" + service: "" + # farmer_address, farmer_port and ca. Only if sevice == harvester + farmer_address: "" + farmer_port: "" + ca: "" + full_node_peer: "" + additionalEnvs: [] + +chiaStorage: + data: + type: ixVolume + hostPath: "" + datasetName: data + plots: + type: ixVolume + hostPath: "/" + datasetName: plots + additionalVolumes: [] diff --git a/community/chia/1.0.0/questions.yaml b/community/chia/1.0.0/questions.yaml new file mode 100644 index 0000000000..81d49321ca --- /dev/null +++ b/community/chia/1.0.0/questions.yaml @@ -0,0 +1,259 @@ +groups: + - name: Chia Configuration + description: Configure Chia + - name: Network Configuration + description: Configure Network for Chia + - name: Storage Configuration + description: Configure Storage for Chia + - name: Resources Configuration + description: Configure Resources for Chia + +questions: + + - variable: TZ + group: Chia Configuration + label: Timezone + schema: + type: string + default: Etc/UTC + required: true + $ref: + - definitions/timezone + + - variable: chiaNetwork + group: Network Configuration + label: "" + schema: + type: dict + attrs: + - variable: chiaPort + label: Chia Port + description: Ports below 9000 will enable Host Network automatically. + schema: + type: int + default: 38444 + required: true + - variable: farmerPort + label: Farmer Port + description: Ports below 9000 will enable Host Network automatically. + schema: + type: int + default: 38447 + required: true + + - variable: chiaConfig + group: Chia Configuration + label: "" + schema: + type: dict + attrs: + - variable: service + label: Chia Service Mode + description: Select the Chia Service Mode + schema: + type: string + default: "" + enum: + - value: "" + description: Full Node + - value: farmer-only + description: Farmer + - value: harvester + description: Harvester + - variable: farmer_address + label: Farmer Address + schema: + type: string + show_if: [["service", "=", "harvester"]] + required: true + default: "" + - variable: farmer_port + label: Farmer Port + schema: + type: int + show_if: [["service", "=", "harvester"]] + required: true + default: 8447 + - variable: ca + label: CA + schema: + type: string + show_if: [["service", "=", "harvester"]] + required: true + default: "" + - variable: full_node_peer + label: Full Node Peer + schema: + type: string + default: "" + - variable: additionalEnvs + label: Additional Environments + description: Additional Environments + schema: + type: list + default: [] + items: + - variable: env + label: Variable + schema: + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: value + label: Value + schema: + type: string + required: true + default: "" + + - variable: chiaStorage + group: Storage Configuration + label: "" + schema: + type: dict + attrs: + - variable: data + label: Data + schema: + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: ixVolume + required: true + enum: + - value: ixVolume + description: ixVolume + - value: hostPath + description: hostPath + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + default: "" + - variable: datasetName + label: Dataset Name + schema: + type: string + default: data + show_if: [["type", "=", "ixVolume"]] + hidden: true + $ref: + - "normalize/ixVolume" + - variable: plots + label: Plots + schema: + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: ixVolume + required: true + enum: + - value: ixVolume + description: ixVolume + - value: hostPath + description: hostPath + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + default: "" + - variable: datasetName + label: Dataset Name + schema: + type: string + default: plots + show_if: [["type", "=", "ixVolume"]] + hidden: true + $ref: + - "normalize/ixVolume" + - variable: additionalVolumes + label: Additional Volumes + schema: + type: list + default: [] + items: + - variable: volume + label: Volume + schema: + type: dict + attrs: + - variable: isPlotDir + label: Directory for Plots + description: | + If this is checked, it will append the directory to variable
+ Keep this unchecked if you want to mount a directory for anything else. + schema: + type: boolean + default: false + - variable: type + label: Type + schema: + type: string + default: ixVolume + required: true + enum: + - value: ixVolume + description: ixVolume + - value: hostPath + description: hostPath + - variable: hostPath + label: Host Path + schema: + type: hostpath + show_if: [["type", "=", "hostPath"]] + default: "" + - variable: datasetName + label: Dataset Name + schema: + type: string + default: "volume1" + required: true + show_if: [["type", "=", "ixVolume"]] + $ref: + - "normalize/ixVolume" + - variable: mountPath + label: Mount Path + description: Path to mount the volume inside the container + schema: + type: string + required: true + default: "" + + - variable: resources + label: "" + group: Resources Configuration + schema: + type: dict + attrs: + - variable: limits + label: Limits + schema: + type: dict + attrs: + - variable: cpu + label: CPU + description: CPU limit for qBittorrent. + schema: + type: string + default: 4000m + required: true + - variable: memory + label: Memory + description: Memory limit for qBittorrent. + schema: + type: string + default: 8Gi + required: true diff --git a/community/chia/1.0.0/templates/NOTES.txt b/community/chia/1.0.0/templates/NOTES.txt new file mode 100644 index 0000000000..ba4e01146c --- /dev/null +++ b/community/chia/1.0.0/templates/NOTES.txt @@ -0,0 +1 @@ +{{ include "ix.v1.common.lib.chart.notes" $ }} diff --git a/community/chia/1.0.0/templates/_chia.tpl b/community/chia/1.0.0/templates/_chia.tpl new file mode 100644 index 0000000000..e272515bf7 --- /dev/null +++ b/community/chia/1.0.0/templates/_chia.tpl @@ -0,0 +1,161 @@ +{{- define "chia.workload" -}} +workload: + chia: + enabled: true + primary: true + type: Deployment + podSpec: + {{ if or (lt (int .Values.chiaNetwork.chiaPort) 9000) + (lt (int .Values.chiaNetwork.farmerPort) 9000) }} + hostNetwork: true + {{ else }} + hostNetwork: false + {{ end }} + containers: + chia: + enabled: true + primary: true + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + env: + plots_dir: {{ include "chia.plotDirs" $ | quote }} + {{ with .Values.chiaConfig.full_node_peer }} + full_node_peer: {{ . | quote }} + {{ end }} + {{ with .Values.chiaConfig.service }} + service: {{ . }} + {{ end }} + {{ if eq .Values.chiaConfig.service "harvester" }} + farmer_address: {{ .Values.chiaConfig.farmer_address | quote }} + farmer_port: {{ .Values.chiaConfig.farmer_port | quote }} + ca: {{ .Values.chiaConfig.ca | quote }} + keys: "none" + {{ else }} + keys: {{ include "chia.keyfile" . | quote }} + {{ end }} + {{ with .Values.chiaConfig.additionalEnvs }} + {{ range $env := . }} + {{ $env.name }}: {{ $env.value }} + {{ end }} + {{ end }} + probes: + liveness: + enabled: true + type: exec + command: + - /bin/sh + - -c + - | + chmod +x /usr/local/bin/docker-healthcheck.sh && \ + /usr/local/bin/docker-healthcheck.sh || exit 1 + readiness: + enabled: true + type: exec + command: + - /bin/sh + - -c + - | + chmod +x /usr/local/bin/docker-healthcheck.sh && \ + /usr/local/bin/docker-healthcheck.sh || exit 1 + startup: + enabled: true + type: exec + command: + - /bin/sh + - -c + - | + chmod +x /usr/local/bin/docker-healthcheck.sh && \ + /usr/local/bin/docker-healthcheck.sh || exit 1 + {{ if ne .Values.chiaConfig.service "harvester" }} + initContainers: + keygen: + enabled: true + type: init + imageSelector: image + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + command: /bin/sh + args: + - -c + - | + if [ ! -f {{ include "chia.keyfile" . | quote }} ]; then + echo "Generating keys..." + /chia-blockchain/venv/bin/python3 -c \ + "from chia.util.keychain import generate_mnemonic;print(generate_mnemonic())" > {{ include "chia.keyfile" . | quote }}; + + if [ ! -f {{ include "chia.keyfile" . | quote }} ]; then + echo "Failed to generate keys." && exit 1 + fi + + echo "Keys generated." + fi + {{ end }} +{{/* Service */}} +service: + chia: + enabled: true + primary: true + type: NodePort + targetSelector: chia + ports: + chia-net: + enabled: true + primary: true + port: {{ .Values.chiaNetwork.chiaPort }} + nodePort: {{ .Values.chiaNetwork.chiaPort }} + targePort: 8444 + targetSelector: chia + chia-farmer: + enabled: true + port: {{ .Values.chiaNetwork.farmerPort }} + nodePort: {{ .Values.chiaNetwork.farmerPort }} + targePort: 8447 + targetSelector: chia + +{{/* Persistence */}} +persistence: + data: + enabled: true + type: {{ .Values.chiaStorage.data.type }} + datasetName: {{ .Values.chiaStorage.data.datasetName | default "" }} + hostPath: {{ .Values.chiaStorage.data.hostPath | default "" }} + targetSelector: + chia: + chia: + mountPath: /root/.chia + plots: + enabled: true + type: {{ .Values.chiaStorage.plots.type }} + datasetName: {{ .Values.chiaStorage.plots.datasetName | default "" }} + hostPath: {{ .Values.chiaStorage.plots.hostPath | default "" }} + targetSelector: + chia: + chia: + mountPath: /plots + keygen: + mountPath: /plots + tmp: + enabled: true + type: emptyDir + targetSelector: + chia: + chia: + mountPath: /tmp + {{ range $idx, $vol := .Values.chiaStorage.additionalVolumes }} + {{ printf "volume-%s" (toString $idx) }}: + enabled: true + type: {{ $vol.type }} + datasetName: {{ $vol.datasetName | default "" }} + hostPath: {{ $vol.hostPath | default "" }} + targetSelector: + chia: + chia: + mountPath: {{ $vol.mountPath }} + {{ end }} +{{- end -}} diff --git a/community/chia/1.0.0/templates/_helper.tpl b/community/chia/1.0.0/templates/_helper.tpl new file mode 100644 index 0000000000..d4d7f9d202 --- /dev/null +++ b/community/chia/1.0.0/templates/_helper.tpl @@ -0,0 +1,14 @@ +{{- define "chia.plotDirs" -}} + {{- $plotDirs := list "/plots" -}} + {{- range $vol := .Values.chiaStorage.additionalVolumes -}} + {{- if $vol.isPlotDir -}} + {{- $plotDirs = mustAppend $plotDirs $vol.mountPath -}} + {{- end -}} + + {{- end -}} + {{- join ":" $plotDirs -}} +{{- end -}} + +{{- define "chia.keyfile" -}} + {{ print "/plots/keyfile" }} +{{- end -}} diff --git a/community/chia/1.0.0/templates/_validation.tpl b/community/chia/1.0.0/templates/_validation.tpl new file mode 100644 index 0000000000..6ace9abd60 --- /dev/null +++ b/community/chia/1.0.0/templates/_validation.tpl @@ -0,0 +1,22 @@ +{{- define "chia.validation" -}} + + {{- with $.Values.chiaConfig.service -}} + + {{- $allowedModes := list "farmer-only" "harvester" "\"\"" -}} + {{- if not (mustHas . $allowedModes) -}} + {{- fail (printf "Expected to be one of [%s], but got [%s]" (join ", " $allowedModes) .) -}} + {{- end -}} + + {{- end -}} + + {{- if eq $.Values.chiaConfig.service "harvester" -}} + {{- $reqs := list "farmer_address" "farmer_port" "ca" -}} + + {{- range $key := $reqs -}} + {{- if not (get $.Values.chiaConfig $key) -}} + {{- fail (printf "Expected non-empty <%s> when is set to " $key) -}} + {{- end -}} + {{- end -}} + + {{- end -}} +{{- end -}} diff --git a/community/chia/1.0.0/templates/common.yaml b/community/chia/1.0.0/templates/common.yaml new file mode 100644 index 0000000000..1dc3b6a415 --- /dev/null +++ b/community/chia/1.0.0/templates/common.yaml @@ -0,0 +1,8 @@ +{{- include "ix.v1.common.loader.init" . -}} + +{{- include "chia.validation" $ -}} + +{{/* Merge the templates with Values */}} +{{- $_ := mustMergeOverwrite .Values (include "chia.workload" $ | fromYaml) -}} + +{{- include "ix.v1.common.loader.apply" . -}} diff --git a/community/chia/item.yaml b/community/chia/item.yaml new file mode 100644 index 0000000000..85bcbf0cbb --- /dev/null +++ b/community/chia/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://www.chia.net/wp-content/uploads/2022/09/chia-logo.svg +categories: + - blockchain + - chia