From 605cd5eee240a4fdd40bab9c0d3a5b5b14e0fc81 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 3 Oct 2022 19:01:26 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/money-balancer/0.0.1/CHANGELOG.md | 11 + incubator/money-balancer/0.0.1/Chart.lock | 6 + incubator/money-balancer/0.0.1/Chart.yaml | 29 + incubator/money-balancer/0.0.1/README.md | 106 + incubator/money-balancer/0.0.1/app-readme.md | 8 + .../0.0.1/charts/common-10.6.8.tgz | Bin 0 -> 48413 bytes incubator/money-balancer/0.0.1/ix_values.yaml | 35 + incubator/money-balancer/0.0.1/questions.yaml | 2545 +++++++++++++++++ .../0.0.1/templates/_secrets.tpl | 20 + .../0.0.1/templates/common.yaml | 5 + incubator/money-balancer/0.0.1/values.yaml | 0 incubator/money-balancer/item.yaml | 4 + 12 files changed, 2769 insertions(+) create mode 100644 incubator/money-balancer/0.0.1/CHANGELOG.md create mode 100644 incubator/money-balancer/0.0.1/Chart.lock create mode 100644 incubator/money-balancer/0.0.1/Chart.yaml create mode 100644 incubator/money-balancer/0.0.1/README.md create mode 100644 incubator/money-balancer/0.0.1/app-readme.md create mode 100644 incubator/money-balancer/0.0.1/charts/common-10.6.8.tgz create mode 100644 incubator/money-balancer/0.0.1/ix_values.yaml create mode 100644 incubator/money-balancer/0.0.1/questions.yaml create mode 100644 incubator/money-balancer/0.0.1/templates/_secrets.tpl create mode 100644 incubator/money-balancer/0.0.1/templates/common.yaml create mode 100644 incubator/money-balancer/0.0.1/values.yaml create mode 100644 incubator/money-balancer/item.yaml diff --git a/incubator/money-balancer/0.0.1/CHANGELOG.md b/incubator/money-balancer/0.0.1/CHANGELOG.md new file mode 100644 index 0000000000..a12fef5ba1 --- /dev/null +++ b/incubator/money-balancer/0.0.1/CHANGELOG.md @@ -0,0 +1,11 @@ +# Changelog + + + +## [money-balancer-0.0.1]money-balancer-0.0.1 (2022-10-03) + +### Feat + +- add money-balancer ([#3996](https://github.com/truecharts/charts/issues/3996)) + + \ No newline at end of file diff --git a/incubator/money-balancer/0.0.1/Chart.lock b/incubator/money-balancer/0.0.1/Chart.lock new file mode 100644 index 0000000000..9663a1d28b --- /dev/null +++ b/incubator/money-balancer/0.0.1/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://library-charts.truecharts.org + version: 10.6.8 +digest: sha256:591c2c8ae41f53f15397325a4a7a0ae3551b777030eea017520f8c3069f2b7c9 +generated: "2022-10-03T18:59:49.074236225Z" diff --git a/incubator/money-balancer/0.0.1/Chart.yaml b/incubator/money-balancer/0.0.1/Chart.yaml new file mode 100644 index 0000000000..f9777465c9 --- /dev/null +++ b/incubator/money-balancer/0.0.1/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +appVersion: "1.1.0" +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 10.6.8 +deprecated: false +description: Money Balancer helps you to keep track of who paid for what and calculates your balance with all of your friends. +home: https://truecharts.org/docs/charts/incubator/money-balancer +icon: https://truecharts.org/img/hotlink-ok/chart-icons/money-balancer.png +keywords: + - money + - balance +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: money-balancer +sources: + - https://github.com/truecharts/charts/tree/master/charts/incubator/money-balancer + - https://github.com/dorianim/money-balancer +type: application +version: 0.0.1 +annotations: + truecharts.org/catagories: | + - finance + truecharts.org/SCALE-support: "true" + truecharts.org/grade: U diff --git a/incubator/money-balancer/0.0.1/README.md b/incubator/money-balancer/0.0.1/README.md new file mode 100644 index 0000000000..0fea3fc070 --- /dev/null +++ b/incubator/money-balancer/0.0.1/README.md @@ -0,0 +1,106 @@ +# money-balancer + +Money Balancer helps you to keep track of who paid for what and calculates your balance with all of your friends. + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. + +This readme is just an automatically generated general guide on installing our Helm Charts and Apps. +For more information, please click here: [money-balancer](https://truecharts.org/docs/charts/incubator/money-balancer) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.truecharts.org | common | 10.6.8 | + +## Installing the Chart + +### TrueNAS SCALE + +To install this Chart on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Installing-an-App). + +### Helm + +To install the chart with the release name `money-balancer` + +```console +helm repo add TrueCharts https://charts.truecharts.org +helm repo update +helm install money-balancer TrueCharts/money-balancer +``` + +## Uninstall + +### TrueNAS SCALE + +**Upgrading, Rolling Back and Uninstalling the Chart** + +To upgrade, rollback or delete this Chart from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/docs/manual/SCALE%20Apps/Upgrade-rollback-delete-an-App). + +### Helm + +To uninstall the `money-balancer` deployment + +```console +helm uninstall money-balancer +``` + +## Configuration + +### Helm + +#### Available Settings + +Read through the values.yaml file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/truecharts/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +#### Configure using the command line + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install money-balancer \ + --set env.TZ="America/New York" \ + TrueCharts/money-balancer +``` + +#### Configure using a yaml file + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install money-balancer TrueCharts/money-balancer -f values.yaml +``` + +#### Connecting to other charts + +If you need to connect this Chart to other Charts on TrueNAS SCALE, please refer to our [Linking Charts Internally](https://truecharts.org/docs/manual/SCALE%20Apps/linking-apps) quick-start guide. + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/docs/manual/SCALE%20Apps/Important-MUST-READ). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +--- + +All Rights Reserved - The TrueCharts Project diff --git a/incubator/money-balancer/0.0.1/app-readme.md b/incubator/money-balancer/0.0.1/app-readme.md new file mode 100644 index 0000000000..c0bbc6cfb1 --- /dev/null +++ b/incubator/money-balancer/0.0.1/app-readme.md @@ -0,0 +1,8 @@ +Money Balancer helps you to keep track of who paid for what and calculates your balance with all of your friends. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/docs/charts/incubator/money-balancer](https://truecharts.org/docs/charts/incubator/money-balancer) + +--- + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/docs/about/sponsor) or contributing back to the project any way you can! diff --git a/incubator/money-balancer/0.0.1/charts/common-10.6.8.tgz b/incubator/money-balancer/0.0.1/charts/common-10.6.8.tgz new file mode 100644 index 0000000000000000000000000000000000000000..2ff33c57bb7fe86eda9996f7a7a0611afdbafa6e GIT binary patch literal 48413 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 VeYtb_{{sL3|NmVoI<)}o1OSMxY@h%D literal 0 HcmV?d00001 diff --git a/incubator/money-balancer/0.0.1/ix_values.yaml b/incubator/money-balancer/0.0.1/ix_values.yaml new file mode 100644 index 0000000000..3206bcd0cb --- /dev/null +++ b/incubator/money-balancer/0.0.1/ix_values.yaml @@ -0,0 +1,35 @@ +image: + repository: tccr.io/truecharts/money-balancer + pullPolicy: IfNotPresent + tag: v1.1.0@sha256:f67f1290a4d717067dc765232ee43db1b49908ca6360901336b02202891f7386 + +envFrom: + - secretRef: + name: '{{ include "tc.common.names.fullname" . }}-moneybalancer-secret' + +probes: + liveness: + type: HTTP + path: / + readiness: + type: HTTP + path: / + startup: + type: HTTP + path: / + +service: + main: + ports: + main: + port: 10302 + protocol: HTTP + targetPort: 8000 + +persistence: + data: + enabled: true + mountPath: "/data" + +portal: + enabled: true diff --git a/incubator/money-balancer/0.0.1/questions.yaml b/incubator/money-balancer/0.0.1/questions.yaml new file mode 100644 index 0000000000..72568d7db2 --- /dev/null +++ b/incubator/money-balancer/0.0.1/questions.yaml @@ -0,0 +1,2545 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: Controller + description: Configure Workload Deployment + - name: Container Configuration + description: Additional Container Configuration + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: global + label: Global Settings + group: Controller + schema: + type: dict + hidden: true + attrs: + - variable: isSCALE + label: Flag this is SCALE + schema: + type: boolean + default: true + hidden: true + - 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 + required: true + enum: + - value: deployment + description: Deployment + - value: statefulset + description: Statefulset + - value: daemonset + description: Daemonset + default: deployment + - variable: replicas + description: Number of desired pod replicas + label: Desired Replicas + schema: + type: int + required: true + default: 1 + - variable: strategy + description: Please specify type of workload to deploy + label: (Advanced) Update Strategy + schema: + type: string + 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" + default: Recreate + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Controller Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Controller Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: customextraargs + group: Controller + label: "Extra Args" + description: "Do not click this unless you know what you are doing" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: TZ + label: Timezone + group: Container Configuration + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + group: Container Configuration + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: expertpodconf + group: Container Configuration + label: Show Expert Configuration + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: tty + label: Enable TTY + description: Determines whether containers in a pod runs with TTY enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: stdin + label: Enable STDIN + description: Determines whether containers in a pod runs with stdin enabled. By default pod has it disabled. + group: Workload Details + schema: + type: boolean + default: false + - variable: termination + group: Container Configuration + label: Termination settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: gracePeriodSeconds + label: Grace Period Seconds + schema: + type: int + default: 10 + - variable: podLabelsList + group: Container Configuration + label: Pod Labels + schema: + type: list + default: [] + items: + - variable: podLabelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: podAnnotationsList + group: Container Configuration + label: Pod Annotations + schema: + type: list + default: [] + items: + - variable: podAnnotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - 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: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - 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: 10302 + required: true + - variable: advanced + label: Show Advanced Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enabled + label: Enable the Port + schema: + type: boolean + hidden: true + default: true + - 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: 8000 + - 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 + - variable: externalInterfaces + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + show_subquestions_if: static + subquestions: + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: dnsPolicy + group: Networking and Services + label: dnsPolicy + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ClusterFirst + description: ClusterFirst + - value: ClusterFirstWithHostNet + description: ClusterFirstWithHostNet + - value: None + description: None + - variable: dnsConfig + label: DNS Configuration + group: Networking and Services + description: Specify custom DNS configuration which will be applied to the pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: nameservers + label: Name Servers + schema: + default: [] + type: list + items: + - variable: nameserver + label: Name Server + schema: + type: string + - variable: options + label: Options + schema: + default: [] + type: list + items: + - variable: option + label: Option Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: searches + label: Searches + schema: + default: [] + type: list + items: + - variable: search + label: Search Entry + schema: + type: string + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: TCP + enum: + - value: HTTP + description: HTTP + - value: HTTPS + description: HTTPS + - value: TCP + description: TCP + - value: UDP + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: data + label: App Data Storage + description: Stores the Application Data. + 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: Host Path (simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + 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 + - variable: size + label: Size quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostPathType + label: (Advanced) hostPath Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) storageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name (Optional) + description: "Not required, please set to config when mounting /config or temp when mounting /tmp" + schema: + type: string + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: simpleHP + enum: + - value: simplePVC + description: PVC (Simple) + - value: simpleHP + description: Host Path (Simple) + - value: emptyDir + description: emptyDir + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: setPermissionsSimple + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "simpleHP"]] + type: boolean + default: false + - variable: setPermissions + label: Automatic Permissions + description: Automatically set permissions on install + schema: + show_if: [["type", "=", "hostPath"]] + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPathSimple + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "simpleHP"]] + type: hostpath + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: hostPathType + label: (Advanced) Host Path Type + schema: + show_if: [["type", "=", "hostPath"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: DirectoryOrCreate + description: DirectoryOrCreate + - value: Directory + description: Directory + - value: FileOrCreate + description: FileOrCreate + - value: File + description: File + - value: Socket + description: Socket + - value: CharDevice + description: CharDevice + - value: BlockDevice + description: BlockDevice + - variable: storageClass + label: (Advanced) StorageClass + description: "Warning: Anything other than SCALE-ZFS or empty will break rollback!" + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: SCALE-ZFS + - variable: accessMode + label: (Advanced) Access Mode + description: Allow or disallow multiple PVC's writhing to the same PV + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: ReadWriteOnce + enum: + - value: ReadWriteOnce + description: ReadWriteOnce + - value: ReadOnlyMany + description: ReadOnlyMany + - value: ReadWriteMany + description: ReadWriteMany + - variable: advanced + label: Show Advanced Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: expert + label: Show Expert Configuration Options + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: enableFixedMiddlewares + description: These middlewares enforce a number of best practices. + label: Enable Default Middlewares + schema: + type: boolean + default: true + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: labelsList + label: Labels + schema: + type: list + default: [] + items: + - variable: labelItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: annotationsList + label: Annotations + schema: + type: list + default: [] + items: + - variable: annotationItem + label: Label + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: scaleCert + label: Select TrueNAS SCALE Certificate + schema: + type: int + $ref: + - "definitions/certificate" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: security + label: Container Security Settings + group: Security and Permissions + schema: + type: dict + additional_attrs: true + attrs: + - variable: editsecurity + label: Change PUID / UMASK values + description: By enabling this you override default set values. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "002" + - 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: true + - variable: allowPrivilegeEscalation + label: Allow Privilege Escalation + schema: + type: boolean + default: false + - variable: runAsNonRoot + label: runAsNonRoot + schema: + type: boolean + default: true + - variable: capabilities + label: Capabilities + schema: + additional_attrs: true + type: dict + attrs: + - variable: drop + label: Drop Capability + schema: + type: list + default: [] + items: + - variable: dropEntry + label: "" + schema: + type: string + - variable: add + label: Add Capability + schema: + type: list + default: [] + items: + - variable: addEntry + label: "" + schema: + type: string + - 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: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID this App of the user running the application + schema: + type: int + default: 568 + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + + - variable: advancedresources + label: Set Custom Resource Limits/Requests (Advanced) + group: Resources and Devices + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: resources + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 10m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/docs/manual/SCALE%20Apps/indepth/validation" + schema: + type: string + default: 50Mi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: hostPath + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + # Specify GPU configuration + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] +# - variable: autoscaling +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: networkPolicy +# group: Advanced +# label: (Advanced) Network Policy +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: policyType +# label: Policy Type +# schema: +# type: string +# default: "" +# enum: +# - value: "" +# description: Default +# - value: ingress +# description: Ingress +# - value: egress +# description: Egress +# - value: ingress-egress +# description: Ingress and Egress +# - variable: egress +# label: Egress +# schema: +# type: list +# default: [] +# items: +# - variable: egressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: to +# label: To +# schema: +# type: list +# default: [] +# items: +# - variable: toEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP +# - variable: ingress +# label: Ingress +# schema: +# type: list +# default: [] +# items: +# - variable: ingressEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: from +# label: From +# schema: +# type: list +# default: [] +# items: +# - variable: fromEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: ipBlock +# label: IP Block +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: cidr +# label: CIDR +# schema: +# type: string +# default: "" +# - variable: except +# label: Except +# schema: +# type: list +# default: [] +# items: +# - variable: exceptint +# label: "" +# schema: +# type: string +# - variable: namespaceSelector +# label: Namespace Selector +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: podSelector +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: matchExpressions +# label: Match Expressions +# schema: +# type: list +# default: [] +# items: +# - variable: expressionEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: key +# label: Key +# schema: +# type: string +# - variable: operator +# label: Operator +# schema: +# type: string +# default: TCP +# enum: +# - value: In +# description: In +# - value: NotIn +# description: NotIn +# - value: Exists +# description: Exists +# - value: DoesNotExist +# description: DoesNotExist +# - variable: values +# label: Values +# schema: +# type: list +# default: [] +# items: +# - variable: value +# label: "" +# schema: +# type: string +# - variable: ports +# label: Ports +# schema: +# type: list +# default: [] +# items: +# - variable: portsEntry +# label: "" +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: port +# label: Port +# schema: +# type: int +# - variable: endPort +# label: End Port +# schema: +# type: int +# - variable: protocol +# label: Protocol +# schema: +# type: string +# default: TCP +# enum: +# - value: TCP +# description: TCP +# - value: UDP +# description: UDP +# - value: SCTP +# description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: git + label: Git Settings + schema: + additional_attrs: true + type: dict + attrs: + - variable: deployKey + description: Raw SSH Private Key + label: Deploy Key + schema: + type: string + - variable: deployKeyBase64 + description: Base64-encoded SSH private key. When both variables are set, the raw SSH key takes precedence + label: Deploy Key Base64 + schema: + type: string + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: nodePort + description: Leave Empty to Disable + label: nodePort DEPRECATED + schema: + type: int + default: 36107 + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: promtail + label: Promtail + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: loki + label: Loki URL + schema: + type: string + required: true + - variable: logs + label: Log Paths + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: path + label: Path + schema: + type: string + required: true + - variable: args + label: Promtail Command Line Arguments + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + required: true + - variable: envList + label: Promtail Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: openvpn + description: OpenVPN + - value: wireguard + description: Wireguard + - value: tailscale + description: Tailscale + - variable: openvpn + label: OpenVPN Settings + schema: + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: Sock5 Server + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: dict + show_if: [["type", "!=", "disabled"]] + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type + schema: + type: string + default: hostPath + hidden: true + - variable: hostPathType + label: hostPathType + schema: + type: string + default: File + hidden: true + - variable: noMount + label: noMount + schema: + type: boolean + default: true + hidden: true + - variable: hostPath + label: Full Path to File + description: "Path to your local VPN config file for example: /mnt/tank/vpn.conf or /mnt/tank/vpn.ovpn" + schema: + type: string + default: "" + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/incubator/money-balancer/0.0.1/templates/_secrets.tpl b/incubator/money-balancer/0.0.1/templates/_secrets.tpl new file mode 100644 index 0000000000..3209499ebc --- /dev/null +++ b/incubator/money-balancer/0.0.1/templates/_secrets.tpl @@ -0,0 +1,20 @@ +{{/* Define the secrets */}} +{{- define "moneybalancer.secrets" -}} + +{{- $secretName := printf "%s-moneybalancer-secret" (include "tc.common.names.fullname" .) }} + +--- + +apiVersion: v1 +kind: Secret +type: Opaque +metadata: + name: {{ $secretName }} +data: + {{- with (lookup "v1" "Secret" .Release.Namespace $secretName) }} + JWT_SECRET: {{ index .data "JWT_SECRET" }} + {{- else }} + JWT_SECRET: {{ randAlphaNum 32 | b64enc }} + {{- end }} + +{{- end -}} diff --git a/incubator/money-balancer/0.0.1/templates/common.yaml b/incubator/money-balancer/0.0.1/templates/common.yaml new file mode 100644 index 0000000000..c6563a09bb --- /dev/null +++ b/incubator/money-balancer/0.0.1/templates/common.yaml @@ -0,0 +1,5 @@ +{{- include "tc.common.loader.init" . }} + +{{ include "moneybalancer.secrets" . }} + +{{ include "tc.common.loader.apply" . }} diff --git a/incubator/money-balancer/0.0.1/values.yaml b/incubator/money-balancer/0.0.1/values.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/incubator/money-balancer/item.yaml b/incubator/money-balancer/item.yaml new file mode 100644 index 0000000000..365192c85b --- /dev/null +++ b/incubator/money-balancer/item.yaml @@ -0,0 +1,4 @@ +icon_url: https://truecharts.org/img/hotlink-ok/chart-icons/money-balancer.png +categories: +- finance +