From bad73826eab1aacfe192647941b1869587192cf3 Mon Sep 17 00:00:00 2001 From: sagit <36596628+Sagit-chu@users.noreply.github.com> Date: Sun, 27 Mar 2022 00:07:14 +0800 Subject: [PATCH] feat(filerun): Add filerun (#2242) * add filerun * fix permission * update * update image * change port * change port * Update charts/incubator/filerun/Chart.yaml * bump snipe Co-authored-by: Stavros Kois <47820033+stavros-k@users.noreply.github.com> --- charts/incubator/filerun/.helmignore | 26 ++ charts/incubator/filerun/Chart.yaml | 31 ++ charts/incubator/filerun/questions.yaml | 350 ++++++++++++++++++ .../incubator/filerun/templates/common.yaml | 1 + charts/incubator/filerun/values.yaml | 48 +++ charts/stable/snipe-it/Chart.yaml | 2 +- docs/_static/img/appicons/filerun.png | Bin 0 -> 44357 bytes docs/manual/default-ports.md | 1 + 8 files changed, 458 insertions(+), 1 deletion(-) create mode 100644 charts/incubator/filerun/.helmignore create mode 100644 charts/incubator/filerun/Chart.yaml create mode 100644 charts/incubator/filerun/questions.yaml create mode 100644 charts/incubator/filerun/templates/common.yaml create mode 100644 charts/incubator/filerun/values.yaml create mode 100644 docs/_static/img/appicons/filerun.png diff --git a/charts/incubator/filerun/.helmignore b/charts/incubator/filerun/.helmignore new file mode 100644 index 00000000000..4379e2b3014 --- /dev/null +++ b/charts/incubator/filerun/.helmignore @@ -0,0 +1,26 @@ +# 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 +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl diff --git a/charts/incubator/filerun/Chart.yaml b/charts/incubator/filerun/Chart.yaml new file mode 100644 index 00000000000..26e39d05abf --- /dev/null +++ b/charts/incubator/filerun/Chart.yaml @@ -0,0 +1,31 @@ +apiVersion: v2 +appVersion: "latest" +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 9.1.15 +- condition: mariadb.enabled + name: mariadb + repository: https://truecharts.org/ + version: 2.0.11 +description: FileRun is a full featured web based file manager with an easy to use user interface +home: https://github.com/truecharts/apps/tree/master/charts/stable/filerun +icon: https://truecharts.org/_static/img/appicons/filerun.png +keywords: +- filerun +- file +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: filerun +sources: +- https://hub.docker.com/r/filerun/filerun +- https://github.com/filerun/docker +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/filerun/questions.yaml b/charts/incubator/filerun/questions.yaml new file mode 100644 index 00000000000..1cbca1d2e86 --- /dev/null +++ b/charts/incubator/filerun/questions.yaml @@ -0,0 +1,350 @@ +# Include{groups} +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +# Include{global} + - variable: controller + group: "Controller" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: advanced + label: "Show Advanced Controller Settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + description: "Please specify type of workload to deploy" + label: "(Advanced) Controller Type" + schema: + type: string + default: "deployment" + required: true + enum: + - value: "deployment" + description: "Deployment" + - value: "statefulset" + description: "Statefulset" + - value: "daemonset" + description: "Daemonset" + - variable: replicas + description: "Number of desired pod replicas" + label: "Desired Replicas" + schema: + type: int + default: 1 + required: true + - variable: strategy + description: "Please specify type of workload to deploy" + label: "(Advanced) Update Strategy" + schema: + type: string + default: "Recreate" + required: true + enum: + - value: "Recreate" + description: "Recreate: Kill existing pods before creating new ones" + - value: "RollingUpdate" + description: "RollingUpdate: Create new pods and then kill old ones" + - value: "OnDelete" + description: "(Legacy) OnDelete: ignore .spec.template changes" +# Include{controllerExpert} + +# Include{containerConfig} + + - variable: service + group: "Networking and Services" + label: "Configure Service(s)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelector} + - variable: main + label: "Main Service Port Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: "Port" + description: "This port exposes the container port on the service" + schema: + type: int + default: 10199 + required: true + - variable: advanced + label: "Show Advanced settings" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: nodePort + label: "Node Port (Optional)" + description: "This port gets exposed to the node. Only considered when service type is NodePort, Simple or LoadBalancer" + schema: + type: int + min: 9000 + max: 65535 + - variable: targetPort + label: "Target Port" + description: "The internal(!) port on the container the Application runs on" + schema: + type: int + default: 80 + + - variable: serviceexpert + group: "Networking and Services" + label: "Show Expert Config" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + group: "Networking and Services" + label: "Host-Networking (Complicated)" + schema: + type: boolean + default: false + +# Include{serviceExpert} + +# Include{serviceList} + + - variable: persistence + label: "Integrated Persistent Storage" + description: "Integrated Persistent Storage" + group: "Storage and Persistence" + schema: + additional_attrs: true + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Config." + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" +# Include{persistenceBasic} + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" +# Include{persistenceAdvanced} + - variable: userfile + label: "App userfile Storage" + description: "Stores user's file" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: "Type of Storage" + description: "Sets the persistence type, Anything other than PVC could break rollback!" + schema: + type: string + default: "simplePVC" + enum: + - value: "simplePVC" + description: "PVC (simple)" + - value: "simpleHP" + description: "HostPath (simple)" + - value: "emptyDir" + description: "emptyDir" + - value: "pvc" + description: "pvc" + - value: "hostPath" + description: "hostPath" +# Include{persistenceBasic} + - variable: hostPath + label: "hostPath" + description: "Path inside the container the storage is mounted" + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: "EmptyDir Medium" + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: "Default" + - value: "Memory" + description: "Memory" +# Include{persistenceAdvanced} +# Include{persistenceList} + + - variable: ingress + label: "" + group: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "Main Ingress" + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} + +# Include{ingressTLS} + +# Include{ingressTraefik} + +# Include{ingressExpert} + +# Include{ingressList} + +# Include{security} + + - variable: advancedSecurity + label: "Show Advanced Security Settings" + group: "Security and Permissions" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: securityContext + label: "Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: false + - variable: allowPrivilegeEscalation + label: "Allow Privilege Escalation" + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false +# Include{securityContextAdvanced} + + - variable: podSecurityContext + group: "Security and Permissions" + label: "Pod Security Context" + schema: + additional_attrs: true + type: dict + attrs: + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 +# Include{podSecurityContextAdvanced} + +# Include{resources} + +# Include{advanced} + +# Include{addons} diff --git a/charts/incubator/filerun/templates/common.yaml b/charts/incubator/filerun/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/incubator/filerun/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/incubator/filerun/values.yaml b/charts/incubator/filerun/values.yaml new file mode 100644 index 00000000000..593cab8780e --- /dev/null +++ b/charts/incubator/filerun/values.yaml @@ -0,0 +1,48 @@ +image: + repository: tccr.io/truecharts/filerun + tag: latest@sha256:cc7b8c11610fd5cde28301fa4f68b7d9609e61613fbfbc277c0491ad584a0256 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +env: + FR_DB_NAME: "filerun" + FR_DB_USER: "filerun" + FR_DB_PORT: "3306" + +envValueFrom: + FR_DB_HOST: + secretKeyRef: + name: mariadbcreds + key: plainporthost + FR_DB_PASS: + secretKeyRef: + name: mariadbcreds + key: mariadb-password + +service: + main: + ports: + main: + port: 10199 + targetPort: 80 + +persistence: + config: + enabled: true + mountPath: "/var/www/html" + userfile: + enabled: true + mountPath: "/user-files" + +mariadb: + enabled: true + mariadbUsername: filerun + mariadbDatabase: filerun + existingSecret: "mariadbcreds" diff --git a/charts/stable/snipe-it/Chart.yaml b/charts/stable/snipe-it/Chart.yaml index 1a95834430c..de9defdc650 100644 --- a/charts/stable/snipe-it/Chart.yaml +++ b/charts/stable/snipe-it/Chart.yaml @@ -29,7 +29,7 @@ name: snipe-it sources: - https://snipeitapp.com/ - https://hub.docker.com/r/linuxserver/ -version: 2.0.4 +version: 2.0.5 annotations: truecharts.org/catagories: | - management diff --git a/docs/_static/img/appicons/filerun.png b/docs/_static/img/appicons/filerun.png new file mode 100644 index 0000000000000000000000000000000000000000..cd32c594ab21c520442d1f2f42cc89f51ad5be8c GIT binary patch literal 44357 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

9G!#&1d@)<>;m}Z(i95!0-ZGQn-Sj{=2sEG~ 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 literal 0 HcmV?d00001 diff --git a/docs/manual/default-ports.md b/docs/manual/default-ports.md index 1748d531bcc..ea081dc4110 100644 --- a/docs/manual/default-ports.md +++ b/docs/manual/default-ports.md @@ -355,6 +355,7 @@ These defaults can of course be changed, but as we guarantee "sane, working defa | outline | main | main | 10196 | TCP | | | chevereto | main | main | 10197 | TCP | | | kimai | main | main | 10198 | TCP | | +| filerun | main | main | 10199 | TCP | | | double-take | main | main | 10200 | TCP | | | storj-node | main | main | 14002 | TCP | | | satisfactory | beacon | beacon | 15000 | UDP | |