From d008f974211d8c9597fd1b89620431d8213ea7b3 Mon Sep 17 00:00:00 2001 From: Stavros Kois <47820033+stavros-k@users.noreply.github.com> Date: Mon, 28 Feb 2022 17:11:56 +0200 Subject: [PATCH] feat(budge): Add budge (#1976) * feat(budge): Add budge * feat(budge): Add budge * lsio perms * remove tz * add varrun * rofs * prod env * rofs disable * Update charts/incubator/budge/questions.yaml * Update charts/incubator/budge/values.yaml * Update charts/incubator/budge/questions.yaml * Update docs/manual/default-ports.md * Update charts/incubator/budge/values.yaml Co-authored-by: Kjeld Schouten-Lebbing --- charts/incubator/budge/Chart.yaml | 27 ++ charts/incubator/budge/questions.yaml | 321 +++++++++++++++++++ charts/incubator/budge/templates/common.yaml | 1 + charts/incubator/budge/values.yaml | 30 ++ docs/_static/img/appicons/budge-icon.png | Bin 0 -> 31049 bytes docs/manual/default-ports.md | 26 +- 6 files changed, 392 insertions(+), 13 deletions(-) create mode 100644 charts/incubator/budge/Chart.yaml create mode 100644 charts/incubator/budge/questions.yaml create mode 100644 charts/incubator/budge/templates/common.yaml create mode 100644 charts/incubator/budge/values.yaml create mode 100644 docs/_static/img/appicons/budge-icon.png diff --git a/charts/incubator/budge/Chart.yaml b/charts/incubator/budge/Chart.yaml new file mode 100644 index 00000000000..cc460dc1f1f --- /dev/null +++ b/charts/incubator/budge/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +appVersion: "10.6.2" +dependencies: +- name: common + repository: https://truecharts.org + version: 8.16.0 +description: Budge is an open source 'budgeting with envelopes' personal finance app. +home: https://github.com/truecharts/apps/tree/master/charts/stable/budge +icon: https://truecharts.org/_static/img/appicons/budge-icon.png +keywords: +- finance +- budge +kubeVersion: '>=1.16.0-0' +maintainers: +- email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: budge +sources: +- https://github.com/linuxserver/budge +- https://github.com/linuxserver/docker-BudgE +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - media + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/charts/incubator/budge/questions.yaml b/charts/incubator/budge/questions.yaml new file mode 100644 index 00000000000..41c587b5624 --- /dev/null +++ b/charts/incubator/budge/questions.yaml @@ -0,0 +1,321 @@ +# 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} + # Docker specific env + - variable: env + group: "Container Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: +# Include{fixedEnv} + - variable: PUID + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + +# 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: 10165 + 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 Configuration." + 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} + + - 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/budge/templates/common.yaml b/charts/incubator/budge/templates/common.yaml new file mode 100644 index 00000000000..a6613c2ce21 --- /dev/null +++ b/charts/incubator/budge/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/incubator/budge/values.yaml b/charts/incubator/budge/values.yaml new file mode 100644 index 00000000000..12f967e7ffe --- /dev/null +++ b/charts/incubator/budge/values.yaml @@ -0,0 +1,30 @@ +image: + repository: ghcr.io/linuxserver/budge + tag: version-0.0.3@sha256:361452dbded9d4ffe4afdee750b64d742dd97ffdbebb3801c1fbdb1bccc8b873 + pullPolicy: IfNotPresent + +securityContext: + readOnlyRootFilesystem: false + runAsNonRoot: false + +podSecurityContext: + runAsUser: 0 + runAsGroup: 0 + +env: + NODE_ENV: "production" + PUID: 568 + +service: + main: + ports: + main: + port: 10165 + targetPort: 80 + +persistence: + varrun: + enabled: true + config: + enabled: true + mountPath: "/config" diff --git a/docs/_static/img/appicons/budge-icon.png b/docs/_static/img/appicons/budge-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d3dbed60d90348729622bcd29a18a4a4b5bd17c6 GIT binary patch literal 31049 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