diff --git a/test/filecoin/1.0.0/.helmignore b/test/filecoin/1.0.0/.helmignore new file mode 100644 index 0000000000..a9fe727881 --- /dev/null +++ b/test/filecoin/1.0.0/.helmignore @@ -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 +*~ +# Various IDEs +.project +.idea/ +*.tmproj +# OWNERS file for Kubernetes +OWNERS \ No newline at end of file diff --git a/test/filecoin/1.0.0/Chart.yaml b/test/filecoin/1.0.0/Chart.yaml new file mode 100644 index 0000000000..9479b3adf1 --- /dev/null +++ b/test/filecoin/1.0.0/Chart.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +appVersion: v1.12.0 +dependencies: +- name: common + repository: file://../../../library/common/2105.0.0 + version: 2105.0.0 +description: Global, Versioned, peer-to-peer filesystem. +home: https://filecoin.io/ +icon: https://filecoin.io/images/filecoin-logo.svg +keywords: +- storage +- crypto +- blockchain +name: filecoin +sources: +- https://github.com/filecoin-project/lotus +- https://hub.docker.com/r/filecoin/lotus +version: 1.0.0 diff --git a/test/filecoin/1.0.0/README.md b/test/filecoin/1.0.0/README.md new file mode 100755 index 0000000000..09da0c62fa --- /dev/null +++ b/test/filecoin/1.0.0/README.md @@ -0,0 +1,7 @@ +Filecoin Network +===== + +Filecoin is a peer-to-peer network that stores files on the internet, with built-in economic incentives to ensure files are stored reliably over time. +------------ + +This chart bootstraps Filecoin Lotus deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. diff --git a/test/filecoin/1.0.0/app-readme.md b/test/filecoin/1.0.0/app-readme.md new file mode 100644 index 0000000000..6ab946dd9e --- /dev/null +++ b/test/filecoin/1.0.0/app-readme.md @@ -0,0 +1,4 @@ +Chia Network +===== + +[CHIA](https://www.chia.net/) is a new blockchain and smart transaction platform that is easier to use, more efficient, and secure. diff --git a/test/filecoin/1.0.0/charts/common-2105.0.0.tgz b/test/filecoin/1.0.0/charts/common-2105.0.0.tgz new file mode 100644 index 0000000000..ef6f820efb Binary files /dev/null and b/test/filecoin/1.0.0/charts/common-2105.0.0.tgz differ diff --git a/test/filecoin/1.0.0/ix_values.yaml b/test/filecoin/1.0.0/ix_values.yaml new file mode 100644 index 0000000000..e558f9ee82 --- /dev/null +++ b/test/filecoin/1.0.0/ix_values.yaml @@ -0,0 +1,5 @@ +image: + pullPolicy: IfNotPresent + repository: filecoin/lotus + tag: v1.12.0 +updateStrategy: Recreate diff --git a/test/filecoin/1.0.0/questions.yaml b/test/filecoin/1.0.0/questions.yaml new file mode 100644 index 0000000000..29ca90ccac --- /dev/null +++ b/test/filecoin/1.0.0/questions.yaml @@ -0,0 +1,182 @@ +groups: + - name: "Storage" + description: "Configure Storage for Chia" + - name: "Farmr.net Configuration" + description: "Configure farmr.net support" + - name: "Chia Environment Variables" + description: "Set the environment that will be visible to the container" + - name: "Networking" + description: "Configure networking for Chia container" + +portals: + web_portal: + protocols: + - "https" + host: + - "www.truepool.io" + ports: + - "443" + path: "/kb/truepool-docker-image/" + +questions: + - variable: farmr_env + label: "Enable 'farmr.net' support" + group: "Farmr.net Configuration" + description: "Configure 'farmr.net' support for chia" + schema: + type: string + default: "off" + enum: + - value: "off" + description: "OFF" + - value: "farmer" + description: "FARMER" + - value: "harvester" + description: "HARVESTER" + - variable: appVolumeMounts + label: "Chia Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "Configuration Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Configuration Volume Dataset Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "config" + editable: false + - variable: mountPath + label: "Configuration Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: true + default: "/data" + - variable: hostPathEnabled + label: "Enable Custom Host Path for Chia Configuration Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Chia Configuration Volume" + schema: + type: hostpath + required: true + - variable: plots + label: "Plot Volume" + schema: + type: dict + attrs: + - variable: datasetName + label: "Plots Volume Name" + schema: + type: string + hidden: true + $ref: + - "normalize/ixVolume" + show_if: [["hostPathEnabled", "=", false]] + default: "plots" + editable: false + - variable: mountPath + label: "Plots Mount Path" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + hidden: true + editable: false + default: "/plots" + - variable: hostPathEnabled + label: "Enable Custom Host Path for Chia Plots Volume" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostPath + label: "Host Path for Chia Plots Volume" + schema: + type: hostpath + required: true + + - variable: extraAppVolumeMounts + label: "Chia Extra Host Path Volumes" + group: "Storage" + schema: + type: list + items: + - variable: extraAppVolume + label: "Chia Host Path Volume" + description: "Add an extra host path volume for chia application" + schema: + type: dict + attrs: + - variable: mountPath + label: "Mount Path in Pod" + description: "Path where the volume will be mounted inside the pod" + schema: + type: path + required: true + - variable: hostPath + label: "Host Path" + description: "Host path" + schema: + type: hostpath + required: true + + - variable: environmentVariables + label: "Environment Variables for Chia" + group: "Chia Environment Variables" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + - variable: service + description: "Networking Configuration" + label: "Networking Configuration" + group: "Networking" + schema: + type: dict + required: true + attrs: + - variable: nodePort + label: "Node Port to use for Chia" + schema: + type: int + min: 8000 + max: 65535 + default: 8444 + required: true + - variable: farmerPort + label: "Farmer Port to use for Chia" + schema: + type: int + min: 8000 + max: 65535 + default: 8447 + required: true diff --git a/test/filecoin/1.0.0/requirements.lock b/test/filecoin/1.0.0/requirements.lock new file mode 100644 index 0000000000..eba13d88bf --- /dev/null +++ b/test/filecoin/1.0.0/requirements.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: file://../../../library/common/2105.0.0 + version: 2105.0.0 +digest: sha256:11522ab36487826700d7ad0f86f713a4bb5d35248014bcef690fe94acbc09ef6 +generated: "2021-05-17T18:26:46.201544+05:00" diff --git a/test/filecoin/1.0.0/templates/deployment.yaml b/test/filecoin/1.0.0/templates/deployment.yaml new file mode 100644 index 0000000000..c3ce22a445 --- /dev/null +++ b/test/filecoin/1.0.0/templates/deployment.yaml @@ -0,0 +1,46 @@ +apiVersion: {{ template "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ template "common.names.fullname" . }} + labels: {{ include "common.labels" . | nindent 4 }} + annotations: + rollme: {{ randAlphaNum 5 | quote }} +spec: + strategy: + type: {{ .Values.updateStrategy }} + selector: + matchLabels: {{ include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + name: {{ template "common.names.fullname" . }} + labels: {{ include "common.labels.selectorLabels" . | nindent 8 }} + spec: + # FIXME: Let's please remove hostnetwork when upstream hostport issue is sorted out with kube-router + hostNetwork: {{ include "hostNetworkingEnabled" . }} + containers: + - name: {{ .Chart.Name }} + {{ include "common.containers.imageConfig" .Values.image | nindent 10 }} + volumeMounts: {{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 12 }} + {{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }} + - name: extrappvolume-{{ $index }} + mountPath: {{ $hostPathConfiguration.mountPath }} + {{ end }} + ports: + - name: chia-network + protocol: TCP + containerPort: 8444 + hostPort: null + - name: chia-farmer + protocol: TCP + containerPort: 8447 + hostPort: null + {{ $envList := (default list .Values.environmentVariables) }} + {{ $envList = mustAppend $envList (dict "name" "keys" "value" "/plots/keyfile") }} + {{ $envList = mustAppend $envList (dict "name" "farmr" "value" $.Values.farmr_env) }} + {{ include "common.containers.allEnvironmentVariables" (dict "environmentVariables" $envList) | nindent 10 }} + volumes: {{ include "common.storage.configureAppVolumes" .Values | nindent 8 }} + {{ range $index, $hostPathConfiguration := .Values.extraAppVolumeMounts }} + - name: extrappvolume-{{ $index }} + hostPath: + path: {{ $hostPathConfiguration.hostPath }} + {{ end }} diff --git a/test/filecoin/1.0.0/templates/generate-mnemonic.yaml b/test/filecoin/1.0.0/templates/generate-mnemonic.yaml new file mode 100644 index 0000000000..1f3575ec84 --- /dev/null +++ b/test/filecoin/1.0.0/templates/generate-mnemonic.yaml @@ -0,0 +1,30 @@ +apiVersion: batch/v1 +kind: Job +metadata: + name: "pre-install" + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-weight": "1" + "helm.sh/hook-delete-policy": hook-succeeded +spec: + template: + metadata: + name: "pre-upgrade-hook2" + spec: + restartPolicy: Never + containers: + - name: {{ .Chart.Name }}-generate-mnemonic + {{ include "common.containers.imageConfig" .Values.image | nindent 8 }} + volumeMounts:{{ include "common.storage.configureAppVolumeMountsInContainer" .Values | nindent 10 }} + + - name: generate-mnemonic-configmap + mountPath: /generate_entrypoint.sh + readOnly: true + subPath: entrypoint.sh + command: + - "/generate_entrypoint.sh" + volumes: {{- include "common.storage.configureAppVolumes" .Values | nindent 8 -}} + - name: generate-mnemonic-configmap + configMap: + defaultMode: 0700 + name: "generate-mnemonic-config-map" diff --git a/test/filecoin/1.0.0/templates/mnemonic-configmap.yaml b/test/filecoin/1.0.0/templates/mnemonic-configmap.yaml new file mode 100644 index 0000000000..3158c85014 --- /dev/null +++ b/test/filecoin/1.0.0/templates/mnemonic-configmap.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: "generate-mnemonic-config-map" + annotations: + "helm.sh/hook": pre-install + "helm.sh/hook-weight": "-1" + "helm.sh/hook-delete-policy": hook-succeeded +data: + entrypoint.sh: |- + #!/bin/sh + if [ ! -e /plots/keyfile ]; then + /chia-blockchain/venv/bin/python3 -c "from chia.util.keychain import generate_mnemonic;print(generate_mnemonic())" > /plots/keyfile; + fi diff --git a/test/filecoin/1.0.0/templates/networking.tpl b/test/filecoin/1.0.0/templates/networking.tpl new file mode 100644 index 0000000000..280f7bdc9e --- /dev/null +++ b/test/filecoin/1.0.0/templates/networking.tpl @@ -0,0 +1,21 @@ +{{/* +Enable host networking +*/}} +{{- define "hostNetworkingEnabled" -}} +{{- if or (lt (.Values.service.nodePort | int) 9000) (lt (.Values.service.farmerPort | int) 9000) -}} +{{- print "true" -}} +{{- else -}} +{{- print "false" -}} +{{- end -}} +{{- end -}} + +{{/* +Enable Node Port Service +*/}} +{{- define "enableService" -}} +{{- if or (ge (.Values.service.nodePort | int) 9000) (ge (.Values.service.farmerPort | int) 9000) -}} +{{- print "true" -}} +{{- else -}} +{{- print "false" -}} +{{- end -}} +{{- end -}} diff --git a/test/filecoin/1.0.0/templates/service.yaml b/test/filecoin/1.0.0/templates/service.yaml new file mode 100644 index 0000000000..bf92e8d57b --- /dev/null +++ b/test/filecoin/1.0.0/templates/service.yaml @@ -0,0 +1,13 @@ +{{ if eq (include "enableService" .) "true" }} +{{ $svc := .Values.service }} +{{ $ports := list }} +{{ if ge ($svc.nodePort | int) 9000 }} +{{ $ports = mustAppend $ports (dict "name" "chia-network" "port" $svc.nodePort "nodePort" $svc.nodePort "targetPort" 8444) }} +{{ end }} +{{ if ge ($svc.farmerPort | int) 9000 }} +{{ $ports = mustAppend $ports (dict "name" "chia-farmer" "port" $svc.farmerPort "nodePort" $svc.farmerPort "targetPort" 8447) }} +{{ end }} +{{ $params := . }} +{{ $_ := set $params "commonService" (dict "type" "NodePort" "ports" $ports ) }} +{{ include "common.classes.service" $params }} +{{ end }} \ No newline at end of file diff --git a/test/filecoin/1.0.0/test_values.yaml b/test/filecoin/1.0.0/test_values.yaml new file mode 100644 index 0000000000..34292c026c --- /dev/null +++ b/test/filecoin/1.0.0/test_values.yaml @@ -0,0 +1,15 @@ +appVolumeMounts: + data: + emptyDir: true + mountPath: /data + staging: + emptyDir: true + mountPath: /plots +image: + pullPolicy: IfNotPresent + repository: filecoin/lotus + tag: v1.12.0 +service: + farmerPort: 31122 + nodePort: 31121 +updateStrategy: Recreate diff --git a/test/filecoin/item.yaml b/test/filecoin/item.yaml new file mode 100644 index 0000000000..62076aa7b2 --- /dev/null +++ b/test/filecoin/item.yaml @@ -0,0 +1,4 @@ +categories: + - storage + - crypto +icon_url: https://filecoin.io/images/filecoin-logo.svg