From ae86c478119bf085767959bed6eabe4ff1f9c123 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Mon, 4 Dec 2023 15:34:48 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/orbital-sync/3.0.0/CHANGELOG.md | 99 + incubator/orbital-sync/3.0.0/Chart.yaml | 37 + incubator/orbital-sync/3.0.0/README.md | 27 + incubator/orbital-sync/3.0.0/app-changelog.md | 0 incubator/orbital-sync/3.0.0/app-readme.md | 8 + .../3.0.0/charts/common-15.3.1.tgz | Bin 0 -> 83855 bytes incubator/orbital-sync/3.0.0/ix_values.yaml | 66 + incubator/orbital-sync/3.0.0/questions.yaml | 2127 +++++++++++++++++ .../orbital-sync/3.0.0/templates/_secrets.tpl | 19 + .../orbital-sync/3.0.0/templates/common.yaml | 11 + incubator/orbital-sync/3.0.0/values.yaml | 0 11 files changed, 2394 insertions(+) create mode 100644 incubator/orbital-sync/3.0.0/CHANGELOG.md create mode 100644 incubator/orbital-sync/3.0.0/Chart.yaml create mode 100644 incubator/orbital-sync/3.0.0/README.md create mode 100644 incubator/orbital-sync/3.0.0/app-changelog.md create mode 100644 incubator/orbital-sync/3.0.0/app-readme.md create mode 100644 incubator/orbital-sync/3.0.0/charts/common-15.3.1.tgz create mode 100644 incubator/orbital-sync/3.0.0/ix_values.yaml create mode 100644 incubator/orbital-sync/3.0.0/questions.yaml create mode 100644 incubator/orbital-sync/3.0.0/templates/_secrets.tpl create mode 100644 incubator/orbital-sync/3.0.0/templates/common.yaml create mode 100644 incubator/orbital-sync/3.0.0/values.yaml diff --git a/incubator/orbital-sync/3.0.0/CHANGELOG.md b/incubator/orbital-sync/3.0.0/CHANGELOG.md new file mode 100644 index 00000000000..b5fca68d4cc --- /dev/null +++ b/incubator/orbital-sync/3.0.0/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + + +## [orbital-sync-2.0.10](https://github.com/truecharts/charts/compare/orbital-sync-2.0.9...orbital-sync-2.0.10) (2023-12-03) + +### Chore + +- bump everything to ensure catalog has latest versions + + + + +## [orbital-sync-2.0.9](https://github.com/truecharts/charts/compare/orbital-sync-3.0.0...orbital-sync-2.0.9) (2023-12-02) + +### Chore + +- fix annotations again + - update annotations + - cleanup chart.yaml and add min-max scale version + - Fix typo in categories and make them singular ([#13693](https://github.com/truecharts/charts/issues/13693)) + + ### Fix + +- ensure all questions.yaml can be rendered ([#15612](https://github.com/truecharts/charts/issues/15612)) + + + + + + + + + + + + + +## [orbital-sync-3.0.0](https://github.com/truecharts/charts/compare/orbital-sync-2.0.8...orbital-sync-3.0.0) (2023-07-31) + +### Fix + +- fix mistakes on questions.yaml + + + + +## [orbital-sync-2.0.8](https://github.com/truecharts/charts/compare/orbital-sync-2.0.7...orbital-sync-2.0.8) (2023-02-10) + +### Fix + +- ensure new helm deps repo is used in latest releases as well. + + + + +## [orbital-sync-2.0.7](https://github.com/truecharts/charts/compare/orbital-sync-2.0.6...orbital-sync-2.0.7) (2022-12-27) + +### Chore + +- update helm general non-major ([#5856](https://github.com/truecharts/charts/issues/5856)) + + + + +## [orbital-sync-2.0.6](https://github.com/truecharts/charts/compare/orbital-sync-2.0.5...orbital-sync-2.0.6) (2022-12-26) + +### Chore + +- update helm general non-major ([#5839](https://github.com/truecharts/charts/issues/5839)) + + + + +## [orbital-sync-2.0.5](https://github.com/truecharts/charts/compare/orbital-sync-2.0.4...orbital-sync-2.0.5) (2022-12-25) + +### Chore + +- update helm general non-major + + + + +## [orbital-sync-2.0.4](https://github.com/truecharts/charts/compare/orbital-sync-2.0.3...orbital-sync-2.0.4) (2022-12-19) + +### Chore + +- update helm general non-major + + + + +## [orbital-sync-2.0.3](https://github.com/truecharts/charts/compare/orbital-sync-2.0.2...orbital-sync-2.0.3) (2022-12-13) + +### Chore + diff --git a/incubator/orbital-sync/3.0.0/Chart.yaml b/incubator/orbital-sync/3.0.0/Chart.yaml new file mode 100644 index 00000000000..2ee41acead5 --- /dev/null +++ b/incubator/orbital-sync/3.0.0/Chart.yaml @@ -0,0 +1,37 @@ +kubeVersion: ">=1.24.0" +apiVersion: v2 +name: orbital-sync +version: 3.0.0 +appVersion: 1.5.2 +description: Orbital Sync synchronizes multiple Pi-hole instances for high availability. +home: https://truecharts.org/charts/incubator/orbital-sync +icon: https://truecharts.org/img/hotlink-ok/chart-icons/orbital-sync.png +deprecated: false +sources: + - https://github.com/mattwebbio/orbital-sync/pkgs/container/orbital-sync + - https://github.com/truecharts/charts/tree/master/charts/incubator/orbital-sync + - https://github.com/truecharts/containers/tree/master/mirrororbital-sync +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - Orbital Sync + - Pi-Hole + - DNS +dependencies: + - name: common + version: 15.3.1 + repository: https://library-charts.truecharts.org + condition: "" + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.1 + min_scale_version: 22.12.4 + truecharts.org/SCALE-support: "true" + truecharts.org/category: network + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: incubator diff --git a/incubator/orbital-sync/3.0.0/README.md b/incubator/orbital-sync/3.0.0/README.md new file mode 100644 index 00000000000..83229a60265 --- /dev/null +++ b/incubator/orbital-sync/3.0.0/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/incubator/) + +**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/incubator/orbital-sync/3.0.0/app-changelog.md b/incubator/orbital-sync/3.0.0/app-changelog.md new file mode 100644 index 00000000000..e69de29bb2d diff --git a/incubator/orbital-sync/3.0.0/app-readme.md b/incubator/orbital-sync/3.0.0/app-readme.md new file mode 100644 index 00000000000..d98742a05fe --- /dev/null +++ b/incubator/orbital-sync/3.0.0/app-readme.md @@ -0,0 +1,8 @@ +Orbital Sync synchronizes multiple Pi-hole instances for high availability. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/incubator/orbital-sync](https://truecharts.org/charts/incubator/orbital-sync) + +--- + +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/incubator/orbital-sync/3.0.0/charts/common-15.3.1.tgz b/incubator/orbital-sync/3.0.0/charts/common-15.3.1.tgz new file mode 100644 index 0000000000000000000000000000000000000000..f86383016c6dff36e8b4453907a8ecbfe86f0617 GIT binary patch literal 83855 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

-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 O0RR7LRYv^)t_lE1#;ThD literal 0 HcmV?d00001 diff --git a/incubator/orbital-sync/3.0.0/ix_values.yaml b/incubator/orbital-sync/3.0.0/ix_values.yaml new file mode 100644 index 00000000000..0e296d0f83d --- /dev/null +++ b/incubator/orbital-sync/3.0.0/ix_values.yaml @@ -0,0 +1,66 @@ +image: + repository: ghcr.io/mattwebbio/orbital-sync + pullPolicy: IfNotPresent + tag: 1.5.2@sha256:ade616e16ccb3442e9ad648128d9f97db9b3c34c2ef78764e650ff45d624c075 + +securityContext: + container: + readOnlyRootFilesystem: false + +workload: + main: + podSpec: + containers: + main: + env: + INTERVAL_MINUTES: 30 + SYNC_WHITELIST: true + SYNC_REGEX_WHITELIST: true + SYNC_BLACKLIST: true + SYNC_REGEXLIST: true + SYNC_ADLIST: true + SYNC_CLIENT: true + SYNC_GROUP: true + SYNC_AUDITLOG: false + SYNC_STATICDHCPLEASES: false + SYNC_LOCALDNSRECORDS: true + SYNC_LOCALCNAMERECORDS: true + SYNC_FLUSHTABLES: true + RUN_ONCE: false + VERBOSE: false + envFrom: + - secretRef: + name: "orbital-secrets" + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false + +service: + main: + enabled: false + ports: + main: + enabled: false + +orbital: + honeybadger_api_key: "" + primary_host_base_url: http://pihole.local + primary_host_password: password + secondary_hosts: + - host: http://pihole2.local + password: password + # - host: http://10.10.10.1:1234 + # password: "supersecretpass" + +persistence: + config: + enabled: true + mountPath: "/app" + +portal: + open: + enabled: false diff --git a/incubator/orbital-sync/3.0.0/questions.yaml b/incubator/orbital-sync/3.0.0/questions.yaml new file mode 100644 index 00000000000..a3fd02a6c9e --- /dev/null +++ b/incubator/orbital-sync/3.0.0/questions.yaml @@ -0,0 +1,2127 @@ +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: {} +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: env + label: Image Environment + schema: + additional_attrs: true + type: dict + attrs: + - variable: INTERVAL_MINUTES + label: Interval Minutes + description: How long to wait between synchronizations. Defaults to five minutes. Remember that the DNS server on your secondary servers restarts every time a sync is performed. + schema: + type: int + default: 30 + - variable: SYNC_WHITELIST + label: Sync Whitelist + description: Copies the whitelist + schema: + type: boolean + default: true + - variable: SYNC_REGEX_WHITELIST + label: Sync Regex Whitelist + description: Copies the regex whitelist + schema: + type: boolean + default: true + - variable: SYNC_BLACKLIST + label: Sync Blacklist + description: Copies the blacklist + schema: + type: boolean + default: true + - variable: SYNC_REGEXLIST + label: Sync Regex List + description: Copies the regex blacklist + schema: + type: boolean + default: true + - variable: SYNC_ADLIST + label: Sync Ad List + description: Copies the adlist + schema: + type: boolean + default: true + - variable: SYNC_CLIENT + label: Sync Client + description: Copies clients + schema: + type: boolean + default: true + - variable: SYNC_GROUP + label: Sync Group + description: Copies groups + schema: + type: boolean + default: true + - variable: SYNC_AUDITLOG + label: Sync Auditlog + description: Copies the audit log + schema: + type: boolean + default: false + - variable: SYNC_STATICDHCPLEASES + label: Sync Static DHCP Leases + description: Copies static dhcp leases + schema: + type: boolean + default: false + - variable: SYNC_LOCALDNSRECORDS + label: Sync Local DNS Records + description: Copies local DNS records + schema: + type: boolean + default: true + - variable: SYNC_LOCALCNAMERECORDS + label: Sync Local CNAME Records + description: Copies local CNAME records + schema: + type: boolean + default: true + - variable: SYNC_FLUSHTABLES + label: Sync Flush Tables + description: Clears existing data on the secondary (copy target) Pi-hole + schema: + type: boolean + default: true + - variable: RUN_ONCE + label: Run Once + description: By default, orbital-sync runs indefinitely until stopped. Setting RUN_ONCE to true forces it to exit immediately after the first sync. + schema: + type: boolean + default: false + - variable: VERBOSE + label: Verbose + description: Whether to output extra log output. Used for debugging. + schema: + type: boolean + default: false + - 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: 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: orbital + group: App Configuration + label: Orbital Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: primary_host_base_url + label: Primary Host Base URL + description: The base URL of your Pi-hole, including the scheme (HTTP or HTTPS) and port but not including a following slash. + schema: + type: string + required: true + default: "" + - variable: primary_host_password + label: Primary Host Password + description: The password used to log in to the admin interface. + schema: + type: string + private: true + required: true + default: "" + - variable: honeybadger_api_key + label: Honeybadger API Key + description: Get notifications to honeybadger.io when the process crashes for any reason by creating a new project and putting your API key here. + schema: + type: string + private: true + default: "" + - variable: secondary_hosts + label: Secondary Hosts + description: You can add as many secondary hosts as you want + schema: + type: list + default: [] + items: + - variable: hostEntry + label: "Secondary Host Entry" + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: Secondary Host Base URL + description: The base URL of your Pi-hole, including the scheme (HTTP or HTTPS) and port but not including a following slash. + schema: + type: string + required: true + default: "" + - variable: password + label: Secondary Host Password + description: The password used to log in to the admin interface. + schema: + type: string + required: true + private: true + default: "" + + - 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 + - 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: 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: 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: 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: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - 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: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + 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/incubator/orbital-sync/3.0.0/templates/_secrets.tpl b/incubator/orbital-sync/3.0.0/templates/_secrets.tpl new file mode 100644 index 00000000000..3ce19cefcc3 --- /dev/null +++ b/incubator/orbital-sync/3.0.0/templates/_secrets.tpl @@ -0,0 +1,19 @@ +{{/* Define the secrets */}} +{{- define "orbital.secrets" -}} +{{- $secretName := (printf "%s-orbital-secrets" (include "tc.v1.common.lib.chart.names.fullname" $)) }} +{{- $orbitalprevious := lookup "v1" "Secret" .Release.Namespace $secretName }} +enabled: true +data: + PRIMARY_HOST_BASE_URL: {{ .Values.orbital.primary_host_base_url | b64enc }} + PRIMARY_HOST_PASSWORD: {{ .Values.orbital.primary_host_password | b64enc }} + {{- with .Values.orbital.honeybadger_api_key }} + HONEYBADGER_API_KEY: {{ . | b64enc }} + {{- end }} + +{{ $idx := 1 }} +{{- range .Values.orbital.secondary_hosts }} + SECONDARY_HOST_{{$idx}}_BASE_URL: {{ .host | b64enc }} + SECONDARY_HOST_{{$idx}}_PASSWORD: {{ .password | b64enc }} + {{ $idx = add1 $idx }} +{{- end }} +{{- end -}} diff --git a/incubator/orbital-sync/3.0.0/templates/common.yaml b/incubator/orbital-sync/3.0.0/templates/common.yaml new file mode 100644 index 00000000000..0851d0a328b --- /dev/null +++ b/incubator/orbital-sync/3.0.0/templates/common.yaml @@ -0,0 +1,11 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{/* Render secrets for orbital-sync */}} +{{- $secrets := include "orbital.secrets" . | fromYaml -}} +{{- if $secrets -}} + {{- $_ := set .Values.secret "orbital-secrets" $secrets -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/incubator/orbital-sync/3.0.0/values.yaml b/incubator/orbital-sync/3.0.0/values.yaml new file mode 100644 index 00000000000..e69de29bb2d