From 52ee85ca42c26012162710b46053b68757d37b42 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Sun, 28 Apr 2024 02:58:01 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- incubator/dockovpn/0.0.2/.helmignore | 30 + incubator/dockovpn/0.0.2/CHANGELOG.md | 3 + incubator/dockovpn/0.0.2/Chart.yaml | 37 + incubator/dockovpn/0.0.2/README.md | 56 + incubator/dockovpn/0.0.2/app-changelog.md | 11 + incubator/dockovpn/0.0.2/app-readme.md | 8 + .../dockovpn/0.0.2/charts/common-20.3.11.tgz | Bin 0 -> 99404 bytes incubator/dockovpn/0.0.2/icon-small.webp | Bin 0 -> 256 bytes incubator/dockovpn/0.0.2/icon.webp | Bin 0 -> 1508 bytes incubator/dockovpn/0.0.2/ix_values.yaml | 51 + incubator/dockovpn/0.0.2/questions.yaml | 2962 +++++++++++++++++ incubator/dockovpn/0.0.2/templates/NOTES.txt | 1 + .../dockovpn/0.0.2/templates/common.yaml | 1 + incubator/dockovpn/0.0.2/values.yaml | 0 14 files changed, 3160 insertions(+) create mode 100644 incubator/dockovpn/0.0.2/.helmignore create mode 100644 incubator/dockovpn/0.0.2/CHANGELOG.md create mode 100644 incubator/dockovpn/0.0.2/Chart.yaml create mode 100644 incubator/dockovpn/0.0.2/README.md create mode 100644 incubator/dockovpn/0.0.2/app-changelog.md create mode 100644 incubator/dockovpn/0.0.2/app-readme.md create mode 100644 incubator/dockovpn/0.0.2/charts/common-20.3.11.tgz create mode 100644 incubator/dockovpn/0.0.2/icon-small.webp create mode 100644 incubator/dockovpn/0.0.2/icon.webp create mode 100644 incubator/dockovpn/0.0.2/ix_values.yaml create mode 100755 incubator/dockovpn/0.0.2/questions.yaml create mode 100644 incubator/dockovpn/0.0.2/templates/NOTES.txt create mode 100644 incubator/dockovpn/0.0.2/templates/common.yaml create mode 100644 incubator/dockovpn/0.0.2/values.yaml diff --git a/incubator/dockovpn/0.0.2/.helmignore b/incubator/dockovpn/0.0.2/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/incubator/dockovpn/0.0.2/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/incubator/dockovpn/0.0.2/CHANGELOG.md b/incubator/dockovpn/0.0.2/CHANGELOG.md new file mode 100644 index 00000000000..941abb8a218 --- /dev/null +++ b/incubator/dockovpn/0.0.2/CHANGELOG.md @@ -0,0 +1,3 @@ +*for the complete changelog, please refer to the website* + +**Important:** \ No newline at end of file diff --git a/incubator/dockovpn/0.0.2/Chart.yaml b/incubator/dockovpn/0.0.2/Chart.yaml new file mode 100644 index 00000000000..d3a2c5b1bc3 --- /dev/null +++ b/incubator/dockovpn/0.0.2/Chart.yaml @@ -0,0 +1,37 @@ +annotations: + max_scale_version: 24.04.0 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: networking + truecharts.org/max_helm_version: "3.14" + truecharts.org/min_helm_version: "3.11" + truecharts.org/train: incubator +apiVersion: v2 +appVersion: 1.14.0 +dependencies: + - name: common + version: 20.3.11 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] +deprecated: false +description: DNS and Ad-filtering for your network +home: https://truecharts.org/charts/incubator/dockovpn +icon: https://truecharts.org/img/hotlink-ok/chart-icons/dockovpn.webp +keywords: + - vpn + - openvpn +kubeVersion: ">=1.24.0-0" +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +name: dockovpn +sources: + - https://github.com/dockovpn/dockovpn + - https://github.com/truecharts/charts/tree/master/charts/incubator/dockovpn + - https://hub.docker.com/r/alekslitvinenk/openvpn +type: application +version: 0.0.2 diff --git a/incubator/dockovpn/0.0.2/README.md b/incubator/dockovpn/0.0.2/README.md new file mode 100644 index 00000000000..e06f3fe9faf --- /dev/null +++ b/incubator/dockovpn/0.0.2/README.md @@ -0,0 +1,56 @@ +--- +title: README +--- + +## General Info + +TrueCharts can be installed as both _normal_ Helm Charts or as TrueNAS SCALE Apps. +Both solutions are fully supported, but we heavily advice the use of normal Helm Charts where possible + +For more information about this Chart, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/dockovpn) + +**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)** + +## Installation + +### Helm-Chart installation + +To install TrueCharts Helm charts using Helm, you can use our OCI Repository. + +`helm install mychart oci://tccr.io/truecharts/CHARTNAME` + +For more information on how to install TrueCharts Helm charts, checkout the instructions on the website: https://truecharts.org/helm/ + + +### TrueNAS SCALE Apps + +For more information on how to use TrueCharts as TrueNAS SCALE Apps, please checkout the [quick-start guides for TrueNAS SCALE](https://truecharts.org/scale/guides/scale-intro). + +## Configuration Options + +To view the chart specific options, please view Values.yaml included in the chart. + +All our Charts use a shared "common" library chart that contains most of the templating and options. +For the complete overview of all available options, please checkout the documentation for them on the website: https://truecharts.org/common/ + +## Chart Specific Guides and information + +All our charts have dedicated documentation pages. +The documentation for this chart can be found here: +https://truecharts.org/charts/incubator/dockovpn + +## Support + + +- 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/general/sponsor) or contributing back to the project any way you can! + +_All Rights Reserved - The TrueCharts Project_ diff --git a/incubator/dockovpn/0.0.2/app-changelog.md b/incubator/dockovpn/0.0.2/app-changelog.md new file mode 100644 index 00000000000..be226babff9 --- /dev/null +++ b/incubator/dockovpn/0.0.2/app-changelog.md @@ -0,0 +1,11 @@ + + +## [dockovpn-0.0.2]dockovpn-0.0.2 (2024-04-28) + +### Feat + + + +- set port type with env ([#21436](https://github.com/truecharts/charts/issues/21436)) + +- add dockovpn ([#21435](https://github.com/truecharts/charts/issues/21435)) \ No newline at end of file diff --git a/incubator/dockovpn/0.0.2/app-readme.md b/incubator/dockovpn/0.0.2/app-readme.md new file mode 100644 index 00000000000..a43ff340393 --- /dev/null +++ b/incubator/dockovpn/0.0.2/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/incubator/dockovpn](https://truecharts.org/charts/incubator/dockovpn) + +--- + +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/dockovpn/0.0.2/charts/common-20.3.11.tgz b/incubator/dockovpn/0.0.2/charts/common-20.3.11.tgz new file mode 100644 index 0000000000000000000000000000000000000000..010f5b5a245d342f6f0d2e0ef95338a45ead19b1 GIT binary patch literal 99404 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%0AZSzDiWTe))Y`J0OOCXlO`z1O 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 P00960fC|;b09p(Hd4E&t literal 0 HcmV?d00001 diff --git a/incubator/dockovpn/0.0.2/icon-small.webp b/incubator/dockovpn/0.0.2/icon-small.webp new file mode 100644 index 0000000000000000000000000000000000000000..3dc186819ca5adef977eedd90afdbe066e3abe55 GIT binary patch literal 256 zcmV+b0ssC|Nk&Ha00012MM6+kP&gp$000261OS}@Dj)zL00ICsC7b|{0Nx-*f#%K1 z{tf&kCw8INnFvhCj^in*Xjoj=@Bse)dR8G_XdSt_7NV(G58veN=O$+5{zLdJ&Z_dgepq4Eb*7Z{pt*bzc9WkE>Juy2k$mdRz43?xck8%oXCn z+%2n_q%2t?o~PZtbdG)DWX~;R1{FNSSI^LJ<^^)(#@uupj_PV~9#4@mF_Vq%6z_Ms GC;$MfCVR#J literal 0 HcmV?d00001 diff --git a/incubator/dockovpn/0.0.2/icon.webp b/incubator/dockovpn/0.0.2/icon.webp new file mode 100644 index 0000000000000000000000000000000000000000..01d4ab4529157ee7cff0b7ed8f9020c284c6a51d GIT binary patch literal 1508 zcmVfvH@%8uOe6*bTrN$@J^KQvR3O&-iYNuS!a?!~bAEJ>?&Hya2sB{*!w20DWNp zZQyDAucBWuUWQ-myo~%UXaW4g{0FM1_8!Yi14_%#LQqnt%fB(6+_p7|@(X%(H7?Fk{ZW8@Yy=*=+itgkSs9QHfpRLw__%)3J55!(*H z;}15~hq~=u3svKqk~OQ0+MCi$P>7)a&;@83+}{r5j)@8SBd=QoS75mElbpSEo<}2? zJ6N57Tvg{BjT+1|#wC-HefReWF1ZW>_7lJk9l}}tF=YBYiJhQBk64Oq=eRd(Jp(_5 z;&XS+B^i6~tkf~7-M#VoLMZkT(Xd%7nB`-k*EQhZc7WE7SOJ4ZA0+rBw3w_Pg9yhH z80q#G&V~DM>?#8Ua z)Y9KtQ40(J6oOV+y|(wvB%jNxW5 z^M157!n6Zt**Q?|#CVXctEh@8*f$LIBQRKY90g7d@bBTg+L4vETSbxG z1m%B7L!Cq{H@;8e1LAdBJ`(2j$N<|zJ3BpEvH;CiwrMw0$7HV}83Z0}`9MX@65SJZ zLuIQIh)w(grDQ!n&Ar@;EMCn~iSO-c>!ai;&gMcAsw7IV;@nL@T3YZ~+Aflm zBhC!tWCt}eU=9I^dZ^QrDNE~95L{iOeUaK|5LEfzJgV#`t0b-l*J-BS_7uGUS5>?R zgQ_HUtUOEV{vwUcbMcr4kfdL#9vJ~|7+m+oohU>L%PiAsgy*HWq#fgv@?p7fKR@Ba zbd^TxAL857X@XokwsYy?lw0bFiEM`(+>6H%dKt$JR*bg2x{opV+T-DQdIVq(D4l72 zLfOeCrC%n8$9Z0dm+B(r8=|H<`>0z-tkmwd-(V5fa&T2C`>9XOtu9i2&iRCy(=F&~ z#j|Ir4iV&i32CB%gTc?l{o$!`f}P^K#6#P#nrRa(@;{Q#IxMM-G(bMo&9m+Fl<*}Wu1 z#R(^EzmKYAu1Q#PF||v)mtI3S@yc-4JTzk;?p2cyw>3_F*YBFmQ2ZABmJS^k`t7Jl zNEo44@vK#{Hh8tZ9&@ktHMMk=cM2?1$O}+&qvh5{kpaoRPYen<79Uun6c?$L{CSD+ z&@F|ZF34@h4dY)X?McU6J^%i@KbyueXve5rYW*K~iVCB*A~coJcqF^Dsgi0Dm};&X zzNGu70bR#+=7)DupSSk4%&*&J{EOJay@YuH2hu_@V_$wfUpoqVf8B2UpTf6>F4UF= z`lYpx=wlGMw>>#T*A&7k#FU;~*S6)MPw~YtNVBN}!G_EgQd2+~U-`QJE&#YOyhE?R z>;~fxi_yF4ee=g$;{TstCW)Be4qwud4fRyZ|57A~$L9P71`-$5A1U~>di~V1b#&CF KHs$yL0000(-2XWM literal 0 HcmV?d00001 diff --git a/incubator/dockovpn/0.0.2/ix_values.yaml b/incubator/dockovpn/0.0.2/ix_values.yaml new file mode 100644 index 00000000000..9b6b14e3257 --- /dev/null +++ b/incubator/dockovpn/0.0.2/ix_values.yaml @@ -0,0 +1,51 @@ +image: + repository: alekslitvinenk/openvpn + pullPolicy: IfNotPresent + tag: v1.14.0@sha256:8f3424e3de810169fcd5c770ad723112f5671fcbeb635215612379f7941fc0fe +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + allowPrivilegeEscalation: true + runAsUser: 0 + runAsGroup: 0 + capabilities: + add: + - NET_ADMIN +workload: + main: + podSpec: + containers: + main: + env: + HOST_ADDR: "vpn.example.com" + HOST_CONF_PORT: "{{ .Values.service.main.ports.main.port }}" + # Being implemented currently only UDP supported. + HOST_TUN_PROTOCOL: "udp" + HOST_TUN_PORT: "{{ .Values.service.vpn.ports.vpn.port }}" + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +service: + main: + ports: + main: + port: 8080 + vpn: + enabled: true + ports: + vpn: + enabled: true + protocol: "{{ .Values.workload.main.podSpec.containers.main.env.HOST_TUN_PROTOCOL }}" + port: 1194 +persistence: + config: + enabled: true + mountPath: "/opt/Dockovpn_data" +portal: + open: + enabled: true diff --git a/incubator/dockovpn/0.0.2/questions.yaml b/incubator/dockovpn/0.0.2/questions.yaml new file mode 100755 index 00000000000..d97f0294397 --- /dev/null +++ b/incubator/dockovpn/0.0.2/questions.yaml @@ -0,0 +1,2962 @@ +groups: + - name: Image + description: | + Configured the images to be used for the Chart. + It's wise to use "digest pinned" tags and to avoid using "latest". + + Checkout the following documentation for more information: + - https://truecharts.org/common/#images + + + - name: General + description: | + For TrueNAS SCALE We've grouped a number of settings here, that all effact how apps run in general. + + Checkout the following documentation for more information: + - https://truecharts.org/common/global/ + - https://truecharts.org/common/#tz + - https://truecharts.org/common/podoptions/ + - Image Pull Secrets + + + - name: Workload + description: | + These settings configure how the actual Pods and containers are running. + Generally, on SCALE, we only expose a limited subset of these settings for the primary workload and container. + + Checkout the following documentation for more information: + - https://truecharts.org/common/workload/ + - https://truecharts.org/common/container/ + + + - name: App Configuration + description: | + Every application has different values that may be required to run or have multiple options that the user may choose to enable or disable to change the behavior of the application. + Most options should have a Tooltip (Circled Question Mark) to further describe said option. + + To find more information, lookup your chart-specific documentation in the Charts List: https://truecharts.org/charts/description-list/ + + - name: Services + description: | + Service and Networking options for any applications are contained here. + Some applications may have complicated networking setups with multiple options or some may have no options here at all. + + Options here include the service and port configurations for the application, and more may be enabled or changed under the Advanced Settings and Show Expert Config boxes. + + Checkout the following documentation for more information: + - https://truecharts.org/common/service/ + + - name: Networking + description: | + Contains advanced networking options that are not actively supported by the TrueCharts team. + Currently only contains scaleExternalInterfaces. + + Checkout the following documentation for more information: + - https://truecharts.org/common/scaleexternalinterface/ + + - name: Persistence + description: | + Many applications will have certain options for storage to be configurable by the user, the main two being PVC and hostpath but may include other types. + This storage is called Persistence since it is not deleted upon restart or upgrade of an application. + + Checkout the following documentation for more information: + - https://truecharts.org/common/persistence/ + - https://truecharts.org/scale/guides/nfs-share/ + - https://truecharts.org/general/faq/#why-pvc-is-recommended-over-hostpath + + + - name: Ingress + description: | + Ingress (more commonly known as Reverse Proxy) settings can be configured here. This is how Kubernetes connects your Applications in containers to FQDNs (fully qualified domain names). + If you choose to enable this you must have a "Ingress Provider" aka "Reverse Proxy" installed (We highly advice Traefik: https://truecharts.org/charts/premium/traefik/) + It also requiresa DNS service to actually resolve the DNS name of the FQDN specified. + + Checkout the following documentation for more information: + - https://truecharts.org/common/ingress/ + + + - name: SecurityContext + description: | + The security settings for each application and/or permissions that each application may have for the files/directories created. + Each application will come with predefined permissions but users may want to change certain setting depending on their usage or capabilities. + + Unless necessary users are advised to keep this section mostly to defaults. + + Checkout the following documentation for more information: + - https://truecharts.org/common/securitycontext/ + + + - name: Resources + description: | + Resources limits that have been defined by each application are in this section. + Most will have a specific default that some users may want to change based on their specific hardware or needs. + + This also contains the options to mount GPUs or, more precisely, "request" GPU's to be mounted. + + Checkout the following documentation for more information: + - https://truecharts.org/common/resources/ + + - name: Devices + description: | + These are special "mountpoints" that can be used to mount miscelanious USB and PCI devices using special hostPath mounts. + For clearity we've decided to seperate this from persistence on SCALE. + + Checkout the following documentation for more information: + - https://truecharts.org/common/persistence/device/ + - https://truecharts.org/scale/guides/pci-passthrough/ + + - name: Middlewares + description: Traefik Middlewares + + - name: StorageClass + description: | + StorageClasses define where to storage Storage. + + Checkout the following documentation for more information: + + - name: Metrics + description: | + Contains options to configure Prometheus metrics for the application. + + Checkout the following documentation for more information: + - https://truecharts.org/common/metrics/ + + + - name: Addons + description: | + Addons that are supplied by the TrueCharts team to add additional capabilities for users to use on top of the application’s defaults. + Things included here are VPN addons, Codeserver for editing files inside the application’s container, Netshoot for network troubelshooting, etc. + + Generally not required for use but may be necessary or usefull at times for specific applications. + + Checkout the following documentation for more information: + - https://truecharts.org/common/addons/ + - https://truecharts.org/scale/guides/vpn-setup/ + + + - name: Experimental + description: | + Experimental Configuration Options + Often these are not fully flushed-out, could randomly break or might not work at-all. + + - name: Postgresql + description: | + For Postgresql we use "CloudNative-PG" as a backend, which has to be installed first. + + Checkout the following documentation for more information: + - https://truecharts.org/common/cnpg/ + - https://truecharts.org/scale/guides/sql-export/ + - https://truecharts.org/scale/guides/recover-cnpg/ + + - name: Dependencies + description: | + contains dependency setting for which we, currently, do not have seperate catagories (yet) + + + - name: Documentation + description: | + We added this section to make everyone aware that OpenSource isn't always easy. + It doesn't keep existing without signficant ongoing support, so please consider supporting TrueCharts and other OpenSource projects. + + Before installing, be sure you've followed the https://truecharts.org/scale/guides/getting-started/ + We would also advice going over our https://truecharts.org/scale/guides/scale-intro/ + and many of the other documentation pages... + +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" + +questions: + - variable: global + group: General + 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" + 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 + group: "App Configuration" + label: "Image Environment" + schema: + additional_attrs: true + type: dict + attrs: + - variable: HOST_ADDR + label: "Host Address" + description: "Sets address OpenVPN server is located at." + schema: + type: string + required: true + default: "vpn.example.com" + - variable: HOST_TUN_PROTOCOL + label: "Tunnel Protocol" + description: "Sets tunnel protocol." + schema: + type: string + default: udp + enum: + - value: "udp" + description: UDP + - value: "tcp" + description: TCP + - 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" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + - variable: podOptions + group: "General" + 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" + label: "Image Pull Secrets" + schema: + type: list + default: [] + items: + - variable: pullsecretentry + label: "Pull Secret" + schema: + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: true + - variable: data + label: Data + 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 + private: true + default: "" + - variable: email + label: "Email" + schema: + type: string + required: true + default: "" + + - variable: service + group: 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: "Config Download 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: 8080 + required: true + - variable: vpn + label: "OpenVPN Internal" + description: "OpenVPN Internal Port" + 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: vpn + label: "OpenVPN Interal Port" + description: "OpenVPN Interal Port." + 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: 1194 + required: true + + + - variable: serviceList + label: Add Manual Custom Services + group: 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: 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: persistenceList + label: Additional App Storage + group: 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: 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: 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: SecurityContext + 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 group 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 + 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: 'gpu.intel.com/i915' + label: Add Intel i915 GPUs + schema: + type: int + default: 0 + - variable: 'nvidia.com/gpu' + label: Add NVIDIA GPUs (Experimental) + schema: + type: int + default: 0 + - variable: 'amd.com/gpu' + label: Add AMD GPUs + schema: + type: int + default: 0 + - 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: 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: horizontalPodAutoscaler +# group: Experimental +# 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: Experimental + 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/incubator/dockovpn/0.0.2/templates/NOTES.txt b/incubator/dockovpn/0.0.2/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/incubator/dockovpn/0.0.2/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/incubator/dockovpn/0.0.2/templates/common.yaml b/incubator/dockovpn/0.0.2/templates/common.yaml new file mode 100644 index 00000000000..b51394e00a4 --- /dev/null +++ b/incubator/dockovpn/0.0.2/templates/common.yaml @@ -0,0 +1 @@ +{{ include "tc.v1.common.loader.all" . }} diff --git a/incubator/dockovpn/0.0.2/values.yaml b/incubator/dockovpn/0.0.2/values.yaml new file mode 100644 index 00000000000..e69de29bb2d