From 67c53866509cb808965db259cb723ec01fb62d8a Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 25 Dec 2023 20:37:35 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/pihole/13.0.1/CHANGELOG.md | 99 + stable/pihole/13.0.1/Chart.yaml | 38 + stable/pihole/13.0.1/README.md | 27 + stable/pihole/13.0.1/app-changelog.md | 9 + stable/pihole/13.0.1/app-readme.md | 8 + stable/pihole/13.0.1/charts/common-17.1.0.tgz | Bin 0 -> 97068 bytes stable/pihole/13.0.1/ix_values.yaml | 71 + stable/pihole/13.0.1/questions.yaml | 3232 +++++++++++++++++ stable/pihole/13.0.1/templates/_configmap.tpl | 14 + stable/pihole/13.0.1/templates/common.yaml | 11 + stable/pihole/13.0.1/values.yaml | 0 11 files changed, 3509 insertions(+) create mode 100644 stable/pihole/13.0.1/CHANGELOG.md create mode 100644 stable/pihole/13.0.1/Chart.yaml create mode 100644 stable/pihole/13.0.1/README.md create mode 100644 stable/pihole/13.0.1/app-changelog.md create mode 100644 stable/pihole/13.0.1/app-readme.md create mode 100644 stable/pihole/13.0.1/charts/common-17.1.0.tgz create mode 100644 stable/pihole/13.0.1/ix_values.yaml create mode 100644 stable/pihole/13.0.1/questions.yaml create mode 100644 stable/pihole/13.0.1/templates/_configmap.tpl create mode 100644 stable/pihole/13.0.1/templates/common.yaml create mode 100644 stable/pihole/13.0.1/values.yaml diff --git a/stable/pihole/13.0.1/CHANGELOG.md b/stable/pihole/13.0.1/CHANGELOG.md new file mode 100644 index 00000000000..2c0b4249e1d --- /dev/null +++ b/stable/pihole/13.0.1/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [pihole-13.0.1](https://github.com/truecharts/charts/compare/pihole-13.0.0...pihole-13.0.1) (2023-12-25) + +### Fix + +- fix quoting ([#16538](https://github.com/truecharts/charts/issues/16538)) + + + + +## [pihole-13.0.0](https://github.com/truecharts/charts/compare/pihole-12.0.11...pihole-13.0.0) (2023-12-25) + +### Chore + +- update helm chart common to 17.1.0 by renovate ([#16532](https://github.com/truecharts/charts/issues/16532)) + + + + +## [pihole-12.0.11](https://github.com/truecharts/charts/compare/pihole-12.0.10...pihole-12.0.11) (2023-12-24) + +### Chore + +- update helm general non-major by renovate ([#16384](https://github.com/truecharts/charts/issues/16384)) + + + + +## [pihole-12.0.10](https://github.com/truecharts/charts/compare/pihole-12.0.9...pihole-12.0.10) (2023-12-24) + +### Chore + +- update helm general non-major by renovate ([#16376](https://github.com/truecharts/charts/issues/16376)) + + + + +## [pihole-12.0.9](https://github.com/truecharts/charts/compare/pihole-12.0.8...pihole-12.0.9) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16373](https://github.com/truecharts/charts/issues/16373)) + + + + +## [pihole-12.0.8](https://github.com/truecharts/charts/compare/pihole-12.0.7...pihole-12.0.8) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16369](https://github.com/truecharts/charts/issues/16369)) + + + + +## [pihole-12.0.7](https://github.com/truecharts/charts/compare/pihole-12.0.6...pihole-12.0.7) (2023-12-23) + +### Chore + +- update helm general non-major by renovate ([#16361](https://github.com/truecharts/charts/issues/16361)) + + + + +## [pihole-12.0.6](https://github.com/truecharts/charts/compare/pihole-12.0.5...pihole-12.0.6) (2023-12-22) + +### Chore + +- update helm general non-major by renovate ([#16359](https://github.com/truecharts/charts/issues/16359)) + + + + +## [pihole-12.0.5](https://github.com/truecharts/charts/compare/pihole-12.0.4...pihole-12.0.5) (2023-12-22) + +### Fix + +- expose custom options for homepage integration + + + + +## [pihole-12.0.4](https://github.com/truecharts/charts/compare/pihole-12.0.3...pihole-12.0.4) (2023-12-21) + +### Fix + +- bump to release middleware fix + + + + +## [pihole-12.0.3](https://github.com/truecharts/charts/compare/pihole-12.0.2...pihole-12.0.3) (2023-12-21) + +### Chore diff --git a/stable/pihole/13.0.1/Chart.yaml b/stable/pihole/13.0.1/Chart.yaml new file mode 100644 index 00000000000..6d795442223 --- /dev/null +++ b/stable/pihole/13.0.1/Chart.yaml @@ -0,0 +1,38 @@ +kubeVersion: ">=1.24.0-0" +apiVersion: v2 +name: pihole +version: 13.0.1 +appVersion: 2023.11.0 +description: DNS and Ad-filtering for your network +home: https://truecharts.org/charts/stable/pihole +icon: https://truecharts.org/img/hotlink-ok/chart-icons/pihole.png +deprecated: false +sources: + - https://github.com/pi-hole/docker-pi-hole + - https://pi-hole.net/ + - https://github.com/pi-hole + - https://github.com/truecharts/charts/tree/master/charts/stable/pihole + - https://hub.docker.com/r/pihole/pihole +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - DNS +dependencies: + - name: common + version: 17.1.0 + repository: https://library-charts.truecharts.org + condition: "" + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: networking + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: stable +type: application diff --git a/stable/pihole/13.0.1/README.md b/stable/pihole/13.0.1/README.md new file mode 100644 index 00000000000..575963ee75c --- /dev/null +++ b/stable/pihole/13.0.1/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/pihole) + +**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)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/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/stable/pihole/13.0.1/app-changelog.md b/stable/pihole/13.0.1/app-changelog.md new file mode 100644 index 00000000000..4ab51911fe1 --- /dev/null +++ b/stable/pihole/13.0.1/app-changelog.md @@ -0,0 +1,9 @@ + + +## [pihole-13.0.1](https://github.com/truecharts/charts/compare/pihole-13.0.0...pihole-13.0.1) (2023-12-25) + +### Fix + +- fix quoting ([#16538](https://github.com/truecharts/charts/issues/16538)) + + \ No newline at end of file diff --git a/stable/pihole/13.0.1/app-readme.md b/stable/pihole/13.0.1/app-readme.md new file mode 100644 index 00000000000..427b7f8ce26 --- /dev/null +++ b/stable/pihole/13.0.1/app-readme.md @@ -0,0 +1,8 @@ +DNS and Ad-filtering for your network + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/pihole](https://truecharts.org/charts/stable/pihole) + +--- + +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! diff --git a/stable/pihole/13.0.1/charts/common-17.1.0.tgz b/stable/pihole/13.0.1/charts/common-17.1.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..b40bd72708002b5ac7afbc925e06760054cfee21 GIT binary patch literal 97068 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 TF#Z1l00960?4*=b06Gi+L)ca) literal 0 HcmV?d00001 diff --git a/stable/pihole/13.0.1/ix_values.yaml b/stable/pihole/13.0.1/ix_values.yaml new file mode 100644 index 00000000000..c4edd5db39c --- /dev/null +++ b/stable/pihole/13.0.1/ix_values.yaml @@ -0,0 +1,71 @@ +image: + repository: pihole/pihole + pullPolicy: IfNotPresent + tag: 2023.11.0@sha256:24b1ef8f66d810faffefdb9b66850bbe2d55013506b892605acef414e210edeb +pihole: + webPassword: somepassword" + dnsServers: + - "9.9.9.9" + - "149.112.112.112" +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + allowPrivilegeEscalation: true + runAsUser: 0 + runAsGroup: 0 + capabilities: + add: + - NET_ADMIN + - SETFCAP + - SETPCAP + - KILL +workload: + main: + podSpec: + containers: + main: + envFrom: + - configMapRef: + name: pihole-env + probes: + liveness: + type: http + path: /admin/index.php + readiness: + type: http + path: /admin/index.php + startup: + type: http + path: /admin/index.php +service: + main: + ports: + main: + port: 9089 + targetPort: 80 + dns-tcp: + enabled: true + ports: + dns-tcp: + enabled: true + port: 53 + targetPort: 53 + dns: + enabled: true + ports: + dns: + enabled: true + protocol: udp + port: 53 + targetPort: 53 +persistence: + config: + enabled: true + mountPath: "/etc/pihole" + dnsmasq: + enabled: true + mountPath: "/etc/dnsmasq.d" +portal: + open: + enabled: true diff --git a/stable/pihole/13.0.1/questions.yaml b/stable/pihole/13.0.1/questions.yaml new file mode 100644 index 00000000000..7abccadcfd8 --- /dev/null +++ b/stable/pihole/13.0.1/questions.yaml @@ -0,0 +1,3232 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - 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: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + path: "/" + admin: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + path: "/admin/" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + + + - 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..." + 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: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: pihole + group: "App Configuration" + label: "Pi-Hole Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: webPassword + label: "Web Password" + description: "Sets admin password for the GUI" + schema: + type: string + default: "" + required: true + - variable: dnsServers + label: "DNS Servers" + description: "Set DNS servers. Max 2. Use #port suffix for ports" + schema: + type: list + default: ["9.9.9.9", "149.112.112.112"] + items: + - variable: dnsEntry + label: "DNS Server Entry" + schema: + type: string + default: "" + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + + - variable: imagePullSecretList + group: "General Settings" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: registry + label: "Registry" + schema: + type: string + required: true + default: "https://index.docker.io/v1/" + - variable: username + label: "Username" + schema: + type: string + required: true + default: "" + - variable: password + label: "Password" + schema: + type: string + required: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + - 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) + - 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: 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: 9089 + required: true + - variable: dns + label: "DNS 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) + - 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: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns + label: "DNS 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: 53 + required: true + - variable: dns-tcp + label: "DNS-TCP 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) + - 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: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - variable: dns-tcp + label: "DNS-TCP 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: 53 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + 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: + additional_attrs: true + 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 + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + 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: 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: 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: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI 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: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - 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 (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: dnsmasq + label: "App dnsmasq.d Storage" + description: "Stores the Application dnsmasq.d." + 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: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - value: iscsi + description: iSCSI 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: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - 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 (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: disabled + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - 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: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - 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: iscsi + label: iSCSI Options + schema: + show_if: [["type", "=", "iscsi"]] + type: dict + additional_attrs: true + attrs: + - variable: targetPortal + label: targetPortal + schema: + type: string + required: true + default: "" + - variable: iqn + label: iqn + schema: + type: string + required: true + default: "" + - variable: lun + label: lun + schema: + type: int + default: 0 + - variable: authSession + label: authSession + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: authDiscovery + label: authDiscovery + schema: + type: dict + additional_attrs: true + attrs: + - variable: username + label: username + schema: + type: string + default: "" + - variable: password + label: password + schema: + type: string + default: "" + - variable: usernameInitiator + label: usernameInitiator + schema: + type: string + default: "" + - variable: passwordInitiator + label: passwordInitiator + schema: + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - 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: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - 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: [{path: "/", pathType: "Prefix"}] + 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: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name (Optional) + description: Defaults to chart name + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description (Optional) + description: Defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: icon + label: Icon (Optional) + description: Defaults to chart icon + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: widget + label: Widget Settings + schema: + type: dict + additional_attrs: true + show_if: [["enabled", "=", true]] + attrs: + - variable: enabled + label: Enable Widget + description: When disabled all widget annotations are skipped. + schema: + type: boolean + default: true + - variable: custom + label: Options + schema: + type: dict + additional_attrs: true + attrs: + - variable: key + label: API-key (key) + schema: + type: string + default: "" + - variable: customkv + label: Custom Options + schema: + type: list + default: [] + items: + - variable: option + label: Option + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + default: "" + required: true + - variable: value + label: Value + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + 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: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - 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: 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: overrideService + 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: [] + show_if: [["certificateIssuer", "=", ""]] + 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: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: namespace + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: homepage + label: Homepage + description: Connect ingress with Homepage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: name + label: Name + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: description + label: Description + description: defaults to chart description + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: group + label: Group + schema: + type: string + required: true + default: "default" + show_if: [["enabled", "=", true]] + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + + - 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 of the user running the application" + schema: + type: int + default: 0 + # Settings from questions.yaml get appended here on a per-app basis + - 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 + show_if: [["runAsUser", "=", 0]] + 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: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - 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 + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + + - variable: resources + group: Resources and Devices + label: "Resource Limits" + 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/manual/SCALE/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/manual/SCALE/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 + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + 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/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + 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: device + 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" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - 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: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - 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: 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: 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: ingress + label: "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: [{path: "/", pathType: "Prefix"}] + 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: integrations + label: Integrations + description: Connect ingress with other charts + schema: + additional_attrs: true + type: dict + attrs: + - variable: traefik + label: Traefik + description: Connect ingress with Traefik + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: true + - variable: allowCors + label: 'Allow Cross Origin Requests (advanced)' + schema: + type: boolean + default: false + show_if: [["enabled", "=", true]] + - variable: entrypoints + label: Entrypoints + schema: + type: list + default: ["websecure"] + show_if: [["enabled", "=", true]] + items: + - variable: entrypoint + label: Entrypoint + schema: + type: string + - variable: middlewares + label: Middlewares + schema: + type: list + default: [] + show_if: [["enabled", "=", true]] + items: + - variable: middleware + label: Middleware + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: name + schema: + type: string + default: "" + required: true + - variable: namespace + label: 'namespace (optional)' + schema: + type: string + default: "" + - variable: certManager + label: certManager + description: Connect ingress with certManager + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + - variable: certificateIssuer + label: certificateIssuer + description: defaults to chartname + schema: + type: string + default: "" + show_if: [["enabled", "=", true]] + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + 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: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - 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: 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: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + 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 + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + 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: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - 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: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + 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: string + show_if: [["type", "!=", "disabled"]] + 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 + max_length: 10240 + - 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/stable/pihole/13.0.1/templates/_configmap.tpl b/stable/pihole/13.0.1/templates/_configmap.tpl new file mode 100644 index 00000000000..e2d62dd488d --- /dev/null +++ b/stable/pihole/13.0.1/templates/_configmap.tpl @@ -0,0 +1,14 @@ +{{/* Define the configmap */}} +{{- define "pihole.configmap" -}} +configmap: + pihole-env: + enabled: true + data: + WEBPASSWORD: {{ .Values.pihole.webPassword | quote }} + {{- with .Values.pihole.dnsServers }} + {{- if gt (len .) 2 -}} + {{- fail (printf "Pihole - Expected max 2 DNS Servers. But got [%v]" (len .)) -}} + {{- end }} + PIHOLE_DNS_: {{ join ";" . | quote }} + {{- end }} +{{- end -}} diff --git a/stable/pihole/13.0.1/templates/common.yaml b/stable/pihole/13.0.1/templates/common.yaml new file mode 100644 index 00000000000..190109ab61f --- /dev/null +++ b/stable/pihole/13.0.1/templates/common.yaml @@ -0,0 +1,11 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render configmap for pihole */}} +{{- $config := include "pihole.configmap" . | fromYaml -}} +{{- if $config -}} + {{- $_ := mustMergeOverwrite .Values $config -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/stable/pihole/13.0.1/values.yaml b/stable/pihole/13.0.1/values.yaml new file mode 100644 index 00000000000..e69de29bb2d