diff --git a/scale-catalog-template/.github/workflows/PR_testing.yaml b/scale-catalog-template/.github/workflows/PR_testing.yaml new file mode 100644 index 00000000..001e3c06 --- /dev/null +++ b/scale-catalog-template/.github/workflows/PR_testing.yaml @@ -0,0 +1,36 @@ +name: "Apps: Test PR" + +on: [pull_request] + +jobs: + test-apps: + runs-on: ubuntu-latest + container: + image: ixsystems/catalog_validation:latest + + steps: + - name: Install Helm + run: /bin/bash -c "curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash" + + - name: Checkout + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Fetch base branch history + run: git fetch origin master:master + + - name: Setup catalog validation + run: | + sudo apt update > /dev/null 2>&1 + sudo apt install -y python3-all-dev python3-pip python3-setuptools > /dev/null 2>&1 + git clone https://github.com/truenas/catalog_validation + sudo pip3 install --disable-pip-version-check --exists-action w -r catalog_validation/requirements.txt > /dev/null 2>&1 + sudo pip3 install -U catalog_validation/. + + - name: Validate catalog format + run: | + /bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD" + + - name: Validate changed charts + run: /bin/bash -c "PWD=${pwd}; sudo /usr/local/bin/charts_validate deploy --path $PWD" \ No newline at end of file diff --git a/scale-catalog-template/.github/workflows/Push_testing.yaml b/scale-catalog-template/.github/workflows/Push_testing.yaml new file mode 100644 index 00000000..47d58ac7 --- /dev/null +++ b/scale-catalog-template/.github/workflows/Push_testing.yaml @@ -0,0 +1,17 @@ +name: "Apps: Test Push" + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + container: + image: ixsystems/catalog_validation:latest + + steps: + - uses: actions/checkout@v1 + name: Checkout + + - name: Validate catalog format + run: | + /bin/bash -c "PWD=${pwd}; /usr/local/bin/catalog_validate validate --path $PWD" \ No newline at end of file diff --git a/scale-catalog-template/.gitignore b/scale-catalog-template/.gitignore new file mode 100644 index 00000000..cf607c2b --- /dev/null +++ b/scale-catalog-template/.gitignore @@ -0,0 +1,47 @@ +*.pyc +*.swp +*.mo +*.o +*.iso +__pycache__ +*.xml +*.pyc +.cache +.pytest_cache +config.py +auto_config.py +.DS_Store +.idea/ +.vscode/ +# IDE resources +.vscode +.idea +.devcontainer/ +Gemfile.lock +.ignore/ +/docs/api/_build/ +/docs/userguide/_build/ +/gui/local_settings.py +gui/static/ +/FreeBSD/ +/filtered-patches/ +/os-base/ +/pbi/ +/sbin/ +src/middlewared/build/ +src/middlewared/dist/ +src/middlewared/middlewared.egg-info/ +.git-repo-setting +nas_source/ +webui/node_modules/ +webui/dll/ +webui/dist/ +npm-debug.log +tests/artifacts/ +tests/test-report.txt +tests/test-report.xml +private_values.yaml +temp/ +library/common-test/charts/ +.cr-release-packages/ +library/common-test/chart.lock diff --git a/scale-catalog-template/.helmdocsignore b/scale-catalog-template/.helmdocsignore new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/LICENSE b/scale-catalog-template/LICENSE new file mode 100644 index 00000000..178aba7d --- /dev/null +++ b/scale-catalog-template/LICENSE @@ -0,0 +1,25 @@ +BSD 2-Clause License + +Copyright (c) 2021, TrueCharts +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/scale-catalog-template/charts/syncthing/3.1.5/CONFIG.md b/scale-catalog-template/charts/syncthing/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/charts/syncthing/3.1.5/Chart.lock b/scale-catalog-template/charts/syncthing/3.1.5/Chart.lock new file mode 100644 index 00000000..21034bcf --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:42.632316521Z" diff --git a/scale-catalog-template/charts/syncthing/3.1.5/Chart.yaml b/scale-catalog-template/charts/syncthing/3.1.5/Chart.yaml new file mode 100644 index 00000000..f6f7c3bf --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: syncthing +version: 3.1.5 +# upstream_version: +appVersion: "auto" +description: P2P file synchronization application +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/stable/syncthing +icon: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png +keywords: + - syncthing +sources: + - https://syncthing.net/ + - https://github.com/syncthing/syncthing + - https://hub.docker.com/r/syncthing/syncthing +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: luuknieuwdorp + email: luuk@nieuwdorp.me + url: nieuwdorp.me +# annotations: diff --git a/scale-catalog-template/charts/syncthing/3.1.5/README.md b/scale-catalog-template/charts/syncthing/3.1.5/README.md new file mode 100644 index 00000000..fdc91d9c --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +P2P file synchronization application + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `syncthing` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `syncthing` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/charts/syncthing/3.1.5/app-readme.md b/scale-catalog-template/charts/syncthing/3.1.5/app-readme.md new file mode 100644 index 00000000..7eaa0780 --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +P2P file synchronization application +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +P2P file synchronization application diff --git a/scale-catalog-template/charts/syncthing/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/charts/syncthing/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/charts/syncthing/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/charts/syncthing/3.1.5/ix_values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/ix_values.yaml new file mode 100644 index 00000000..2c38d653 --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: syncthing/syncthing + pullPolicy: IfNotPresent + tag: 1.16 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/charts/syncthing/3.1.5/questions.yaml b/scale-catalog-template/charts/syncthing/3.1.5/questions.yaml new file mode 100644 index 00000000..9110b80d --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/questions.yaml @@ -0,0 +1,418 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "Container port" + schema: + type: int + default: 8384 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8384 + editable: false + hidden: true + # - variable: nodePort + # label: "Host nodePort to expose to (optional)" + # description: "Only gets used when nodePort is selected" + # schema: + # type: int + # min: 9000 + # max: 65535 + # default: 36024 + # required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/var/syncthing" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/charts/syncthing/3.1.5/templates/common.yaml b/scale-catalog-template/charts/syncthing/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/charts/syncthing/3.1.5/test_values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/test_values.yaml new file mode 100644 index 00000000..b0677868 --- /dev/null +++ b/scale-catalog-template/charts/syncthing/3.1.5/test_values.yaml @@ -0,0 +1,23 @@ +# Default values for Syncthing. + +image: + repository: syncthing/syncthing + pullPolicy: IfNotPresent + tag: 1.16 + +strategy: + type: Recreate + +services: + main: + port: + port: 8384 + +persistence: + config: + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + mountPath: "/var/syncthing/" diff --git a/scale-catalog-template/charts/syncthing/3.1.5/values.yaml b/scale-catalog-template/charts/syncthing/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/charts/syncthing/item.yaml b/scale-catalog-template/charts/syncthing/item.yaml new file mode 100644 index 00000000..62634b42 --- /dev/null +++ b/scale-catalog-template/charts/syncthing/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/syncthing/syncthing/main/assets/logo-128.png diff --git a/scale-catalog-template/docs/README.md b/scale-catalog-template/docs/README.md new file mode 100644 index 00000000..cbc3147c --- /dev/null +++ b/scale-catalog-template/docs/README.md @@ -0,0 +1,13 @@ +# catalog_template +Use this to start your own Basic TrueNAS SCALE Catalog + +It contains: + +- Base folder structure +- Basic required files +- 3 example Trains (charts, stable and test) +- 1 example app in each train (each based on TrueCharts) +- 1 library train (which is not processed by CI +- 1 example library (common) +- Basic CI to test PR's and catalog-health +- docs folder (ignored by testing) with readme.md file diff --git a/scale-catalog-template/features_capability.json b/scale-catalog-template/features_capability.json new file mode 100644 index 00000000..14b386c7 --- /dev/null +++ b/scale-catalog-template/features_capability.json @@ -0,0 +1,42 @@ +{ + "normalize/interfaceConfiguration": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "normalize/ixVolume": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/interface": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/gpuConfiguration": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.10-MASTER-somever"} + }, + "definitions/timezone": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.12-MASTER"} + }, + "definitions/nodeIP": { + "stable": {"min": "20.12-ALPHA"}, + "nightlies": {"min": "20.12-MASTER"} + }, + "definitions/certificate": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.02-MASTER"} + }, + "definitions/certificateAuthority": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.02-MASTER"} + }, + "validations/containerImage": { + "stable": {"min": "21.06-BETA"}, + "nightlies": {"min": "21.04-MASTER"} + }, + "validations/nodePort": { + "stable": {"min": "21.04-ALPHA"}, + "nightlies": {"min": "21.04-MASTER"} + } +} diff --git a/scale-catalog-template/library/common/.helmignore b/scale-catalog-template/library/common/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/scale-catalog-template/library/common/.helmignore @@ -0,0 +1,23 @@ +# 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 +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/scale-catalog-template/library/common/Chart.yaml b/scale-catalog-template/library/common/Chart.yaml new file mode 100644 index 00000000..67d13c13 --- /dev/null +++ b/scale-catalog-template/library/common/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: common +version: 3.5.5 +# upstream_version: +appVersion: none +description: Function library for TrueCharts +type: library +deprecated: false +home: https://github.com/truecharts/apps/tree/master/common +icon: https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png +keywords: + - truecharts + - library-chart + - common +sources: + - https://github.com/truecharts/apps/tree/master/library/common +# dependencies: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/library/common/README.md b/scale-catalog-template/library/common/README.md new file mode 100644 index 00000000..7b8dbf3c --- /dev/null +++ b/scale-catalog-template/library/common/README.md @@ -0,0 +1,151 @@ +# common + +![Version: 1.3.0](https://img.shields.io/badge/Version-1.3.0-informational?style=flat-square) ![Type: library](https://img.shields.io/badge/Type-library-informational?style=flat-square) + +Function library for TrueCharts + +**Homepage:** + +## Maintainers + +| Name | Email | Url | +| ---- | ------ | --- | +| truecharts | | | + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Values + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| PGID | int | `568` | | +| PUID | int | `568` | | +| UMASK | string | `"002"` | | +| additionalContainers | list | `[]` | | +| additionalVolumeMounts | list | `[]` | | +| additionalVolumes | list | `[]` | | +| addons.codeserver.args[0] | string | `"--auth"` | | +| addons.codeserver.args[1] | string | `"none"` | | +| addons.codeserver.enabled | bool | `false` | | +| addons.codeserver.env | object | `{}` | | +| addons.codeserver.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.codeserver.image.repository | string | `"codercom/code-server"` | | +| addons.codeserver.image.tag | string | `"3.7.4"` | | +| addons.codeserver.ingress.annotations | object | `{}` | | +| addons.codeserver.ingress.enabled | bool | `false` | | +| addons.codeserver.ingress.hosts[0].host | string | `"code.chart-example.local"` | | +| addons.codeserver.ingress.hosts[0].paths[0].path | string | `"/"` | | +| addons.codeserver.ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| addons.codeserver.ingress.labels | object | `{}` | | +| addons.codeserver.ingress.nameSuffix | string | `"codeserver"` | | +| addons.codeserver.ingress.tls | list | `[]` | | +| addons.codeserver.securityContext.runAsUser | int | `0` | | +| addons.codeserver.service.annotations | object | `{}` | | +| addons.codeserver.service.enabled | bool | `true` | | +| addons.codeserver.service.labels | object | `{}` | | +| addons.codeserver.service.port.name | string | `"codeserver"` | | +| addons.codeserver.service.port.port | int | `12321` | | +| addons.codeserver.service.port.protocol | string | `"TCP"` | | +| addons.codeserver.service.port.targetPort | string | `"codeserver"` | | +| addons.codeserver.service.type | string | `"ClusterIP"` | | +| addons.codeserver.volumeMounts | list | `[]` | | +| addons.codeserver.workingDir | string | `""` | | +| addons.vpn.additionalVolumeMounts | list | `[]` | | +| addons.vpn.configFile | string | `nil` | | +| addons.vpn.enabled | bool | `false` | | +| addons.vpn.env | object | `{}` | | +| addons.vpn.livenessProbe | object | `{}` | | +| addons.vpn.networkPolicy.egress | string | `nil` | | +| addons.vpn.networkPolicy.enabled | bool | `false` | | +| addons.vpn.openvpn.auth | string | `nil` | | +| addons.vpn.openvpn.authSecret | string | `nil` | | +| addons.vpn.openvpn.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.vpn.openvpn.image.repository | string | `"dperson/openvpn-client"` | | +| addons.vpn.openvpn.image.tag | string | `"latest"` | | +| addons.vpn.scripts.down | string | `nil` | | +| addons.vpn.scripts.up | string | `nil` | | +| addons.vpn.securityContext.capabilities.add[0] | string | `"NET_ADMIN"` | | +| addons.vpn.securityContext.capabilities.add[1] | string | `"SYS_MODULE"` | | +| addons.vpn.type | string | `"openvpn"` | | +| addons.vpn.wireguard.image.pullPolicy | string | `"IfNotPresent"` | | +| addons.vpn.wireguard.image.repository | string | `"k8sathome/wireguard"` | | +| addons.vpn.wireguard.image.tag | string | `"1.0.20200827"` | | +| affinity | object | `{}` | | +| args | list | `[]` | | +| command | list | `[]` | | +| controllerAnnotations | object | `{}` | | +| controllerLabels | object | `{}` | | +| controllerType | string | `"deployment"` | | +| dnsPolicy | string | `"ClusterFirst"` | | +| enableServiceLinks | bool | `true` | | +| env | object | `{}` | | +| envFrom | list | `[]` | | +| envTpl | object | `{}` | | +| envValueFrom | object | `{}` | | +| fixMountPermissions | bool | `true` | | +| fullnameOverride | string | `""` | | +| hostAliases | list | `[]` | | +| hostNetwork | bool | `false` | | +| ingress.additionalIngresses | list | `[]` | | +| ingress.annotations | object | `{}` | | +| ingress.enabled | bool | `false` | | +| ingress.hosts[0].host | string | `"chart-example.local"` | | +| ingress.hosts[0].paths[0].path | string | `"/"` | | +| ingress.hosts[0].paths[0].pathType | string | `"Prefix"` | | +| ingress.labels | object | `{}` | | +| ingress.tls | list | `[]` | | +| initContainers | list | `[]` | | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | | +| persistence.config.accessMode | string | `"ReadWriteOnce"` | | +| persistence.config.enabled | bool | `false` | | +| persistence.config.mountPath | string | `"/config"` | | +| persistence.config.size | string | `"1Gi"` | | +| persistence.config.skipuninstall | bool | `false` | | +| persistence.shared.emptyDir | bool | `true` | | +| persistence.shared.enabled | bool | `false` | | +| persistence.shared.mountPath | string | `"/shared"` | | +| podAnnotations | object | `{}` | | +| podSecurityContext | object | `{}` | | +| probes.liveness.custom | bool | `false` | | +| probes.liveness.enabled | bool | `true` | | +| probes.liveness.spec.failureThreshold | int | `5` | | +| probes.liveness.spec.initialDelaySeconds | int | `30` | | +| probes.liveness.spec.periodSeconds | int | `10` | | +| probes.liveness.spec.timeoutSeconds | int | `10` | | +| probes.readiness.custom | bool | `false` | | +| probes.readiness.enabled | bool | `true` | | +| probes.readiness.spec.failureThreshold | int | `5` | | +| probes.readiness.spec.initialDelaySeconds | int | `30` | | +| probes.readiness.spec.periodSeconds | int | `10` | | +| probes.readiness.spec.timeoutSeconds | int | `10` | | +| probes.startup.custom | bool | `false` | | +| probes.startup.enabled | bool | `true` | | +| probes.startup.spec.failureThreshold | int | `30` | | +| probes.startup.spec.initialDelaySeconds | int | `5` | | +| probes.startup.spec.periodSeconds | int | `10` | | +| probes.startup.spec.timeoutSeconds | int | `10` | | +| replicas | int | `1` | | +| resources | object | `{}` | | +| securityContext | object | `{}` | | +| service.additionalPorts | list | `[]` | | +| service.additionalServices | list | `[]` | | +| service.annotations | object | `{}` | | +| service.enabled | bool | `true` | | +| service.labels | object | `{}` | | +| service.port.name | string | `nil` | | +| service.port.port | string | `nil` | | +| service.port.protocol | string | `"TCP"` | | +| service.port.targetPort | string | `nil` | | +| service.type | string | `"ClusterIP"` | | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `false` | | +| serviceAccount.name | string | `""` | | +| strategy.type | string | `"RollingUpdate"` | | +| tolerations | list | `[]` | | +| volumeClaimTemplates | list | `[]` | | + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/scale-catalog-template/library/common/templates/_all.tpl b/scale-catalog-template/library/common/templates/_all.tpl new file mode 100644 index 00000000..9bb0b3ea --- /dev/null +++ b/scale-catalog-template/library/common/templates/_all.tpl @@ -0,0 +1,27 @@ +{{/* +Main entrypoint for the common library chart. It will render all underlying templates based on the provided values. +*/}} +{{- define "common.all" -}} + {{- /* Merge the local chart values and the common chart defaults */ -}} + {{- include "common.values.setup" . }} + + {{- /* Build the templates */ -}} + {{- include "common.pvc" . }} + {{- print "---" | nindent 0 -}} + {{- if .Values.serviceAccount.create -}} + {{- include "common.serviceAccount" . }} + {{- print "---" | nindent 0 -}} + {{- end -}} + {{- if eq .Values.controllerType "deployment" }} + {{- include "common.deployment" . | nindent 0 }} + {{ else if eq .Values.controllerType "daemonset" }} + {{- include "common.daemonset" . | nindent 0 }} + {{ else if eq .Values.controllerType "statefulset" }} + {{- include "common.statefulset" . | nindent 0 }} + {{- end -}} + {{ include "common.services" . | nindent 0 }} + {{ include "common.ingress" . | nindent 0 }} + {{ include "common.resources.portal" . | nindent 0 }} + {{ include "common.storage.permissions" . | nindent 0 }} + +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/_daemonset.tpl b/scale-catalog-template/library/common/templates/_daemonset.tpl new file mode 100644 index 00000000..91bb0a4f --- /dev/null +++ b/scale-catalog-template/library/common/templates/_daemonset.tpl @@ -0,0 +1,52 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +This template serves as the blueprint for the DaemonSet objects that are created +within the common library. +*/}} +{{- define "common.daemonset" -}} +apiVersion: {{ include "common.capabilities.daemonset.apiVersion" . }} +kind: DaemonSet +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_deployment.tpl b/scale-catalog-template/library/common/templates/_deployment.tpl new file mode 100644 index 00000000..caa94643 --- /dev/null +++ b/scale-catalog-template/library/common/templates/_deployment.tpl @@ -0,0 +1,56 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as the blueprint for the Deployment objects that are created +within the common library. +*/}} +{{- define "common.deployment" -}} +apiVersion: {{ include "common.capabilities.deployment.apiVersion" . }} +kind: Deployment +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicas }} + {{- with .Values.strategy }} + strategy: + {{- toYaml . | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_ingress.tpl b/scale-catalog-template/library/common/templates/_ingress.tpl new file mode 100644 index 00000000..b329c09c --- /dev/null +++ b/scale-catalog-template/library/common/templates/_ingress.tpl @@ -0,0 +1,122 @@ +{{/* +Renders the Ingress objects required by the chart by returning a concatinated list +of the main Ingress and any additionalIngresses. +*/}} +{{- define "common.ingress" -}} + {{- /* Generate named ingresses as required */ -}} + {{- range $name, $ingress := .Values.ingress }} + {{- $certType := $ingress.certType | default "disabled" -}} + {{- $enabled := $ingress.enabled | default false -}} + {{- if or ( ne $certType "disabled" ) ( $ingress.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $ingress -}} + + {{/* set defaults */}} + {{- if and (not $ingressValues.nameSuffix) ( ne $name "main" ) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + + + {{- /* Generate additional ingresses as required */ -}} + {{- range $index, $additionalIngress := .Values.additionalIngress }} + {{- $certType := $additionalIngress.certType | default "disabled" -}} + {{- if or ( ne $certType "disabled" ) ( $additionalIngress.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $additionalIngress -}} + + {{/* set defaults */}} + {{- $name := $index -}} + {{- if $ingressValues.name -}} + {{- $name := $ingressValues.name -}} + {{- end }} + + {{- if or (not $ingressValues.nameSuffix) ( ne ( $name | quote ) "main" ) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + + {{- /* Generate externalService ingresses as required */ -}} + {{- range $index, $externalService := .Values.externalServices }} + {{- $certType := $externalService.certType | default "disabled" -}} + {{- if or ( ne $certType "disabled" ) ( $externalService.enabled ) -}} + {{- print ("---") | nindent 0 -}} + {{- $ingressValues := $externalService -}} + + {{/* set defaults */}} + {{- $name := $index -}} + {{- if $ingressValues.name -}} + {{- $name := $ingressValues.name -}} + {{- end }} + {{- $name = printf "%v-%v" "external" $name -}} + + {{- if or (not $ingressValues.nameSuffix) -}} + {{- $_ := set $ingressValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "ingress" $ingressValues) -}} + {{- if not $ingressValues.type -}} + {{- $_ := set $ingressValues "type" "HTTP" -}} + {{ end -}} + {{- if not $ingressValues.certType -}} + {{- $_ := set $ingressValues "certType" "" -}} + {{ end -}} + + {{- if or ( eq $ingressValues.type "TCP" ) ( eq $ingressValues.type "UDP" ) ( eq $ingressValues.type "HTTP-IR" ) -}} + {{- include "common.classes.ingressRoute" $ -}} + {{- else -}} + {{- include "common.classes.ingress" $ -}} + {{ end -}} + + {{- print ("---") | nindent 0 -}} + {{- include "common.classes.externalService" $ }} + + {{- if eq $ingressValues.certType "ixcert" -}} + {{- $_ := set $ "ObjectValues" (dict "certHolder" $ingressValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.resources.cert.secret" $ }} + {{ end -}} + {{- end }} + {{- end }} + +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_pvc.tpl b/scale-catalog-template/library/common/templates/_pvc.tpl new file mode 100644 index 00000000..1e00d3e4 --- /dev/null +++ b/scale-catalog-template/library/common/templates/_pvc.tpl @@ -0,0 +1,36 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Renders the PersistentVolumeClaim objects required by the chart by returning a concatinated list +of all the entries of the persistence key. +*/}} +{{- define "common.pvc" -}} + {{- /* Generate pvc as required */ -}} + {{- range $index, $PVC := .Values.persistence }} + {{- if and $PVC.enabled (not (or $PVC.emptyDir $PVC.existingClaim)) -}} + {{- $persistenceValues := $PVC -}} + {{- if not $persistenceValues.nameSuffix -}} + {{- $_ := set $persistenceValues "nameSuffix" $index -}} + {{- end -}} + {{- $_ := set $ "ObjectValues" (dict "persistence" $persistenceValues) -}} + {{- print ("---") | nindent 0 -}} + {{- include "common.classes.pvc" $ -}} + {{- end }} + {{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_serviceaccount.tpl b/scale-catalog-template/library/common/templates/_serviceaccount.tpl new file mode 100644 index 00000000..a8c0e790 --- /dev/null +++ b/scale-catalog-template/library/common/templates/_serviceaccount.tpl @@ -0,0 +1,15 @@ +{{/* +The ServiceAccount object to be created. +*/}} +{{- define "common.serviceAccount" -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "common.names.serviceAccountName" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_services.tpl b/scale-catalog-template/library/common/templates/_services.tpl new file mode 100644 index 00000000..9e72e9d0 --- /dev/null +++ b/scale-catalog-template/library/common/templates/_services.tpl @@ -0,0 +1,46 @@ +{{/* +Renders the Service objects required by the chart by returning a concatinated list +of the main Service and any additionalServices. +*/}} +{{- define "common.services" -}} + {{- if .Values.services -}} + {{- /* Add dict of primary services */ -}} + {{- range $name, $service := .Values.services }} + {{- if or ( $service.enabled ) ( eq $name "main" ) -}} + {{- print ("---") | nindent 0 -}} + {{- print ("\n") | nindent 0 -}} + {{- $serviceValues := $service -}} + + {{- /* Dont add name suffix for primary service named "main" */ -}} + {{- if and (not $serviceValues.nameSuffix) ( ne $name "main" ) -}} + {{- $_ := set $serviceValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}} + {{- include "common.classes.service" $ -}} + {{- end }} + {{- end }} + {{- end }} + + + {{- if .Values.additionalServices -}} + {{- /* Generate additional services as required */ -}} + {{- range $index, $extraService := .Values.additionalServices }} + {{- if $extraService.enabled -}} + {{- print ("---") | nindent 0 -}} + {{- $serviceValues := $extraService -}} + + {{- $name := $index -}} + {{- if $serviceValues.name -}} + {{- $name := $serviceValues.name -}} + {{- end }} + + {{- /* Dont add name suffix for primary service named "main" */ -}} + {{- if and (not $serviceValues.nameSuffix) ( ne ( $name | quote ) "main" ) -}} + {{- $_ := set $serviceValues "nameSuffix" $name -}} + {{ end -}} + {{- $_ := set $ "ObjectValues" (dict "service" $serviceValues) -}} + {{- include "common.classes.service" $ -}} + {{- end }} + {{- end }} + {{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/_statefulset.tpl b/scale-catalog-template/library/common/templates/_statefulset.tpl new file mode 100644 index 00000000..3b7915b3 --- /dev/null +++ b/scale-catalog-template/library/common/templates/_statefulset.tpl @@ -0,0 +1,71 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as the blueprint for the StatefulSet objects that are created +within the common library. +*/}} +{{- define "common.statefulset" -}} +apiVersion: {{ include "common.capabilities.statefulset.apiVersion" . }} +kind: StatefulSet +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.controllerLabels }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- with .Values.controllerAnnotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + replicas: {{ .Values.replicas }} + {{- with .Values.strategy }} + updateStrategy: + {{- toYaml . | nindent 4 }} + {{- end }} + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + serviceName: {{ include "common.names.fullname" . }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "common.labels.selectorLabels" . | nindent 8 }} + spec: + {{- include "common.controller.pod" . | nindent 6 }} + volumeClaimTemplates: + {{- range $index, $vct := .Values.volumeClaimTemplates }} + - metadata: + name: {{ $vct.name }} + spec: + accessModes: + - {{ required (printf "accessMode is required for vCT %v" $vct.name) $vct.accessMode | quote }} + resources: + requests: + storage: {{ required (printf "size is required for PVC %v" $vct.name) $vct.size | quote }} + {{- if $vct.storageClass }} + storageClassName: {{ if (eq "-" $vct.storageClass) }}""{{- else }}{{ $vct.storageClass | quote }}{{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/classes/_pvc.tpl b/scale-catalog-template/library/common/templates/classes/_pvc.tpl new file mode 100644 index 00000000..5799ae0a --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/_pvc.tpl @@ -0,0 +1,62 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as a blueprint for all PersistentVolumeClaim objects that are created +within the common library. +*/}} +{{- define "common.classes.pvc" -}} +{{- $values := .Values.persistence -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.persistence -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} +{{- $pvcName := include "common.names.fullname" . -}} +{{- if hasKey $values "nameOverride" -}} + {{- $pvcName = $values.nameOverride -}} +{{- else if hasKey $values "nameSuffix" -}} + {{- $pvcName = printf "%v-%v" $pvcName $values.nameSuffix -}} +{{ end -}} +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: {{ $pvcName }} + {{- if or $values.skipuninstall $values.annotations }} + annotations: + {{- if $values.skipuninstall }} + "helm.sh/resource-policy": keep + {{- end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- end }} + labels: + {{- include "common.labels" . | nindent 4 }} +spec: + accessModes: + - {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }} + resources: + requests: + storage: {{ required (printf "size is required for PVC %v" $pvcName) $values.size | quote }} + {{- if $values.storageClass }} + storageClassName: {{ include "common.storage.class" . }} + {{- else }} + storageClassName: {{ ( printf "%v-%v" "ix-storage-class" .Release.Name ) }} + {{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/classes/_service.tpl b/scale-catalog-template/library/common/templates/classes/_service.tpl new file mode 100644 index 00000000..c8243072 --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/_service.tpl @@ -0,0 +1,99 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +This template serves as a blueprint for all Service objects that are created +within the common library. +*/}} +{{- define "common.classes.service" -}} +{{- $values := .Values.services.main -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.service -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- $serviceName := include "common.names.fullname" . -}} + + +{{- if hasKey $values "nameSuffix" -}} + {{- $serviceName = printf "%v-%v" $serviceName $values.nameSuffix -}} +{{ end -}} +{{- $svcType := $values.type | default "" -}} + +{{- $portProtocol := $values.port.protocol -}} +{{- if or ( eq $values.port.protocol "HTTP" ) ( eq $values.port.protocol "HTTPS" ) ( eq $values.port.protocol "TCP" ) -}} +{{- $portProtocol = "TCP" -}} +{{- else if eq $values.port.protocol "UDP" }} +{{- $portProtocol = "UDP" -}} +{{- end }} +apiVersion: v1 +kind: Service +metadata: + name: {{ $serviceName }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- if $values.labels }} + {{ toYaml $values.labels | nindent 4 }} + {{- end }} + annotations: + {{- if eq $values.port.protocol "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + {{- with $values.annotations }} + {{ toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if (or (eq $svcType "ClusterIP") (empty $svcType)) }} + type: ClusterIP + {{- if $values.clusterIP }} + clusterIP: {{ $values.clusterIP }} + {{end}} + {{- else if eq $svcType "LoadBalancer" }} + type: {{ $svcType }} + {{- if $values.loadBalancerIP }} + loadBalancerIP: {{ $values.loadBalancerIP }} + {{- end }} + {{- if $values.externalTrafficPolicy }} + externalTrafficPolicy: {{ $values.externalTrafficPolicy }} + {{- end }} + {{- if $values.loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{ toYaml $values.loadBalancerSourceRanges | nindent 4 }} + {{- end -}} + {{- else }} + type: {{ $svcType }} + {{- end }} + {{- if $values.sessionAffinity }} + sessionAffinity: {{ $values.sessionAffinity }} + {{- if $values.sessionAffinityConfig }} + sessionAffinityConfig: + {{ toYaml $values.sessionAffinityConfig | nindent 4 }} + {{- end -}} + {{- end }} + {{- with $values.externalIPs }} + externalIPs: + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if $values.publishNotReadyAddresses }} + publishNotReadyAddresses: {{ $values.publishNotReadyAddresses }} + {{- end }} + {{- include "common.classes.service.ports" (dict "svcType" $svcType "values" $values ) | trim | nindent 2 }} + selector: + {{- include "common.labels.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/classes/_service_ports.tpl b/scale-catalog-template/library/common/templates/classes/_service_ports.tpl new file mode 100644 index 00000000..859c3ff5 --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/_service_ports.tpl @@ -0,0 +1,47 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Render all the ports and additionalPorts for a Service object. +*/}} +{{- define "common.classes.service.ports" -}} + {{- $ports := list -}} + {{- $values := .values -}} + {{- $ports = mustAppend $ports $values.port -}} + {{- range $_ := $values.additionalPorts -}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- if $ports -}} + ports: + {{- range $_ := $ports }} + {{- $protocol := "" -}} + {{- if or ( eq .protocol "HTTP" ) ( eq .protocol "HTTPS" ) }} + {{- $protocol = "TCP" -}} + {{- else }} + {{- $protocol = .protocol | default "TCP" -}} + {{- end }} + - port: {{ .port }} + targetPort: {{ .targetPort | default .name | default "http" }} + protocol: {{ $protocol | default "TCP" }} + name: {{ .name | default "http" }} + {{- if (and (eq $.svcType "NodePort") (not (empty .nodePort))) }} + nodePort: {{ .nodePort }} + {{ end }} + {{- end -}} + {{- end -}} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/classes/ingress/_externalService.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_externalService.tpl new file mode 100644 index 00000000..a2aedaf5 --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/ingress/_externalService.tpl @@ -0,0 +1,63 @@ +{{- define "common.classes.externalService" -}} +{{- $serviceName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 }} +{{- $ingressService := $.Values }} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- if hasKey $values "nameSuffix" -}} + {{- $serviceName = printf "%v-%v" $serviceName $values.nameSuffix -}} +{{ end -}} + +{{- $svcName := $values.serviceName | default $serviceName -}} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort -}} +{{- end }} + +apiVersion: v1 +kind: Service +metadata: + name: {{ $svcName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- if eq ( $values.serviceType | default "" ) "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + ports: +{{- if eq $values.type "UDP"}} + - protocol: UDP + port: {{ $values.servicePort }} + targetPort: {{ $values.servicePort }} +{{- else }} + - protocol: TCP + port: {{ $values.servicePort }} + targetPort: {{ $values.servicePort }} +{{- end }} +--- +apiVersion: v1 +kind: Endpoints +metadata: + name: {{ $svcName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +subsets: + - addresses: + - ip: {{ $values.serviceTarget }} + ports: + - port: {{ $values.servicePort }} + +{{- end }} diff --git a/scale-catalog-template/library/common/templates/classes/ingress/_ingress.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_ingress.tpl new file mode 100644 index 00000000..3552f79d --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/ingress/_ingress.tpl @@ -0,0 +1,148 @@ +{{/* +This template serves as a blueprint for all Ingress objects that are created +within the common library. +*/}} +{{- define "common.classes.ingress" -}} +{{- $ingressName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 -}} +{{- $portProtocol := "" -}} +{{- $ingressService := $.Values -}} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + + +{{- if hasKey $values "nameSuffix" -}} + {{- $ingressName = printf "%v-%v" $ingressName $values.nameSuffix -}} + {{- if not $values.servicePort }} + {{- $ingressService := index $.Values.services ( $values.nameSuffix | quote ) }} + {{- if $ingressService.enabled }} + {{- $svcPort = $ingressService.port.port -}} + {{- $portProtocol = $ingressService.port.protocol | default "" }} + {{- else if $.Values.services.main.enabled }} + {{- $svcPort = $.Values.services.main.port.port -}} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" -}} + {{ end -}} + {{ end -}} +{{- else if and ( $.Values.services.main.enabled ) ( not $values.servicePort ) }} + {{- $svcPort = $.Values.services.main.port.port -}} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" -}} +{{ end -}} + +{{- $authForwardName := ( printf "%v-%v" $ingressName "auth-forward" ) -}} + +{{- $svcName := $values.serviceName | default $ingressName -}} + +{{- if $values.dynamicServiceName }} + {{- $dynamicServiceName := printf "%v-%v" .Release.Name $values.dynamicServiceName -}} + {{- $svcName = $dynamicServiceName -}} +{{- end }} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort -}} +{{- end }} + +{{- if $values.serviceType }} + {{- $portProtocol = $values.serviceType -}} +{{- end }} + +apiVersion: {{ include "common.capabilities.ingress.apiVersion" . }} +kind: Ingress +metadata: + name: {{ $ingressName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- if eq $portProtocol "HTTPS" }} + traefik.ingress.kubernetes.io/service.serversscheme: https + {{- end }} + traefik.ingress.kubernetes.io/router.entrypoints: {{ $values.entrypoint | default "websecure" }} + traefik.ingress.kubernetes.io/router.middlewares: traefik-middlewares-chain-public@kubernetescrd{{ if $values.authForwardURL }},{{ printf "%v-%v@%v" .Release.Namespace $authForwardName "kubernetescrd" }}{{ end }} + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + {{- if $values.ingressClassName }} + ingressClassName: {{ $values.ingressClassName }} + {{- end }} + {{- end }} + {{- if or ( eq $values.certType "selfsigned") (eq $values.certType "ixcert") }} + tls: + - hosts: + {{- if $values.host}} + - {{ $values.host | quote }} + {{- else }} + {{- range $values.hosts }} + - {{ .host | quote }} + {{- end }} + {{- end }} + {{- if eq $values.certType "ixcert" }} + secretName: {{ $ingressName }} + {{- end }} + {{- end }} + rules: + {{- if $values.host }} + - host: {{ $values.host | quote }} + http: + paths: + - path: {{ $values.path | default "/" }} + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + pathType: Prefix + {{- end }} + backend: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + service: + name: {{ $svcName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $svcName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + {{- range $values.hosts }} + - host: {{ .host | quote }} + http: + paths: + - path: {{ .path | default "/" }} + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + pathType: Prefix + {{- end }} + backend: + {{- if eq (include "common.capabilities.ingress.apiVersion" $) "networking.k8s.io/v1" }} + service: + name: {{ $svcName }} + port: + number: {{ $svcPort }} + {{- else }} + serviceName: {{ $svcName }} + servicePort: {{ $svcPort }} + {{- end }} + {{- end }} + +{{- if $values.authForwardURL }} + +--- + +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $authForwardName }} +spec: + forwardAuth: + address: {{ $values.authForwardURL | quote }} + tls: + insecureSkipVerify: true + trustForwardHeader: true + authResponseHeaders: + - Remote-User + - Remote-Groups + - Remote-Name + - Remote-Email +{{- end }} + +{{- end }} diff --git a/scale-catalog-template/library/common/templates/classes/ingress/_ingressRoute.tpl b/scale-catalog-template/library/common/templates/classes/ingress/_ingressRoute.tpl new file mode 100644 index 00000000..a44fe553 --- /dev/null +++ b/scale-catalog-template/library/common/templates/classes/ingress/_ingressRoute.tpl @@ -0,0 +1,127 @@ +{{/* +This template serves as a blueprint for all ingressRoute objects that are created +within the common library. +*/}} +{{- define "common.classes.ingressRoute" -}} +{{- $ingressName := include "common.names.fullname" . -}} +{{- $values := .Values -}} +{{- $svcPort := 80 }} +{{- $portProtocol := "" }} +{{- $ingressService := $.Values }} +{{- if hasKey . "ObjectValues" -}} + {{- with .ObjectValues.ingress -}} + {{- $values = . -}} + {{- end -}} +{{ end -}} + +{{- if hasKey $values "nameSuffix" -}} + {{- $ingressName = printf "%v-%v" $ingressName $values.nameSuffix -}} + {{- if and ( $.Values.services ) ( not $values.servicePort ) }} + {{- $ingressService := index $.Values.services ( $values.nameSuffix | quote) }} + {{- $svcPort = $ingressService.port.port }} + {{- $portProtocol = $ingressService.port.protocol | default "" }} + {{ end -}} +{{- else if and ( $.Values.services ) ( not $values.servicePort ) }} + {{- $svcPort = $.Values.services.main.port.port }} + {{- $portProtocol = $.Values.services.main.port.protocol | default "" }} +{{ end -}} + +{{- $authForwardName := ( printf "%v-%v" $ingressName "auth-forward" ) -}} + +{{- $svcName := $values.serviceName | default $ingressName -}} + +{{- if $values.servicePort }} + {{- $svcPort = $values.servicePort }} +{{- end }} + +{{- if $values.serviceType }} + {{- $portProtocol = $values.serviceType }} +{{- end }} + +apiVersion: traefik.containo.us/v1alpha1 +{{- if eq $values.type "UDP" }} +kind: IngressRouteUDP +{{- else if eq $values.type "TCP" }} +kind: IngressRouteTCP +{{- else }} +kind: IngressRoute +{{- end }} +metadata: + name: {{ $ingressName }} + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + {{- with $values.annotations }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + entryPoints: + - {{ $values.entrypoint }} + routes: + {{- if eq $values.type "UDP" }} + - services: + - name: {{ $svcName }} + port: {{ $svcPort }} + weight: 10 + {{- else if eq $values.type "TCP" }} + - match: HostSNI(`*`) + services: + - name: {{ $svcName }} + port: {{ $svcPort }} + weight: 10 + terminationDelay: 400 + {{- else }} + - kind: Rule + match: Host(`{{ (index $values.hosts 0).host }}`) && PathPrefix(`{{ (index $values.hosts 0).path | default "/" }}`) + services: + - name: {{ $svcName }} + {{- if $values.serviceKind }} + kind: {{ $values.serviceKind }} + {{- else }} + port: {{ $svcPort }} + {{- end }} + middlewares: + - name: traefik-middlewares-chain-public@kubernetescrd + {{- if $values.authForwardURL }} + - name: "{{ printf "%v-%v@%v" .Release.Namespace $authForwardName "kubernetescrd" }}" + {{- end }} + {{- end }} + +{{- if not ( eq $values.type "UDP" ) }} +{{- if or ( eq $values.certType "selfsigned") (eq $values.certType "ixcert") }} + tls: + domains: + - main: {{ (index $values.hosts 0).host }} + sans: + {{- range $values.hosts }} + - {{ .host | quote }} + {{- end }} + {{- if eq $values.certType "ixcert" }} + secretName: {{ $ingressName }} + {{- end }} + passthrough: false + +{{- end }} +{{- end }} + +{{- if $values.authForwardURL }} +--- + +apiVersion: traefik.containo.us/v1alpha1 +kind: Middleware +metadata: + name: {{ $authForwardName }} +spec: + forwardAuth: + address: {{ $values.authForwardURL | quote }} + tls: + insecureSkipVerify: true + trustForwardHeader: true + authResponseHeaders: + - Remote-User + - Remote-Groups + - Remote-Name + - Remote-Email + +{{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_capabilities.tpl b/scale-catalog-template/library/common/templates/lib/chart/_capabilities.tpl new file mode 100644 index 00000000..37ff7d74 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_capabilities.tpl @@ -0,0 +1,146 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Return the appropriate apiVersion for DaemonSet objects. +*/}} +{{- define "common.capabilities.daemonset.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.daemonset.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/DaemonSet" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for Deployment objects. +*/}} +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.deployment.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/Deployment" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for StatefulSet objects. +*/}} +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "apps/v1beta1" -}} +{{- else -}} +{{- print "apps/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.statefulset.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "apps/v1/StatefulSet" -}} +{{- print "apps/v1" -}} +{{- else -}} +{{- print "apps/v1beta1" -}} +{{- end -}} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for Ingress objects. +*/}} + +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Values.ingress.apiVersion -}} +{{- .Values.ingress.apiVersion -}} +{{- else if semverCompare "<1.14-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "extensions/v1beta1" -}} +{{- else if semverCompare "<1.19-0" .Capabilities.KubeVersion.GitVersion -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "networking.k8s.io/v1" -}} +{{- end }} +{{- end -}} + +{{/* +Waiting on https://github.com/helm/helm/pull/8608 +{{- define "common.capabilities.ingress.apiVersion" -}} +{{- if .Capabilities.APIVersions.Has "networking.k8s.io/v1/Ingress" -}} +{{- print "networking.k8s.io/v1" -}} +{{- else if .Capabilities.APIVersions.Has "networking.k8s.io/v1beta1/Ingress" -}} +{{- print "networking.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "extensions/v1beta1" -}} +{{- end }} +{{- end -}} +*/}} + +{{/* +Return the appropriate apiVersion for RBAC resources. +*/}} +{{- define "common.capabilities.rbac.apiVersion" -}} +{{- if semverCompare "<1.17-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "rbac.authorization.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "rbac.authorization.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Return the appropriate apiVersion for CRDs. +*/}} +{{- define "common.capabilities.crd.apiVersion" -}} +{{- if semverCompare "<1.19-0" (include "common.capabilities.kubeVersion" .) -}} +{{- print "apiextensions.k8s.io/v1beta1" -}} +{{- else -}} +{{- print "apiextensions.k8s.io/v1" -}} +{{- end -}} +{{- end -}} + +{{/* +Returns true if the used Helm version is 3.3+. +A way to check the used Helm version was not introduced until version 3.3.0 with .Capabilities.HelmVersion, which contains an additional "{}}" structure. +This check is introduced as a regexMatch instead of {{ if .Capabilities.HelmVersion }} because checking for the key HelmVersion in <3.3 results in a "interface not found" error. +**To be removed when the catalog's minimun Helm version is 3.3** +*/}} +{{- define "common.capabilities.supportsHelmVersion" -}} +{{- if regexMatch "{(v[0-9])*[^}]*}}$" (.Capabilities | toString ) }} + {{- true -}} +{{- end -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_errors.tpl b/scale-catalog-template/library/common/templates/lib/chart/_errors.tpl new file mode 100644 index 00000000..2985af44 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_errors.tpl @@ -0,0 +1,38 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Through error when upgrading using empty passwords values that must not be empty. + +Usage: +{{- $validationError00 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password00" "secret" "secretName" "field" "password-00") -}} +{{- $validationError01 := include "common.validations.values.single.empty" (dict "valueKey" "path.to.password01" "secret" "secretName" "field" "password-01") -}} +{{ include "common.errors.upgrade.passwords.empty" (dict "validationErrors" (list $validationError00 $validationError01) "context" $) }} + +Required password params: + - validationErrors - String - Required. List of validation strings to be return, if it is empty it won't throw error. + - context - Context - Required. Parent context. +*/}} +{{- define "common.errors.upgrade.passwords.empty" -}} + {{- $validationErrors := join "" .validationErrors -}} + {{- if and $validationErrors .context.Release.IsUpgrade -}} + {{- $errorString := "\nPASSWORDS ERROR: you must provide your current passwords when upgrade the release%s" -}} + {{- printf $errorString $validationErrors | fail -}} + {{- end -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_images.tpl b/scale-catalog-template/library/common/templates/lib/chart/_images.tpl new file mode 100644 index 00000000..12c8ea13 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_images.tpl @@ -0,0 +1,65 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Return the proper image name +{{ include "common.images.image" ( dict "imageRoot" .Values.path.to.the.image "global" $) }} +*/}} +{{- define "common.images.image" -}} +{{- $registryName := .imageRoot.registry -}} +{{- $repositoryName := .imageRoot.repository -}} +{{- $tag := .imageRoot.tag | toString -}} +{{- if .global }} + {{- if .global.imageRegistry }} + {{- $registryName = .global.imageRegistry -}} + {{- end -}} +{{- end -}} +{{- if $registryName }} +{{- printf "%s/%s:%s" $registryName $repositoryName $tag -}} +{{- else -}} +{{- printf "%s:%s" $repositoryName $tag -}} +{{- end -}} +{{- end -}} + +{{/* +Return the proper Docker Image Registry Secret Names +{{ include "common.images.pullSecrets" ( dict "images" (list .Values.path.to.the.image1, .Values.path.to.the.image2) "global" .Values.global) }} +*/}} +{{- define "common.images.pullSecrets" -}} + {{- $pullSecrets := list }} + + {{- if .global }} + {{- range .global.imagePullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- range .images -}} + {{- range .pullSecrets -}} + {{- $pullSecrets = append $pullSecrets . -}} + {{- end -}} + {{- end -}} + + {{- if (not (empty $pullSecrets)) }} +imagePullSecrets: + {{- range $pullSecrets }} + - name: {{ . }} + {{- end }} + {{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_labels.tpl b/scale-catalog-template/library/common/templates/lib/chart/_labels.tpl new file mode 100644 index 00000000..b5be0514 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_labels.tpl @@ -0,0 +1,55 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Common labels shared across objects. +*/}} +{{- define "common.labels" -}} +helm.sh/chart: {{ include "common.names.chart" . }} +{{ include "common.labels.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels shared across objects. +*/}} +{{- define "common.labels.selectorLabels" -}} +app.kubernetes.io/name: {{ include "common.names.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + + +## Bitnami Compatibility links + +{{/* vim: set filetype=mustache: */}} +{{/* +Kubernetes standard labels +*/}} +{{- define "common.labels.standard" -}} +{{ include "common.labels" . }} +{{- end -}} + +{{/* +Labels to use on deploy.spec.selector.matchLabels and svc.spec.selector +*/}} +{{- define "common.labels.matchLabels" -}} +{{ include "common.labels.selectorLabels" . }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_names.tpl b/scale-catalog-template/library/common/templates/lib/chart/_names.tpl new file mode 100644 index 00000000..41273d69 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_names.tpl @@ -0,0 +1,62 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Expand the name of the chart. +*/}} +{{- define "common.names.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}} +{{- end -}} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "common.names.fullname" -}} +{{- if .Values.fullnameOverride -}} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- $name := default .Chart.Name .Values.nameOverride -}} +{{- if contains $name .Release.Name -}} +{{- .Release.Name | trunc 63 | trimSuffix "-" -}} +{{- else -}} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}} +{{- end -}} +{{- end -}} +{{- end -}} + + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "common.names.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create the name of the ServiceAccount to use. +*/}} +{{- define "common.names.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} + {{- default (include "common.names.fullname" .) .Values.serviceAccount.name }} +{{- else }} + {{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_utils.tpl b/scale-catalog-template/library/common/templates/lib/chart/_utils.tpl new file mode 100644 index 00000000..c8cec118 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_utils.tpl @@ -0,0 +1,80 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* vim: set filetype=mustache: */}} +{{/* +Print instructions to get a secret value. +Usage: +{{ include "common.utils.secret.getvalue" (dict "secret" "secret-name" "field" "secret-value-field" "context" $) }} +*/}} +{{- define "common.utils.secret.getvalue" -}} +{{- $varname := include "common.utils.fieldToEnvVar" . -}} +export {{ $varname }}=$(kubectl get secret --namespace {{ .context.Release.Namespace | quote }} {{ .secret }} -o jsonpath="{.data.{{ .field }}}" | base64 --decode) +{{- end -}} + +{{/* +Build env var name given a field +Usage: +{{ include "common.utils.fieldToEnvVar" dict "field" "my-password" }} +*/}} +{{- define "common.utils.fieldToEnvVar" -}} + {{- $fieldNameSplit := splitList "-" .field -}} + {{- $upperCaseFieldNameSplit := list -}} + + {{- range $fieldNameSplit -}} + {{- $upperCaseFieldNameSplit = append $upperCaseFieldNameSplit ( upper . ) -}} + {{- end -}} + + {{ join "_" $upperCaseFieldNameSplit }} +{{- end -}} + +{{/* +Gets a value from .Values given +Usage: +{{ include "common.utils.getValueFromKey" (dict "key" "path.to.key" "context" $) }} +*/}} +{{- define "common.utils.getValueFromKey" -}} +{{- $splitKey := splitList "." .key -}} +{{- $value := "" -}} +{{- $latestObj := $.context.Values -}} +{{- range $splitKey -}} + {{- if not $latestObj -}} + {{- printf "please review the entire path of '%s' exists in values" $.key | fail -}} + {{- end -}} + {{- $value = ( index $latestObj . ) -}} + {{- $latestObj = $value -}} +{{- end -}} +{{- printf "%v" (default "" $value) -}} +{{- end -}} + +{{/* +Returns first .Values key with a defined value or first of the list if all non-defined +Usage: +{{ include "common.utils.getKeyFromList" (dict "keys" (list "path.to.key1" "path.to.key2") "context" $) }} +*/}} +{{- define "common.utils.getKeyFromList" -}} +{{- $key := first .keys -}} +{{- $reverseKeys := reverse .keys }} +{{- range $reverseKeys }} + {{- $value := include "common.utils.getValueFromKey" (dict "key" . "context" $.context ) }} + {{- if $value -}} + {{- $key = . }} + {{- end -}} +{{- end -}} +{{- printf "%s" $key -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/chart/_values.tpl b/scale-catalog-template/library/common/templates/lib/chart/_values.tpl new file mode 100644 index 00000000..af6b4658 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/chart/_values.tpl @@ -0,0 +1,29 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + +{{/* +Merge the local chart values and the common chart defaults. +*/}} +{{- define "common.values.setup" -}} + {{- if .Values.common -}} + {{- $defaultValues := deepCopy .Values.common -}} + {{- $userValues := deepCopy (omit .Values "common") -}} + {{- $mergedValues := mustMergeOverwrite $defaultValues $userValues -}} + {{- $_ := set . "Values" (deepCopy $mergedValues) -}} + {{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_container.tpl b/scale-catalog-template/library/common/templates/lib/controller/_container.tpl new file mode 100644 index 00000000..cdd777ab --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_container.tpl @@ -0,0 +1,92 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{- /* +The main container included in the controller. +*/ -}} +{{- define "common.controller.mainContainer" -}} +- name: {{ include "common.names.fullname" . }} + image: "{{ include "common.images.image" (dict "imageRoot" .Values.image "global" .Values.global) }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + {{- with .Values.command }} + command: {{ . }} + {{- end }} + {{- with .Values.args }} + args: {{ . }} + {{- end }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 4 }} + {{- end }} + env: + - name: PUID + value: {{ .Values.PUID | quote }} + - name: PGID + value: {{ .Values.PGID | quote }} + - name: UMASK + value: {{ .Values.UMASK | quote }} + {{- if .Values.timezone }} + - name: TZ + value: {{ .Values.timezone | quote }} + {{- end }} + {{- if or .Values.env .Values.envTpl .Values.envValueFrom .Values.envVariable .Values.environmentVariables }} + {{- range $envVariable := .Values.environmentVariables }} + {{- if and $envVariable.name $envVariable.value }} + - name: {{ $envVariable.name }} + value: {{ $envVariable.value | quote }} + {{- else }} + {{- fail "Please specify name/value for environment variable" }} + {{- end }} + {{- end}} + {{- range $key, $value := .Values.env }} + - name: {{ $key }} + value: {{ $value | quote }} + {{- end }} + {{- range $key, $value := .Values.envTpl }} + - name: {{ $key }} + value: {{ tpl $value $ | quote }} + {{- end }} + {{- range $key, $value := .Values.envValueFrom }} + - name: {{ $key }} + valueFrom: + {{- $value | toYaml | nindent 8 }} + {{- end }} + {{- end }} + {{- with .Values.envFrom }} + envFrom: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- include "common.controller.ports" . | trim | nindent 2 }} + + {{- with (include "common.controller.volumeMounts" . | trim) }} + volumeMounts: + {{- . | nindent 2 }} + {{- end }} + + + {{- include "common.controller.probes" . | nindent 2 }} + resources: + {{- with .Values.resources }} + {{- toYaml . | nindent 4 }} + {{- end }} + {{- if and .Values.gpuConfiguration }} + limits: + {{- toYaml .Values.gpuConfiguration | nindent 6 }} + {{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_pod.tpl b/scale-catalog-template/library/common/templates/lib/controller/_pod.tpl new file mode 100644 index 00000000..90196a4b --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_pod.tpl @@ -0,0 +1,69 @@ +{{- /* +The pod definition included in the controller. +*/ -}} +{{- define "common.controller.pod" -}} +{{- with .Values.imagePullSecrets }} +imagePullSecrets: + {{- toYaml . | nindent 2 }} +{{- end }} +serviceAccountName: {{ include "common.names.serviceAccountName" . }} +{{- with .Values.podSecurityContext }} +securityContext: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.priorityClassName }} +priorityClassName: {{ . }} +{{- end }} +{{- with .Values.schedulerName }} +schedulerName: {{ . }} +{{- end }} +{{- with .Values.hostNetwork }} +hostNetwork: {{ . }} +{{- end }} +{{- with .Values.hostname }} +hostname: {{ . }} +{{- end }} +{{- if .Values.dnsPolicy }} +{{- with .Values.dnsPolicy }} +dnsPolicy: {{ . }} +{{- end }} +{{- else if .Values.hostNetwork }} +dnsPolicy: "ClusterFirstWithHostNet" +{{- else }} +dnsPolicy: ClusterFirst +{{- end }} +{{- with .Values.dnsConfig }} +dnsConfig: + {{- toYaml . | nindent 2 }} +{{- end }} +enableServiceLinks: {{ .Values.enableServiceLinks }} +{{- with .Values.initContainers }} +initContainers: + {{- toYaml . | nindent 2 }} +{{- end }} +containers: + {{- include "common.controller.mainContainer" . | nindent 0 }} + {{- with .Values.additionalContainers }} + {{- toYaml . | nindent 0 }} + {{- end }} +{{- with (include "common.controller.volumes" . | trim) }} +volumes: + {{- . | nindent 0 }} +{{- end }} +{{- with .Values.hostAliases }} +hostAliases: +{{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.nodeSelector }} +nodeSelector: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.affinity }} +affinity: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.tolerations }} +tolerations: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_ports.tpl b/scale-catalog-template/library/common/templates/lib/controller/_ports.tpl new file mode 100644 index 00000000..528b233d --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_ports.tpl @@ -0,0 +1,76 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Ports included by the controller. +*/}} +{{- define "common.controller.ports" -}} +{{- $ports := list -}} + {{/* append the ports for each appAdditionalService - TrueCharts */}} + {{- if $.Values.services -}} + {{- range $name, $_ := $.Values.services }} + {{- if or ( .enabled ) ( eq $name "main" ) -}} + {{- if eq $name "main" -}} + {{- $_ := set .port "name" (default "http" .port.name) -}} + {{- else if kindIs "string" $name -}} + {{- $_ := set .port "name" (default .port.name | default $name) -}} + {{- else -}} + {{- $_ := set .port "name" (required "Missing port.name" .port.name) -}} + {{- end -}} + {{- $ports = mustAppend $ports .port -}} + {{- range $_ := .additionalPorts -}} + {{/* append the additonalPorts for each additional service */}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + + {{- if $.Values.additionalServices -}} + {{- range $_ := $.Values.additionalServices }} + {{- if .enabled -}} + {{- $_ := set .port "name" (required "Missing port.name" .port.name) -}} + {{- $ports = mustAppend $ports .port -}} + {{- range $_ := .additionalPorts -}} + {{/* append the additonalPorts for each additional service */}} + {{- $ports = mustAppend $ports . -}} + {{- end }} + {{- end }} + {{- end }} + {{- end }} + +{{/* export/render the list of ports */}} +{{- if $ports -}} +ports: +{{- range $_ := $ports }} +{{- $protocol := "" -}} +{{- if or ( eq .protocol "HTTP" ) ( eq .protocol "HTTPS" ) }} + {{- $protocol = "TCP" -}} +{{- else }} + {{- $protocol = .protocol | default "TCP" -}} +{{- end }} +- name: {{ required "The port's 'name' is not defined" .name }} + {{- if and .targetPort (kindIs "string" .targetPort) }} + {{- fail (printf "Our charts do not support named ports for targetPort. (port name %s, targetPort %s)" .name .targetPort) }} + {{- end }} + containerPort: {{ .targetPort | default .port }} + protocol: {{ $protocol | default "TCP" }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_probes.tpl b/scale-catalog-template/library/common/templates/lib/controller/_probes.tpl new file mode 100644 index 00000000..47d33442 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_probes.tpl @@ -0,0 +1,41 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Probes selection logic. +*/}} +{{- define "common.controller.probes" -}} +{{- $svcPort := .Values.services.main.port.name -}} +{{- range $probeName, $probe := .Values.probes }} + {{- if $probe.enabled -}} + {{- "" | nindent 0 }} + {{- $probeName }}Probe: + {{- if $probe.custom -}} + {{- $probe.spec | toYaml | nindent 2 }} + {{- else }} + {{- "tcpSocket:" | nindent 2 }} + {{- printf "port: %v" $svcPort | nindent 4 }} + {{- printf "initialDelaySeconds: %v" $probe.spec.initialDelaySeconds | nindent 2 }} + {{- printf "failureThreshold: %v" $probe.spec.failureThreshold | nindent 2 }} + {{- printf "timeoutSeconds: %v" $probe.spec.timeoutSeconds | nindent 2 }} + {{- printf "periodSeconds: %v" $probe.spec.periodSeconds | nindent 2 }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_volumeMounts.tpl b/scale-catalog-template/library/common/templates/lib/controller/_volumeMounts.tpl new file mode 100644 index 00000000..e69903e0 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_volumeMounts.tpl @@ -0,0 +1,62 @@ + +{{/* +Volumes included by the controller. +*/}} +{{- define "common.controller.volumeMounts" -}} +{{- range $index, $PVC := .Values.persistence }} +{{- if and ( $PVC.enabled ) ( $PVC.mountPath ) }} +- mountPath: {{ $PVC.mountPath }} + name: {{ $index }} +{{- if $PVC.subPath }} + subPath: {{ $PVC.subPath }} +{{- end }} +{{- end }} +{{- end }} + + +{{ range $name, $dmm := .Values.deviceMounts }} +{{- if $dmm.enabled -}} +{{ if $dmm.name }} + {{ $name = $dmm.name }} +{{ end }} +- name: devicemount-{{ $name }} + mountPath: {{ $dmm.devicePath }} + {{ if $dmm.subPath }} + subPath: {{ $dmm.subPath }} + {{ end }} +{{- end -}} +{{ end }} + +{{ range $name, $csm := .Values.customStorage }} +{{- if $csm.enabled -}} +{{ if $csm.name }} + {{ $name = $csm.name }} +{{ end }} +- name: customstorage-{{ $name }} + mountPath: {{ $csm.mountPath }} + {{ if $csm.subPath }} + subPath: {{ $csm.subPath }} + {{ end }} + {{ if $csm.readOnly }} + readOnly: {{ $csm.readOnly }} + {{ end }} +{{- end -}} +{{ end }} + + +{{- if .Values.additionalVolumeMounts }} + {{- toYaml .Values.additionalVolumeMounts | nindent 0 }} +{{- end }} + + +{{- if eq .Values.controllerType "statefulset" }} +{{- range $index, $vct := .Values.volumeClaimTemplates }} +- mountPath: {{ $vct.mountPath }} + name: {{ $vct.name }} +{{- if $vct.subPath }} + subPath: {{ $vct.subPath }} +{{- end }} +{{- end }} +{{- end }} + +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/controller/_volumes.tpl b/scale-catalog-template/library/common/templates/lib/controller/_volumes.tpl new file mode 100644 index 00000000..49403cfa --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/controller/_volumes.tpl @@ -0,0 +1,84 @@ +{{/* +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. + +`SPDX-License-Identifier: Apache-2.0` + +This file is considered to be modified by the TrueCharts Project. +*/}} + + +{{/* +Volumes included by the controller. +*/}} +{{- define "common.controller.volumes" -}} +{{- range $index, $persistence := .Values.persistence }} +{{- if $persistence.enabled }} +- name: {{ $index }} +{{- if $persistence.existingClaim }} +{{- /* Always prefer an existingClaim if that is set */}} + persistentVolumeClaim: + claimName: {{ $persistence.existingClaim }} +{{- else -}} + {{- if $persistence.emptyDir -}} + {{- /* Always prefer an emptyDir next if that is set */}} + emptyDir: {} + {{- else -}} + {{- /* Otherwise refer to the PVC name */}} + persistentVolumeClaim: + {{- if $persistence.nameOverride }} + claimName: {{ $persistence.nameOverride }} + {{- else if $persistence.nameSuffix }} + claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $persistence.nameSuffix }} + {{- else }} + claimName: {{ printf "%s-%s" (include "common.names.fullname" $) $index }} + {{- end }} + {{- end }} +{{- end }} +{{- end }} +{{- end }} + +{{- range $name, $dm := .Values.deviceMounts -}} +{{ if $dm.enabled }} +{{ if $dm.name }} +{{ $name = $dm.name }} +{{ end }} +- name: devicemount-{{ $name }} + {{ if $dm.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $dm.devicePath }} + {{ end }} +{{ end }} +{{- end -}} + +{{- range $name, $cs := .Values.customStorage -}} +{{ if $cs.enabled }} +{{ if $cs.name }} +{{ $name = $cs.name }} +{{ end }} +- name: customstorage-{{ $name }} + {{ if $cs.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $cs.hostPath }} + {{ end }} +{{ end }} +{{- end -}} + + +{{- if .Values.additionalVolumes }} + {{- toYaml .Values.additionalVolumes | nindent 0 }} +{{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/resources/_certHelpers.tpl b/scale-catalog-template/library/common/templates/lib/resources/_certHelpers.tpl new file mode 100644 index 00000000..d2b07a9b --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/resources/_certHelpers.tpl @@ -0,0 +1,32 @@ +{{/* +Retrieve true/false if certificate is configured +*/}} +{{- define "common.resources.cert.available" -}} +{{- if .ObjectValues.certHolder.certificate -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate) -}} +{{- template "common.resources.cert_present" $values -}} +{{- else -}} +{{- false -}} +{{- end -}} +{{- end -}} + + +{{/* +Retrieve public key of certificate +*/}} +{{- define "common.resources.cert.publicKey" -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate "publicKey" true) -}} +{{ include "common.resources.cert" $values }} +{{- end -}} + + +{{/* +Retrieve private key of certificate +*/}} +{{- define "common.resources.cert.privateKey" -}} +{{- $values := (. | mustDeepCopy) -}} +{{- $_ := set $values "commonCertOptions" (dict "certKeyName" $values.ObjectValues.certHolder.certificate) -}} +{{ include "common.resources.cert" $values }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/resources/_certSecret.yaml b/scale-catalog-template/library/common/templates/lib/resources/_certSecret.yaml new file mode 100644 index 00000000..2409ae70 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/resources/_certSecret.yaml @@ -0,0 +1,25 @@ +{{- define "common.resources.cert.secret" -}} + + +{{- $secretName := include "common.names.fullname" . -}} + +{{- if .ObjectValues.certHolder -}} + {{- if hasKey .ObjectValues.certHolder "nameSuffix" -}} + {{- $secretName = printf "%v-%v" $secretName .ObjectValues.certHolder.nameSuffix -}} + {{ end -}} +{{ else }} + {{- $_ := set $ "ObjectValues" (dict "certHolder" .Values) -}} +{{ end -}} + +{{- if eq (include "common.resources.cert.available" $ ) "true" -}} +apiVersion: v1 +kind: Secret +metadata: + name: {{ $secretName }} + labels: {{ include "common.labels" . | nindent 4 }} +type: kubernetes.io/tls +data: + tls.crt: {{ (include "common.resources.cert.publicKey" $ ) | toString | b64enc | quote }} + tls.key: {{ (include "common.resources.cert.privateKey" $ ) | toString | b64enc | quote }} +{{- end -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/resources/_certs.tpl b/scale-catalog-template/library/common/templates/lib/resources/_certs.tpl new file mode 100644 index 00000000..91c525ab --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/resources/_certs.tpl @@ -0,0 +1,24 @@ +{{/* +Retrieve true/false if certificate is available in ixCertificates +*/}} +{{- define "common.resources.cert_present" -}} +{{- $values := . -}} +{{- hasKey $values.Values.ixCertificates ($values.commonCertOptions.certKeyName | toString) -}} +{{- end -}} + + +{{/* +Retrieve certificate from variable name +*/}} +{{- define "common.resources.cert" -}} +{{- $values := . -}} +{{- $certKey := ($values.commonCertOptions.certKeyName | toString) -}} +{{- if hasKey $values.Values.ixCertificates $certKey -}} +{{- $cert := get $values.Values.ixCertificates $certKey -}} +{{- if $values.commonCertOptions.publicKey -}} +{{ $cert.certificate }} +{{- else -}} +{{ $cert.privatekey }} +{{- end -}} +{{- end -}} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/resources/_portal_config.tpl b/scale-catalog-template/library/common/templates/lib/resources/_portal_config.tpl new file mode 100644 index 00000000..d92961a0 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/resources/_portal_config.tpl @@ -0,0 +1,64 @@ +{{- define "common.resources.portal" -}} + +{{- if .Values.portal }} +{{- if .Values.portal.enabled }} +{{- $host := "$node_ip" }} +{{- $port := 443 }} +{{- $protocol := "https" }} +{{- $portProtocol := "" }} + +{{- if hasKey .Values "ingress" }} + {{- if hasKey .Values.ingress "main" -}} + {{- if .Values.ingress.main.host }} + {{- $host = .Values.ingress.main.host }} + {{- else }} + {{- range .Values.ingress.main.hosts }} + {{- $host = ( .host | quote ) }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( .Values.portal.ingressPort ) ( ne $host "$node_ip" ) }} + {{- $port = .Values.portal.ingressPort }} +{{- else if and ( eq $host "$node_ip" ) ( hasKey .Values "services" ) }} + {{- if hasKey .Values.services "main" }} + {{- if and (hasKey .Values.services.main.port "nodePort" ) ( eq .Values.services.main.type "NodePort" ) }} + {{- $port = .Values.services.main.port.nodePort }} + {{- if or ( eq .Values.services.main.port.protocol "HTTP" ) ( eq .Values.services.main.port.protocol "HTTPS" ) }} + {{- $portProtocol = .Values.services.main.port.protocol }} + {{- end }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( $portProtocol ) ( eq $host "$node_ip" ) }} + {{- $protocol = $portProtocol }} +{{- else if and ( ne $host "$node_ip" ) }} + {{- if .Values.ingress.main.certType }} + {{- if eq .Values.ingress.main.certType "" }} + {{- $protocol = "http" }} + {{- end }} + {{- end }} +{{- end }} + +{{- if and ( .Values.portal.host ) ( eq $host "$node_ip" ) }} + {{- $host = .Values.portal.host }} +{{- end }} + +--- + +apiVersion: v1 +kind: ConfigMap +metadata: + name: portal + labels: {{ include "common.labels" . | nindent 4 }} +data: + protocol: {{ $protocol }} + host: {{ $host }} + port: {{ $port | quote }} + url: {{ printf "%v%v%v%v%v" $protocol "://" $host ":" $port }} + +{{- end }} +{{- end }} +{{- end -}} diff --git a/scale-catalog-template/library/common/templates/lib/storage/_mountPermissions.tpl b/scale-catalog-template/library/common/templates/lib/storage/_mountPermissions.tpl new file mode 100644 index 00000000..323d2a33 --- /dev/null +++ b/scale-catalog-template/library/common/templates/lib/storage/_mountPermissions.tpl @@ -0,0 +1,77 @@ +{{/* +This template serves as the blueprint for the mountPermissions job that is run +before chart installation. +*/}} +{{- define "common.storage.permissions" -}} +{{- if .Values.fixMountPermissions }} + + +{{- $jobName := include "common.names.fullname" . -}} +{{- $values := .Values -}} + + +{{- print "---" | nindent 0 -}} + +apiVersion: batch/v1 +kind: Job +metadata: + name: {{ $jobName }}-autopermissions + labels: + {{- include "common.labels" . | nindent 4 }} + annotations: + "helm.sh/hook": pre-install,pre-upgrade + "helm.sh/hook-weight": "-10" + "helm.sh/hook-delete-policy": hook-succeeded,hook-failed,before-hook-creation +spec: + template: + metadata: + spec: + restartPolicy: Never + containers: + - name: set-mount-permissions + image: "alpine:3.3" + command: + - /bin/sh + - -c + - | {{ range $index, $cs := .Values.customStorage}}{{ if and $cs.enabled $cs.setPermissions}} + chown -R {{ if eq $values.podSecurityContext.runAsNonRoot false }}{{ print $values.PUID }}{{ else }}{{ print $values.podSecurityContext.runAsUser }}{{ end }}:{{ print $values.podSecurityContext.fsGroup }} {{ print $cs.mountPath }}{{ end }}{{ end }} + #args: + # + #securityContext: + # + volumeMounts: + {{ range $name, $csm := .Values.customStorage }} + {{- if $csm.enabled -}} + {{- if $csm.setPermissions -}} + {{ if $csm.name }} + {{ $name = $csm.name }} + {{ end }} + - name: customstorage-{{ $name }} + mountPath: {{ $csm.mountPath }} + {{ if $csm.subPath }} + subPath: {{ $csm.subPath }} + {{ end }} + {{- end -}} + {{- end -}} + {{ end }} + volumes: + {{- range $name, $cs := .Values.customStorage -}} + {{ if $cs.enabled }} + {{ if $cs.setPermissions }} + {{ if $cs.name }} + {{ $name = $cs.name }} + {{ end }} + - name: customstorage-{{ $name }} + {{ if $cs.emptyDir }} + emptyDir: {} + {{- else -}} + hostPath: + path: {{ required "hostPath not set" $cs.hostPath }} + {{ end }} + {{ end }} + {{ end }} + {{- end -}} + + +{{- end }} +{{- end }} diff --git a/scale-catalog-template/library/common/values.yaml b/scale-catalog-template/library/common/values.yaml new file mode 100644 index 00000000..9b15e127 --- /dev/null +++ b/scale-catalog-template/library/common/values.yaml @@ -0,0 +1,314 @@ +# type: options are deployment, daemonset or statefulset +controllerType: deployment +# Set annotations on the deployment/statefulset/daemonset +controllerAnnotations: {} +# Set labels on the deployment/statefulset/daemonset +controllerLabels: {} + +replicas: 1 +strategy: + ## For Deployments, valid values are Recreate and RollingUpdate + ## For StatefulSets, valid values are OnDelete and RollingUpdate + ## DaemonSets ignore this + type: RollingUpdate + +# Override the default command +command: [] +# Override the default args +args: [] + +nameOverride: "" +fullnameOverride: "" + +# Set annotations on the pod +podAnnotations: {} + +serviceAccount: + # Specifies whether a service account should be created + create: false + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + +env: {} + # TZ: UTC + +## Variables with values set from templates, example +## With a release name of: demo, the example env value will be: demo-admin +envTpl: {} + # TEMPLATE_VALUE: "{{ .Release.Name }}-admin" + +## Variables with values from (for example) the Downward API +## See https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/ +envValueFrom: {} + # NODE_NAME: + # fieldRef: + # fieldPath: spec.nodeName + +envFrom: [] +# - configMapRef: +# name: config-map-name +# - secretRef: +# name: secret-name + +# Custom priority class for different treatment by the scheduler +# priorityClassName: system-node-critical + +# Allow specifying a custom scheduler name +# schedulerName: awkward-dangerous-scheduler + +# Allow specifying explicit hostname setting +# hostname: + +# When using hostNetwork make sure you set dnsPolicy to ClusterFirstWithHostNet +hostNetwork: false + +## Default get based on hostNetwork setting +# dnsPolicy: ClusterFirst + +# Optional DNS settings, configuring the ndots option may resolve +# nslookup issues on some Kubernetes setups. +# dnsConfig: +# options: +# - name: ndots +# value: "1" + +# Enable/disable the generation of environment variables for services. +# See https://kubernetes.io/docs/concepts/services-networking/connect-applications-service/#accessing-the-service +# for more information. +enableServiceLinks: true + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + fsGroupChangePolicy: "OnRootMismatch" + +# Configure the Security Context for the main container +securityContext: {} + + +initContainers: [] + +additionalContainers: [] + +## Probes configuration +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: false + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 5 + + readiness: + enabled: true + ## Set this to true if you wish to specify your own readinessProbe + custom: false + ## The spec field contains the values for the default readinessProbe. + ## If you selected custom: true, this field holds the definition of the readinessProbe. + spec: + initialDelaySeconds: 0 + periodSeconds: 10 + timeoutSeconds: 10 + failureThreshold: 5 + + startup: + enabled: true + ## Set this to true if you wish to specify your own startupProbe + custom: false + ## The spec field contains the values for the default startupProbe. + ## If you selected custom: true, this field holds the definition of the startupProbe. + spec: + initialDelaySeconds: 0 + timeoutSeconds: 10 + ## This means it has a maximum of 5*30=150 seconds to start up before it fails + periodSeconds: 10 + failureThreshold: 30 + +services: + main: + enabled: true + type: ClusterIP + ## Specify the default port information + port: + port: + ## name defaults to http + name: + protocol: TCP + ## Specify a service targetPort if you wish to differ the service port from the application port. + ## If targetPort is specified, this port number is used in the container definition instead of + ## service.port.port. Therefore named ports are not supported for this field. + targetPort: + ## Specify the nodePort value for the LoadBalancer and NodePort service types. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + ## + # nodePort: + additionalPorts: [] + + ## Provide any additional annotations which may be required. This can be used to + ## set the LoadBalancer service type to internal only. + ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer + ## + annotations: {} + labels: {} + +additionalServices: [] +# - enabled: false +# nameSuffix: api +# type: ClusterIP +# # Specify the default port information +# port: +# port: +# # name defaults to http +# name: +# protocol: TCP +# # targetPort defaults to http +# targetPort: +# # nodePort: +# additionalPorts: [] +# annotations: {} +# labels: {} + +# ingress: +# main: +# enabled: false +# # Used when including ingress using {{ include "common.ingress" . }} +# type: "HTTP" +# entrypoint: "websecure" +# certType: "" +# ## Optional: defaults to IngressName +# serviceName: "" +# ## Optional: Almost never needed +# serviceKind: "" +# ## Optional: defaults to either service port +# servicePort: 80 +# annotations: {} +# # kubernetes.io/ingress.class: nginx +# # kubernetes.io/tls-acme: "true" +# labels: {} +# hosts: +# - host: chart-example.local +# path: / +# additionalIngresses: [] +# - enabled: false +# nameSuffix: "api" +# annotations: {} +# # kubernetes.io/ingress.class: nginx +# # kubernetes.io/tls-acme: "true" +# labels: {} +# hosts: +# - host: chart-example.local +# paths: +# - path: /api +# # Ignored if not kubeVersion >= 1.14-0 +# pathType: Prefix +# tls: [] +# # - secretName: chart-example-tls +# # hosts: +# # - chart-example.local + +persistence: + config: + enabled: false + mountPath: /config + ## configuration data Persistent Volume Storage Class + ## If defined, storageClassName: + ## If set to "-", storageClassName: "", which disables dynamic provisioning + ## If undefined (the default) or set to null, no storageClassName spec is + ## set, choosing the default provisioner. (gp2 on AWS, standard on + ## GKE, AWS & OpenStack) + ## + # storageClass: "-" + ## + ## If you want to reuse an existing claim, you can pass the name of the PVC using + ## the existingClaim variable + # existingClaim: your-claim + # subPath: some-subpath + accessMode: ReadWriteOnce + size: 1Gi + ## Set to true to retain the PVC upon helm uninstall + skipuninstall: false + + # Create an emptyDir volume to share between all containers + shared: + enabled: false + emptyDir: true + mountPath: /shared + +additionalVolumes: [] + +additionalVolumeMounts: [] + +volumeClaimTemplates: [] +# Used in statefulset to create individual disks for each instance +# - name: data +# mountPath: /data +# accessMode: "ReadWriteOnce" +# size: 1Gi +# - name: backup +# mountPath: /backup +# subPath: theSubPath +# accessMode: "ReadWriteOnce" +# size: 2Gi +# storageClass: cheap-storage-class + +nodeSelector: {} + +affinity: {} + +tolerations: [] + +hostAliases: [] +# Use hostAliases to add custom entries to /etc/hosts - mapping IP addresses to hostnames. +# ref: https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/ +# - ip: "192.168.1.100" +# hostnames: +# - "example.com" +# - "www.example.com" + +resources: {} +# We usually recommend not to specify default resources and to leave this as a conscious +# choice for the user. This also increases chances charts run on environments with little +# resources, such as Minikube. If you do want to specify resources, uncomment the following +# lines, adjust them as necessary, and remove the curly braces after 'resources:'. +# limits: +# cpu: 100m +# memory: 128Mi +# requests: +# cpu: 100m +# memory: 128Mi + +## TrueCharts Specific + +PUID: 568 +PGID: 568 +UMASK: "002" +fixMountPermissions: true + +# deviceMounts: +# config: +# enabled: false +# emptyDir: false +# hostPath: "/config" +# setPermissions: true + +# customStorage: +# - name: "data" +# enabled: false +# emptyDir: false +# mountPath: "/data" +# subPath: some-subpath +# hostPath: "" +# readOnly: false +# setPermissions: true diff --git a/scale-catalog-template/stable/jackett/3.1.5/CONFIG.md b/scale-catalog-template/stable/jackett/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/stable/jackett/3.1.5/Chart.lock b/scale-catalog-template/stable/jackett/3.1.5/Chart.lock new file mode 100644 index 00000000..a225c6db --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:38.578257131Z" diff --git a/scale-catalog-template/stable/jackett/3.1.5/Chart.yaml b/scale-catalog-template/stable/jackett/3.1.5/Chart.yaml new file mode 100644 index 00000000..e29da188 --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/Chart.yaml @@ -0,0 +1,33 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: jackett +version: 3.1.5 +upstream_version: 7.0.1 +appVersion: "auto" +description: API Support for your favorite torrent trackers. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/stable/jackett +icon: https://truecharts.org/_static/img/jackett-icon.png +keywords: + - jackett + - torrent + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/stable/jackett + - https://github.com/k8s-at-home/charts/tree/master/charts/jackett + - https://github.com/Jackett/Jackett + - https://hub.docker.com/r/linuxserver/jackett +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/stable/jackett/3.1.5/README.md b/scale-catalog-template/stable/jackett/3.1.5/README.md new file mode 100644 index 00000000..88c3c913 --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +API Support for your favorite torrent trackers. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `jackett` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `jackett` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/stable/jackett/3.1.5/app-readme.md b/scale-catalog-template/stable/jackett/3.1.5/app-readme.md new file mode 100644 index 00000000..7e8f54af --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +API Support for your favorite torrent trackers. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +API Support for your favorite torrent trackers. diff --git a/scale-catalog-template/stable/jackett/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/stable/jackett/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/stable/jackett/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/stable/jackett/3.1.5/ix_values.yaml b/scale-catalog-template/stable/jackett/3.1.5/ix_values.yaml new file mode 100644 index 00000000..99acca3a --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/jackett + pullPolicy: IfNotPresent + tag: v0.17.1011 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/stable/jackett/3.1.5/questions.yaml b/scale-catalog-template/stable/jackett/3.1.5/questions.yaml new file mode 100644 index 00000000..6de48d7f --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/questions.yaml @@ -0,0 +1,434 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 9117 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9117 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36009 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/stable/jackett/3.1.5/templates/common.yaml b/scale-catalog-template/stable/jackett/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/stable/jackett/3.1.5/test_values.yaml b/scale-catalog-template/stable/jackett/3.1.5/test_values.yaml new file mode 100644 index 00000000..77ee8243 --- /dev/null +++ b/scale-catalog-template/stable/jackett/3.1.5/test_values.yaml @@ -0,0 +1,46 @@ +# Default values for Jackett. + +image: + repository: ghcr.io/truecharts/jackett + pullPolicy: IfNotPresent + tag: v0.17.1011 + +strategy: + type: Recreate + + +services: + main: + enabled: true + port: + port: 9117 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + + +## TrueCharts Values + +ingress: + main: + enabled: true + # Used when including ingress using {{ include "common.ingress" . }} + type: "HTTP" + entrypoint: "websecure" + certType: "" + annotations: {} + hosts: + - host: chart-example.local + path: / diff --git a/scale-catalog-template/stable/jackett/3.1.5/values.yaml b/scale-catalog-template/stable/jackett/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/stable/jackett/item.yaml b/scale-catalog-template/stable/jackett/item.yaml new file mode 100644 index 00000000..8d747307 --- /dev/null +++ b/scale-catalog-template/stable/jackett/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://truecharts.org/_static/img/jackett-icon.png diff --git a/scale-catalog-template/test/appdaemon/0.1.3/CONFIG.md b/scale-catalog-template/test/appdaemon/0.1.3/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/appdaemon/0.1.3/Chart.lock b/scale-catalog-template/test/appdaemon/0.1.3/Chart.lock new file mode 100644 index 00000000..acfc21b3 --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:46.438162658Z" diff --git a/scale-catalog-template/test/appdaemon/0.1.3/Chart.yaml b/scale-catalog-template/test/appdaemon/0.1.3/Chart.yaml new file mode 100644 index 00000000..b542ea4e --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: appdaemon +version: 0.1.3 +appVersion: v4.0.8 +description: AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/appdaemon +icon: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/icon.png?raw=true +keywords: + - appdaemon + - homeautomation +sources: + - https://github.com/AppDaemon/appdaemon +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/scale-catalog-template/test/appdaemon/0.1.3/README.md b/scale-catalog-template/test/appdaemon/0.1.3/README.md new file mode 100644 index 00000000..ac652fbf --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/README.md @@ -0,0 +1,53 @@ +# Introduction + +![Version: 0.1.3](https://img.shields.io/badge/Version-0.1.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: v4.0.8](https://img.shields.io/badge/AppVersion-v4.0.8-informational?style=flat-square) + +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `appdaemon` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `appdaemon` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/appdaemon/0.1.3/app-readme.md b/scale-catalog-template/test/appdaemon/0.1.3/app-readme.md new file mode 100644 index 00000000..b948120c --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/app-readme.md @@ -0,0 +1,3 @@ +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +AppDaemon is a loosely coupled, multithreaded, sandboxed python execution environment for writing automation apps for Home Assistant home automation software. It also provides a configurable dashboard (HADashboard) suitable for wall mounted tablets. diff --git a/scale-catalog-template/test/appdaemon/0.1.3/charts/common-3.5.5.tgz b/scale-catalog-template/test/appdaemon/0.1.3/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/appdaemon/0.1.3/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/appdaemon/0.1.3/ix_values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/ix_values.yaml new file mode 100644 index 00000000..ef02d27c --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: acockburn/appdaemon + pullPolicy: IfNotPresent + tag: "4.0.8" + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/appdaemon/0.1.3/questions.yaml b/scale-catalog-template/test/appdaemon/0.1.3/questions.yaml new file mode 100644 index 00000000..eae94631 --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/questions.yaml @@ -0,0 +1,431 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: HA_URL + label: "HA URL" + description: "Your HomeAssistant URL" + schema: + type: string + default: "" + required: true + - variable: TOKEN + label: "HA Token" + description: "Your HomeAssistant Token" + schema: + type: string + default: "" + required: true + - variable: DASH_URL + label: "Dashboard URL" + description: "URL of your appdaemon dashboard" + schema: + type: string + default: "" + required: true + - variable: LATITUDE + label: "Latitude" + description: "Latitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + - variable: LONGITUDE + label: "Longitude" + description: "Longitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + - variable: ELEVATION + label: "Elevation" + description: "Longitude of your home assistant instance" + schema: + type: int + default: 0 + required: true + + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5050 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51050 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36052 + required: true +## TrueCharts Specific + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "selfsigned" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/appdaemon/0.1.3/templates/common.yaml b/scale-catalog-template/test/appdaemon/0.1.3/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/appdaemon/0.1.3/test_values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/test_values.yaml new file mode 100644 index 00000000..031febf0 --- /dev/null +++ b/scale-catalog-template/test/appdaemon/0.1.3/test_values.yaml @@ -0,0 +1,40 @@ +image: + repository: ghcr.io/truecharts/appdaemon + pullPolicy: IfNotPresent + tag: "v4.0.8" + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + +timezone: "America/Chicago" + +env: + LATITUDE: 46 + LONGITUDE: -94 + ELEVATION: 1217 + DASH_URL: "http://0.0.0.0:5050" + +services: + main: + port: + port: 5050 + tcp: + enabled: true + type: ClusterIP + port: + port: 51050 + protocol: TCP + targetPort: 51050 + +customStorage: + - name: config + enabled: true + mountPath: /conf + emptyDir: true diff --git a/scale-catalog-template/test/appdaemon/0.1.3/values.yaml b/scale-catalog-template/test/appdaemon/0.1.3/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/appdaemon/item.yaml b/scale-catalog-template/test/appdaemon/item.yaml new file mode 100644 index 00000000..4f0aa859 --- /dev/null +++ b/scale-catalog-template/test/appdaemon/item.yaml @@ -0,0 +1,3 @@ +categories: + - utilities +icon_url: https://github.com/hassio-addons/addon-appdaemon/blob/main/appdaemon/logo.png?raw=true diff --git a/scale-catalog-template/test/bazarr/3.1.5/CONFIG.md b/scale-catalog-template/test/bazarr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/bazarr/3.1.5/Chart.lock b/scale-catalog-template/test/bazarr/3.1.5/Chart.lock new file mode 100644 index 00000000..ecc7d8d0 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:46.949866373Z" diff --git a/scale-catalog-template/test/bazarr/3.1.5/Chart.yaml b/scale-catalog-template/test/bazarr/3.1.5/Chart.yaml new file mode 100644 index 00000000..0737efb2 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/Chart.yaml @@ -0,0 +1,36 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: bazarr +version: 3.1.5 +upstream_version: 5.2.1 +appVersion: "auto" +description: Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/bazarr +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png +keywords: + - bazarr + - radarr + - bazarr + - subtitles + - usenet + - torrent +sources: + - https://github.com/truecharts/apps/tree/master/incubator/bazarr + - https://github.com/k8s-at-home/charts/tree/master/charts/bazarr + - https://github.com/Bazarr/Bazarr + - https://hub.docker.com/r/linuxserver/bazarr +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/bazarr/3.1.5/README.md b/scale-catalog-template/test/bazarr/3.1.5/README.md new file mode 100644 index 00000000..97a3c184 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `bazarr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `bazarr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/bazarr/3.1.5/app-readme.md b/scale-catalog-template/test/bazarr/3.1.5/app-readme.md new file mode 100644 index 00000000..2d112915 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Bazarr is a companion application to Bazarr and Radarr. It manages and downloads subtitles based on your requirements diff --git a/scale-catalog-template/test/bazarr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/bazarr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/bazarr/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/bazarr/3.1.5/ix_values.yaml b/scale-catalog-template/test/bazarr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..e6a02921 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/bazarr + pullPolicy: IfNotPresent + tag: v0.9.3-beta.9 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/bazarr/3.1.5/questions.yaml b/scale-catalog-template/test/bazarr/3.1.5/questions.yaml new file mode 100644 index 00000000..3ed15945 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 6767 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 6767 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36025 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/bazarr/3.1.5/templates/common.yaml b/scale-catalog-template/test/bazarr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/bazarr/3.1.5/test_values.yaml b/scale-catalog-template/test/bazarr/3.1.5/test_values.yaml new file mode 100644 index 00000000..6994e190 --- /dev/null +++ b/scale-catalog-template/test/bazarr/3.1.5/test_values.yaml @@ -0,0 +1,28 @@ +# Default values for Bazarr. + +image: + repository: ghcr.io/truecharts/bazarr + pullPolicy: IfNotPresent + tag: v0.9.3-beta.9 + +strategy: + type: Recreate + +services: + main: + port: + port: 6767 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/bazarr/3.1.5/values.yaml b/scale-catalog-template/test/bazarr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/bazarr/item.yaml b/scale-catalog-template/test/bazarr/item.yaml new file mode 100644 index 00000000..06f251b3 --- /dev/null +++ b/scale-catalog-template/test/bazarr/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/bazarr.png diff --git a/scale-catalog-template/test/calibre-web/3.1.5/CONFIG.md b/scale-catalog-template/test/calibre-web/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/calibre-web/3.1.5/Chart.lock b/scale-catalog-template/test/calibre-web/3.1.5/Chart.lock new file mode 100644 index 00000000..dcf93a0d --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:47.41843612Z" diff --git a/scale-catalog-template/test/calibre-web/3.1.5/Chart.yaml b/scale-catalog-template/test/calibre-web/3.1.5/Chart.yaml new file mode 100644 index 00000000..aa7b65d1 --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: calibre-web +version: 3.1.5 +upstream_version: 4.3.1 +appVersion: "auto" +description: Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/calibre-web +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png +keywords: + - calibre-web + - calibre + - ebook +sources: + - https://github.com/truecharts/apps/tree/master/incubator/calibre-web + - https://github.com/k8s-at-home/charts/tree/master/charts/calibre-web + - https://hub.docker.com/r/linuxserver/calibre-web/ + - https://github.com/janeczku/calibre-web +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/calibre-web/3.1.5/README.md b/scale-catalog-template/test/calibre-web/3.1.5/README.md new file mode 100644 index 00000000..f0442d6f --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `calibre-web` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `calibre-web` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/calibre-web/3.1.5/app-readme.md b/scale-catalog-template/test/calibre-web/3.1.5/app-readme.md new file mode 100644 index 00000000..6c20a1a3 --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Calibre-Web is a web app providing a clean interface for browsing, reading and downloading eBooks using an existing Calibre database. diff --git a/scale-catalog-template/test/calibre-web/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/calibre-web/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/calibre-web/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/calibre-web/3.1.5/ix_values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/ix_values.yaml new file mode 100644 index 00000000..5e42c4a5 --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/calibre-web + pullPolicy: IfNotPresent + tag: version-0.6.11 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/calibre-web/3.1.5/questions.yaml b/scale-catalog-template/test/calibre-web/3.1.5/questions.yaml new file mode 100644 index 00000000..9039761f --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/questions.yaml @@ -0,0 +1,449 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8083 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8083 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36015 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/calibre-web/3.1.5/templates/common.yaml b/scale-catalog-template/test/calibre-web/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/calibre-web/3.1.5/test_values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/test_values.yaml new file mode 100644 index 00000000..5e2636af --- /dev/null +++ b/scale-catalog-template/test/calibre-web/3.1.5/test_values.yaml @@ -0,0 +1,37 @@ +# Default values for Calibre-Web. + +image: + repository: linuxserver/calibre-web + pullPolicy: IfNotPresent + tag: version-0.6.11 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8083 + +env: {} + # TZ: + # PUID: + # PGID: + # UMASK: + # DOCKER_MODS: + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/calibre-web/3.1.5/values.yaml b/scale-catalog-template/test/calibre-web/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/calibre-web/item.yaml b/scale-catalog-template/test/calibre-web/item.yaml new file mode 100644 index 00000000..73a1a5a7 --- /dev/null +++ b/scale-catalog-template/test/calibre-web/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/calibre-web-icon.png diff --git a/scale-catalog-template/test/deluge/3.1.5/CONFIG.md b/scale-catalog-template/test/deluge/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/deluge/3.1.5/Chart.lock b/scale-catalog-template/test/deluge/3.1.5/Chart.lock new file mode 100644 index 00000000..319c29a1 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:47.885553069Z" diff --git a/scale-catalog-template/test/deluge/3.1.5/Chart.yaml b/scale-catalog-template/test/deluge/3.1.5/Chart.yaml new file mode 100644 index 00000000..d2f93d61 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: deluge +version: 3.1.5 +# upstream_version: +appVersion: "auto" +description: Deluge App for TrueNAS SCALE +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/deluge +icon: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200 +keywords: + - transmission + - torrent + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/deluge + - https://github.com/deluge-torrent/deluge +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/deluge/3.1.5/README.md b/scale-catalog-template/test/deluge/3.1.5/README.md new file mode 100644 index 00000000..bfcbb4e5 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Deluge App for TrueNAS SCALE + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `deluge` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `deluge` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/deluge/3.1.5/app-readme.md b/scale-catalog-template/test/deluge/3.1.5/app-readme.md new file mode 100644 index 00000000..0bce0f81 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Deluge App for TrueNAS SCALE +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Deluge App for TrueNAS SCALE diff --git a/scale-catalog-template/test/deluge/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/deluge/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/deluge/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/deluge/3.1.5/ix_values.yaml b/scale-catalog-template/test/deluge/3.1.5/ix_values.yaml new file mode 100644 index 00000000..14051dce --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/deluge + pullPolicy: IfNotPresent + tag: version-2.0.3-2201906121747ubuntu18.04.1 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/deluge/3.1.5/questions.yaml b/scale-catalog-template/test/deluge/3.1.5/questions.yaml new file mode 100644 index 00000000..d4db5c6e --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/questions.yaml @@ -0,0 +1,571 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: +## Portal Button + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true +## Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" +## Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Australia/Hobart" + $ref: + - "definitions/timezone" + +## Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string +## Enable Host Network + - variable: hostNetwork + group: "Networking" + label: "Enable Host Network" + schema: + type: boolean + default: false + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8112 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8112 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36026 + required: true + - variable: tcp + label: "" + description: "TCP port for Torrent Connections" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable TCP port for Torrent Connections" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: name + label: "port name" + schema: + type: string + default: "torrent-tcp" + hidden: true + - variable: protocol + label: "Protocol" + schema: + type: string + default: "TCP" + hidden: true + - variable: port + label: "container port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: targetport + label: "container targetport" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "Node Port to expose" + schema: + type: int + min: 9000 + max: 65535 + default: 51413 + required: false + - variable: udp + label: "" + description: "UDP port for Torrent Connections" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable UDP port for Torrent Connections" + schema: + type: boolean + default: true + hidden: true + - variable: type + label: "Service type" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: name + label: "port name" + schema: + type: string + default: "torrent-udp" + hidden: true + - variable: protocol + label: "Protocol" + schema: + type: string + default: "UDP" + hidden: true + - variable: port + label: "container port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: targetport + label: "container targetport" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "Node Port to expose" + schema: + type: int + min: 9000 + max: 65535 + default: 51413 + required: false + +## Ingres + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/deluge/3.1.5/templates/common.yaml b/scale-catalog-template/test/deluge/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/deluge/3.1.5/test_values.yaml b/scale-catalog-template/test/deluge/3.1.5/test_values.yaml new file mode 100644 index 00000000..127213f2 --- /dev/null +++ b/scale-catalog-template/test/deluge/3.1.5/test_values.yaml @@ -0,0 +1,44 @@ +# Default values for deluge. + +image: + repository: linuxserver/deluge + pullPolicy: IfNotPresent + tag: version-2.0.3-2201906121747ubuntu18.04.1 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8112 + tcp: + enabled: true + type: ClusterIP + port: + port: 51413 + protocol: TCP + targetPort: 51413 + udp: + enabled: true + type: ClusterIP + port: + port: 51413 + protocol: UDP + targetPort: 51413 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/deluge/3.1.5/values.yaml b/scale-catalog-template/test/deluge/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/deluge/item.yaml b/scale-catalog-template/test/deluge/item.yaml new file mode 100644 index 00000000..0a1a793e --- /dev/null +++ b/scale-catalog-template/test/deluge/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars2.githubusercontent.com/u/6733935?v=3&s=200 diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/CONFIG.md b/scale-catalog-template/test/fireflyiii/1.0.1/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/Chart.lock b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.lock new file mode 100644 index 00000000..49f381fc --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.lock @@ -0,0 +1,9 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +- name: postgresql + repository: https://charts.bitnami.com/bitnami + version: 10.4.2 +digest: sha256:feb1c5155f10c340b5a984ce39eb7c532c938ac71287bfa65398ef3fe458c902 +generated: "2021-05-06T13:29:51.104635038Z" diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/Chart.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.yaml new file mode 100644 index 00000000..9ece33f5 --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: fireflyiii +version: 1.0.1 +appVersion: "auto" +description: A free and open source personal finance manager +type: application +deprecated: false +home: https://github.com/firefly-iii/firefly-iii/ +icon: https://www.firefly-iii.org/assets/logo/color.png +keywords: + - fireflyiii + - finacial +sources: + - https://github.com/firefly-iii/firefly-iii/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + - name: postgresql + version: 10.4.2 + repository: https://charts.bitnami.com/bitnami + condition: postgresql.enabled +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/README.md b/scale-catalog-template/test/fireflyiii/1.0.1/README.md new file mode 100644 index 00000000..8e87f22a --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 1.0.1](https://img.shields.io/badge/Version-1.0.1-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +A free and open source personal finance manager + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.bitnami.com/bitnami | postgresql | 10.4.2 | +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `fireflyiii` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `fireflyiii` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/app-readme.md b/scale-catalog-template/test/fireflyiii/1.0.1/app-readme.md new file mode 100644 index 00000000..15307675 --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/app-readme.md @@ -0,0 +1,3 @@ +A free and open source personal finance manager +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A free and open source personal finance manager diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz b/scale-catalog-template/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/fireflyiii/1.0.1/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz b/scale-catalog-template/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz new file mode 100644 index 00000000..1067fe42 Binary files /dev/null and b/scale-catalog-template/test/fireflyiii/1.0.1/charts/postgresql-10.4.2.tgz differ diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/ix_values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/ix_values.yaml new file mode 100644 index 00000000..ee3a8213 --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/ix_values.yaml @@ -0,0 +1,41 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: jc5x/firefly-iii + pullPolicy: IfNotPresent + tag: latest + +env: + DB_USERNAME: fireflyiii + DB_DATABASE: fireflyiii + DB_CONNECTION: pgsql + DB_PORT: 5432 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: postgresql_host + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +# Enabled postgres +# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql +postgresql: + enabled: true + postgresqlUsername: fireflyiii + postgresqlDatabase: fireflyiii + existingSecret: dbcreds + persistence: + enabled: true + existingClaim: db +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/questions.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/questions.yaml new file mode 100644 index 00000000..f2ebe1aa --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/questions.yaml @@ -0,0 +1,562 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: APP_KEY + label: "App Key" + description: "Your unique 32 application character key" + schema: + type: string + default: "" + required: true + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36048 + required: true + +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: db + label: "Database Storage" + description: "Stores the Application database." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: nameOverride + label: "Override PVC Name (advanced)" + description: "Forces a certain name for the PVC" + schema: + type: string + default: "db" + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: dbbackup + label: "Database Backup Storage" + description: "Stores the Application database backups." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 0 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 0 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/templates/common.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/templates/common.yaml new file mode 100644 index 00000000..64e027ac --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/templates/common.yaml @@ -0,0 +1,5 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/templates/secrets.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/templates/secrets.yaml new file mode 100644 index 00000000..2227b0eb --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/templates/secrets.yaml @@ -0,0 +1,21 @@ +apiVersion: v1 +kind: Secret +metadata: + labels: + {{- include "common.labels" . | nindent 4 }} + name: dbcreds +{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }} +{{- $dbPass := "" }} +data: +{{- if $previous }} + {{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }} + postgresql-password: {{ ( index $previous.data "postgresql-password" ) }} + postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }} +{{- else }} + {{- $dbPass = randAlphaNum 50 }} + postgresql-password: {{ $dbPass | b64enc | quote }} + postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }} +{{- end }} + url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }} + postgresql_host: {{ ( printf "%v-%v" .Release.Name "postgresql" ) | b64enc | quote }} +type: Opaque diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/test_values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/test_values.yaml new file mode 100644 index 00000000..7c5ca267 --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/1.0.1/test_values.yaml @@ -0,0 +1,78 @@ +# Default values for Bitwarden. + +image: + repository: jc5x/firefly-iii + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 51080 + protocol: TCP + targetPort: 51080 + +env: + DB_USERNAME: firefly + DB_DATABASE: firefly + DB_CONNECTION: pgsql + DB_PORT: 5432 + APP_Key: AGcfkCUS233ZWmBXztYbdyCs2u7kkz55 + +envValueFrom: + DB_HOST: + secretKeyRef: + name: dbcreds + key: url + DB_PASSWORD: + secretKeyRef: + name: dbcreds + key: postgresql-password + +persistence: + data: + enabled: true + mountPath: "/var/www/html/storage/upload" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + db: + nameOverride: "db" + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + dbbackup: + enabled: true + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + + +# Enabled postgres +# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql +postgresql: + enabled: true + postgresqlUsername: firefly + postgresqlDatabase: firefly + existingSecret: dbcreds + persistence: + enabled: false + existingClaim: db diff --git a/scale-catalog-template/test/fireflyiii/1.0.1/values.yaml b/scale-catalog-template/test/fireflyiii/1.0.1/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/fireflyiii/item.yaml b/scale-catalog-template/test/fireflyiii/item.yaml new file mode 100644 index 00000000..1cbbc68a --- /dev/null +++ b/scale-catalog-template/test/fireflyiii/item.yaml @@ -0,0 +1,3 @@ +categories: + - finacial +icon_url: https://www.firefly-iii.org/assets/logo/color.png diff --git a/scale-catalog-template/test/freshrss/3.1.5/CONFIG.md b/scale-catalog-template/test/freshrss/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/freshrss/3.1.5/Chart.lock b/scale-catalog-template/test/freshrss/3.1.5/Chart.lock new file mode 100644 index 00000000..0d2e642f --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:54.451281697Z" diff --git a/scale-catalog-template/test/freshrss/3.1.5/Chart.yaml b/scale-catalog-template/test/freshrss/3.1.5/Chart.yaml new file mode 100644 index 00000000..89a2f7d6 --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: freshrss +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: FreshRSS is a self-hosted RSS feed aggregator +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/freshrss +icon: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true +keywords: + - freshrss + - rss +sources: + - https://github.com/truecharts/apps/tree/master/incubator/freshrss + - https://github.com/k8s-at-home/charts/tree/master/charts/freshrss + - https://github.com/FreshRSS/FreshRSS + - https://hub.docker.com/r/linuxserver/freshrss +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/freshrss/3.1.5/README.md b/scale-catalog-template/test/freshrss/3.1.5/README.md new file mode 100644 index 00000000..b8d65a65 --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +FreshRSS is a self-hosted RSS feed aggregator + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `freshrss` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `freshrss` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/freshrss/3.1.5/app-readme.md b/scale-catalog-template/test/freshrss/3.1.5/app-readme.md new file mode 100644 index 00000000..7d8a844b --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +FreshRSS is a self-hosted RSS feed aggregator +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +FreshRSS is a self-hosted RSS feed aggregator diff --git a/scale-catalog-template/test/freshrss/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/freshrss/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/freshrss/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/freshrss/3.1.5/ix_values.yaml b/scale-catalog-template/test/freshrss/3.1.5/ix_values.yaml new file mode 100644 index 00000000..9de79c78 --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/freshrss + pullPolicy: IfNotPresent + tag: version-1.18.0 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/freshrss/3.1.5/questions.yaml b/scale-catalog-template/test/freshrss/3.1.5/questions.yaml new file mode 100644 index 00000000..ffb0a95d --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/questions.yaml @@ -0,0 +1,451 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36029 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/freshrss/3.1.5/templates/common.yaml b/scale-catalog-template/test/freshrss/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/freshrss/3.1.5/test_values.yaml b/scale-catalog-template/test/freshrss/3.1.5/test_values.yaml new file mode 100644 index 00000000..4c31242e --- /dev/null +++ b/scale-catalog-template/test/freshrss/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for FreshRSS. + +image: + repository: linuxserver/freshrss + pullPolicy: IfNotPresent + tag: version-1.18.0 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/freshrss/3.1.5/values.yaml b/scale-catalog-template/test/freshrss/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/freshrss/item.yaml b/scale-catalog-template/test/freshrss/item.yaml new file mode 100644 index 00000000..b77c41d4 --- /dev/null +++ b/scale-catalog-template/test/freshrss/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/FreshRSS/FreshRSS/blob/master/docs/img/FreshRSS-logo.png?raw=true diff --git a/scale-catalog-template/test/gaps/3.1.5/CONFIG.md b/scale-catalog-template/test/gaps/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/gaps/3.1.5/Chart.lock b/scale-catalog-template/test/gaps/3.1.5/Chart.lock new file mode 100644 index 00000000..f4952b7c --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:54.917308943Z" diff --git a/scale-catalog-template/test/gaps/3.1.5/Chart.yaml b/scale-catalog-template/test/gaps/3.1.5/Chart.yaml new file mode 100644 index 00000000..8e4a8f97 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: gaps +version: 3.1.5 +upstream_version: 1.1.1 +appVersion: "auto" +description: Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/gaps +icon: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png +keywords: + - gaps + - plex + - plex-media-server +sources: + - https://github.com/truecharts/apps/tree/master/incubator/gaps + - https://github.com/k8s-at-home/charts/tree/master/charts/gaps + - https://github.com/JasonHHouse/gaps +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/gaps/3.1.5/README.md b/scale-catalog-template/test/gaps/3.1.5/README.md new file mode 100644 index 00000000..c5ab0643 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `gaps` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `gaps` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/gaps/3.1.5/app-readme.md b/scale-catalog-template/test/gaps/3.1.5/app-readme.md new file mode 100644 index 00000000..25aa9e69 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Gaps searches through your Plex Server or local folders for all movies, then queries for known movies in the same collection. diff --git a/scale-catalog-template/test/gaps/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/gaps/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/gaps/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/gaps/3.1.5/ix_values.yaml b/scale-catalog-template/test/gaps/3.1.5/ix_values.yaml new file mode 100644 index 00000000..d1117766 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: housewrecker/gaps + pullPolicy: IfNotPresent + tag: v0.8.8 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/gaps/3.1.5/questions.yaml b/scale-catalog-template/test/gaps/3.1.5/questions.yaml new file mode 100644 index 00000000..7447b505 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/questions.yaml @@ -0,0 +1,437 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8484 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8484 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36030 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/usr/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/gaps/3.1.5/templates/common.yaml b/scale-catalog-template/test/gaps/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/gaps/3.1.5/test_values.yaml b/scale-catalog-template/test/gaps/3.1.5/test_values.yaml new file mode 100644 index 00000000..ed003b80 --- /dev/null +++ b/scale-catalog-template/test/gaps/3.1.5/test_values.yaml @@ -0,0 +1,26 @@ +# Default values for Gaps. + +image: + repository: housewrecker/gaps + pullPolicy: IfNotPresent + tag: v0.8.8 + +strategy: + type: Recreate + +services: + main: + port: + port: 8484 + +env: {} + # TZ: UTC + +persistence: + data: + enabled: true + mountPath: "/usr/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/gaps/3.1.5/values.yaml b/scale-catalog-template/test/gaps/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/gaps/item.yaml b/scale-catalog-template/test/gaps/item.yaml new file mode 100644 index 00000000..5fe657ea --- /dev/null +++ b/scale-catalog-template/test/gaps/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/JasonHHouse/gaps/master/images/Final-Black.png diff --git a/scale-catalog-template/test/grocy/3.1.5/CONFIG.md b/scale-catalog-template/test/grocy/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/grocy/3.1.5/Chart.lock b/scale-catalog-template/test/grocy/3.1.5/Chart.lock new file mode 100644 index 00000000..68e5cfd9 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:55.353851311Z" diff --git a/scale-catalog-template/test/grocy/3.1.5/Chart.yaml b/scale-catalog-template/test/grocy/3.1.5/Chart.yaml new file mode 100644 index 00000000..c0b86fc5 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: grocy +version: 3.1.5 +upstream_version: 4.3.1 +appVersion: "auto" +description: ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/grocy +icon: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png +keywords: + - grocy +sources: + - https://github.com/truecharts/apps/tree/master/incubator/grocy + - https://github.com/k8s-at-home/charts/tree/master/charts/grocy + - https://github.com/grocy/grocy +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/grocy/3.1.5/README.md b/scale-catalog-template/test/grocy/3.1.5/README.md new file mode 100644 index 00000000..48ea0db9 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `grocy` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `grocy` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/grocy/3.1.5/app-readme.md b/scale-catalog-template/test/grocy/3.1.5/app-readme.md new file mode 100644 index 00000000..e0fe6314 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +ERP beyond your fridge - grocy is a web-based self-hosted groceries & household management solution for your home diff --git a/scale-catalog-template/test/grocy/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/grocy/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/grocy/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/grocy/3.1.5/ix_values.yaml b/scale-catalog-template/test/grocy/3.1.5/ix_values.yaml new file mode 100644 index 00000000..06ee1e3d --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/grocy + tag: version-v2.7.1 + pullPolicy: IfNotPresent + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/grocy/3.1.5/questions.yaml b/scale-catalog-template/test/grocy/3.1.5/questions.yaml new file mode 100644 index 00000000..a0354443 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/questions.yaml @@ -0,0 +1,449 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36031 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/grocy/3.1.5/templates/common.yaml b/scale-catalog-template/test/grocy/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/grocy/3.1.5/test_values.yaml b/scale-catalog-template/test/grocy/3.1.5/test_values.yaml new file mode 100644 index 00000000..a6a2a176 --- /dev/null +++ b/scale-catalog-template/test/grocy/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for grocy. + +image: + repository: linuxserver/grocy + tag: version-v2.7.1 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: + # PUID: + # PGID: + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/grocy/3.1.5/values.yaml b/scale-catalog-template/test/grocy/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/grocy/item.yaml b/scale-catalog-template/test/grocy/item.yaml new file mode 100644 index 00000000..fccd77cd --- /dev/null +++ b/scale-catalog-template/test/grocy/item.yaml @@ -0,0 +1,3 @@ +categories: + - Home-Automation +icon_url: https://github.com/grocy/grocy/raw/master/public/img/appicons/mstile-150x150.png diff --git a/scale-catalog-template/test/heimdall/3.1.5/CONFIG.md b/scale-catalog-template/test/heimdall/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/heimdall/3.1.5/Chart.lock b/scale-catalog-template/test/heimdall/3.1.5/Chart.lock new file mode 100644 index 00000000..cacfa930 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:55.828605151Z" diff --git a/scale-catalog-template/test/heimdall/3.1.5/Chart.yaml b/scale-catalog-template/test/heimdall/3.1.5/Chart.yaml new file mode 100644 index 00000000..518e04c3 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/Chart.yaml @@ -0,0 +1,26 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: heimdall +version: 3.1.5 +upstream_version: 4.1.1 +appVersion: "auto" +description: An Application dashboard and launcher +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/heimdall +icon: https://i.imgur.com/mM4tcO5.png +keywords: + - heimdall +sources: + - https://github.com/truecharts/apps/tree/master/incubator/heimdall + - https://github.com/k8s-at-home/charts/tree/master/charts/heimdall +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/heimdall/3.1.5/README.md b/scale-catalog-template/test/heimdall/3.1.5/README.md new file mode 100644 index 00000000..d7c114c3 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +An Application dashboard and launcher + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `heimdall` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `heimdall` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/heimdall/3.1.5/app-readme.md b/scale-catalog-template/test/heimdall/3.1.5/app-readme.md new file mode 100644 index 00000000..3fb24ea7 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +An Application dashboard and launcher +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +An Application dashboard and launcher diff --git a/scale-catalog-template/test/heimdall/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/heimdall/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/heimdall/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/heimdall/3.1.5/ix_values.yaml b/scale-catalog-template/test/heimdall/3.1.5/ix_values.yaml new file mode 100644 index 00000000..bdcc3ce0 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/heimdall + tag: version-2.2.2 + pullPolicy: IfNotPresent + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/heimdall/3.1.5/questions.yaml b/scale-catalog-template/test/heimdall/3.1.5/questions.yaml new file mode 100644 index 00000000..58181732 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/questions.yaml @@ -0,0 +1,450 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36033 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/heimdall/3.1.5/templates/common.yaml b/scale-catalog-template/test/heimdall/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/heimdall/3.1.5/test_values.yaml b/scale-catalog-template/test/heimdall/3.1.5/test_values.yaml new file mode 100644 index 00000000..ae76faf7 --- /dev/null +++ b/scale-catalog-template/test/heimdall/3.1.5/test_values.yaml @@ -0,0 +1,39 @@ +# Default values for grocy. + +image: + repository: linuxserver/heimdall + tag: version-2.2.2 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: + # PUID: + # PGID: + +probes: + startup: + enabled: true + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/heimdall/3.1.5/values.yaml b/scale-catalog-template/test/heimdall/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/heimdall/item.yaml b/scale-catalog-template/test/heimdall/item.yaml new file mode 100644 index 00000000..6caccc75 --- /dev/null +++ b/scale-catalog-template/test/heimdall/item.yaml @@ -0,0 +1,3 @@ +categories: + - organizers +icon_url: https://i.imgur.com/mM4tcO5.png diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/CONFIG.md b/scale-catalog-template/test/lazylibrarian/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.lock b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.lock new file mode 100644 index 00000000..65292a03 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:56.313756383Z" diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.yaml new file mode 100644 index 00000000..94eca5a2 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/Chart.yaml @@ -0,0 +1,32 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: lazylibrarian +version: 3.1.5 +upstream_version: 2.1.0 +appVersion: "latest" +description: Get all your books, like series with Sonarr... +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian +icon: https://lazylibrarian.gitlab.io/logo.svg +keywords: + - lazylibrarian + - ebooks +sources: + - https://github.com/truecharts/apps/tree/master/incubator/lazylibrarian + - https://github.com/k8s-at-home/charts/tree/master/charts/lazylibrarian + - https://gitlab.com/LazyLibrarian/LazyLibrarian.git + - https://lazylibrarian.gitlab.io +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/README.md b/scale-catalog-template/test/lazylibrarian/3.1.5/README.md new file mode 100644 index 00000000..56385ef9 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +Get all your books, like series with Sonarr... + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `lazylibrarian` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `lazylibrarian` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/app-readme.md b/scale-catalog-template/test/lazylibrarian/3.1.5/app-readme.md new file mode 100644 index 00000000..c67c1844 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Get all your books, like series with Sonarr... +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Get all your books, like series with Sonarr... diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/lazylibrarian/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/ix_values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/ix_values.yaml new file mode 100644 index 00000000..553b98db --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/lazylibrarian + pullPolicy: IfNotPresent + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/questions.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/questions.yaml new file mode 100644 index 00000000..248cf4c9 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/questions.yaml @@ -0,0 +1,451 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5299 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 5299 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36033 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/templates/common.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/test_values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/test_values.yaml new file mode 100644 index 00000000..23d51564 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for LazyLibrarian. + +image: + repository: linuxserver/lazylibrarian + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 5299 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/lazylibrarian/3.1.5/values.yaml b/scale-catalog-template/test/lazylibrarian/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/lazylibrarian/item.yaml b/scale-catalog-template/test/lazylibrarian/item.yaml new file mode 100644 index 00000000..9c98c1c5 --- /dev/null +++ b/scale-catalog-template/test/lazylibrarian/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://lazylibrarian.gitlab.io/logo.svg diff --git a/scale-catalog-template/test/lychee/3.1.5/CONFIG.md b/scale-catalog-template/test/lychee/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/lychee/3.1.5/Chart.lock b/scale-catalog-template/test/lychee/3.1.5/Chart.lock new file mode 100644 index 00000000..73850d9b --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:56.76465654Z" diff --git a/scale-catalog-template/test/lychee/3.1.5/Chart.yaml b/scale-catalog-template/test/lychee/3.1.5/Chart.yaml new file mode 100644 index 00000000..32e24374 --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: lychee +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: Lychee is a free photo-management tool, which runs on your server or web-space +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/lychee +icon: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true +keywords: + - lychee + - photo + - pictures +sources: + - https://github.com/truecharts/apps/tree/master/incubator/lychee + - https://github.com/k8s-at-home/charts/tree/master/charts/lychee + - https://github.com/LycheeOrg/Lychee + - https://hub.docker.com/r/lycheeorg/lychee +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/lychee/3.1.5/README.md b/scale-catalog-template/test/lychee/3.1.5/README.md new file mode 100644 index 00000000..27772b14 --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Lychee is a free photo-management tool, which runs on your server or web-space + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `lychee` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `lychee` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/lychee/3.1.5/app-readme.md b/scale-catalog-template/test/lychee/3.1.5/app-readme.md new file mode 100644 index 00000000..b420d9b3 --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Lychee is a free photo-management tool, which runs on your server or web-space +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Lychee is a free photo-management tool, which runs on your server or web-space diff --git a/scale-catalog-template/test/lychee/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/lychee/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/lychee/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/lychee/3.1.5/ix_values.yaml b/scale-catalog-template/test/lychee/3.1.5/ix_values.yaml new file mode 100644 index 00000000..63bb15fa --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: lycheeorg/lychee-laravel + pullPolicy: IfNotPresent + tag: v4.3.0 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/lychee/3.1.5/questions.yaml b/scale-catalog-template/test/lychee/3.1.5/questions.yaml new file mode 100644 index 00000000..53e656bb --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/questions.yaml @@ -0,0 +1,450 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36034 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/lychee/3.1.5/templates/common.yaml b/scale-catalog-template/test/lychee/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/lychee/3.1.5/test_values.yaml b/scale-catalog-template/test/lychee/3.1.5/test_values.yaml new file mode 100644 index 00000000..d333576f --- /dev/null +++ b/scale-catalog-template/test/lychee/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Lychee. + +image: + repository: lycheeorg/lychee-laravel + pullPolicy: IfNotPresent + tag: v4.3.0 + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # PHP_TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/lychee/3.1.5/values.yaml b/scale-catalog-template/test/lychee/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/lychee/item.yaml b/scale-catalog-template/test/lychee/item.yaml new file mode 100644 index 00000000..f4a427e5 --- /dev/null +++ b/scale-catalog-template/test/lychee/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/LycheeOrg/Lychee/blob/master/Banner.png?raw=true diff --git a/scale-catalog-template/test/navidrome/3.1.5/CONFIG.md b/scale-catalog-template/test/navidrome/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/navidrome/3.1.5/Chart.lock b/scale-catalog-template/test/navidrome/3.1.5/Chart.lock new file mode 100644 index 00000000..7bc1bf1a --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:57.203494707Z" diff --git a/scale-catalog-template/test/navidrome/3.1.5/Chart.yaml b/scale-catalog-template/test/navidrome/3.1.5/Chart.yaml new file mode 100644 index 00000000..72932899 --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: navidrome +version: 3.1.5 +upstream_version: 2.3.1 +appVersion: "auto" +description: Navidrome is an open source web-based music collection server and streamer +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/navidrome +icon: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png +keywords: + - navidrome + - music + - streaming +sources: + - https://github.com/truecharts/apps/tree/master/incubator/navidrome + - https://github.com/k8s-at-home/charts/tree/master/charts/navidrome + - https://github.com/deluan/navidrome + - https://hub.docker.com/r/deluan/navidrome +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/navidrome/3.1.5/README.md b/scale-catalog-template/test/navidrome/3.1.5/README.md new file mode 100644 index 00000000..5e5e1c74 --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Navidrome is an open source web-based music collection server and streamer + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `navidrome` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `navidrome` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/navidrome/3.1.5/app-readme.md b/scale-catalog-template/test/navidrome/3.1.5/app-readme.md new file mode 100644 index 00000000..4f10b994 --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Navidrome is an open source web-based music collection server and streamer +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Navidrome is an open source web-based music collection server and streamer diff --git a/scale-catalog-template/test/navidrome/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/navidrome/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/navidrome/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/navidrome/3.1.5/ix_values.yaml b/scale-catalog-template/test/navidrome/3.1.5/ix_values.yaml new file mode 100644 index 00000000..e473a71b --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: deluan/navidrome + pullPolicy: IfNotPresent + tag: 0.42.1 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/navidrome/3.1.5/questions.yaml b/scale-catalog-template/test/navidrome/3.1.5/questions.yaml new file mode 100644 index 00000000..8758663b --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 4533 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 4533 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36027 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/navidrome/3.1.5/templates/common.yaml b/scale-catalog-template/test/navidrome/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/navidrome/3.1.5/test_values.yaml b/scale-catalog-template/test/navidrome/3.1.5/test_values.yaml new file mode 100644 index 00000000..2446a844 --- /dev/null +++ b/scale-catalog-template/test/navidrome/3.1.5/test_values.yaml @@ -0,0 +1,30 @@ +# Default values for Navidrome. + +image: + repository: deluan/navidrome + pullPolicy: IfNotPresent + tag: 0.42.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 4533 + +env: + ND_SCANINTERVAL: "15m" + ND_LOGLEVEL: "info" + ND_SESSIONTIMEOUT: "24h" + ND_ENABLETRANSCODINGCONFIG: "true" + ND_MUSICFOLDER: "/music" + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/navidrome/3.1.5/values.yaml b/scale-catalog-template/test/navidrome/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/navidrome/item.yaml b/scale-catalog-template/test/navidrome/item.yaml new file mode 100644 index 00000000..576fa6c3 --- /dev/null +++ b/scale-catalog-template/test/navidrome/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/navidrome/navidrome/v0.42.0/ui/src/icons/android-icon-192x192.png diff --git a/scale-catalog-template/test/node-red/3.1.5/CONFIG.md b/scale-catalog-template/test/node-red/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/node-red/3.1.5/Chart.lock b/scale-catalog-template/test/node-red/3.1.5/Chart.lock new file mode 100644 index 00000000..97540c4a --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:57.699027831Z" diff --git a/scale-catalog-template/test/node-red/3.1.5/Chart.yaml b/scale-catalog-template/test/node-red/3.1.5/Chart.yaml new file mode 100644 index 00000000..fc4384e3 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: node-red +version: 3.1.5 +upstream_version: 5.2.1 +appVersion: "auto" +description: Node-RED is low-code programming for event-driven applications +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/node-red +icon: https://nodered.org/about/resources/media/node-red-icon-2.png +keywords: + - node-red + - nodered +sources: + - https://github.com/truecharts/apps/tree/master/incubator/node-red + - https://github.com/k8s-at-home/charts/tree/master/charts/node-red + - https://github.com/node-red/node-red-docker +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/node-red/3.1.5/README.md b/scale-catalog-template/test/node-red/3.1.5/README.md new file mode 100644 index 00000000..ef5216e0 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Node-RED is low-code programming for event-driven applications + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `node-red` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `node-red` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/node-red/3.1.5/app-readme.md b/scale-catalog-template/test/node-red/3.1.5/app-readme.md new file mode 100644 index 00000000..6ecbe710 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Node-RED is low-code programming for event-driven applications +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Node-RED is low-code programming for event-driven applications diff --git a/scale-catalog-template/test/node-red/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/node-red/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/node-red/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/node-red/3.1.5/ix_values.yaml b/scale-catalog-template/test/node-red/3.1.5/ix_values.yaml new file mode 100644 index 00000000..48dd3201 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: nodered/node-red + pullPolicy: IfNotPresent + tag: 1.3.4 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/node-red/3.1.5/questions.yaml b/scale-catalog-template/test/node-red/3.1.5/questions.yaml new file mode 100644 index 00000000..eb29b285 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 1880 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 1880 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36028 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/node-red/3.1.5/templates/common.yaml b/scale-catalog-template/test/node-red/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/node-red/3.1.5/test_values.yaml b/scale-catalog-template/test/node-red/3.1.5/test_values.yaml new file mode 100644 index 00000000..4339f588 --- /dev/null +++ b/scale-catalog-template/test/node-red/3.1.5/test_values.yaml @@ -0,0 +1,32 @@ +# Default values for node-red. + +image: + repository: nodered/node-red + pullPolicy: IfNotPresent + tag: 1.3.4 + +strategy: + type: Recreate + +# See more environment varaibles in the node-red documentation +# https://nodered.org/docs/getting-started/docker +env: {} + # TZ: + # NODE_OPTIONS: + # NODE_RED_ENABLE_PROJECTS: + # NODE_RED_ENABLE_SAFE_MODE: + # FLOWS: + +services: + main: + port: + port: 1880 + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/node-red/3.1.5/values.yaml b/scale-catalog-template/test/node-red/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/node-red/item.yaml b/scale-catalog-template/test/node-red/item.yaml new file mode 100644 index 00000000..31b0c4a8 --- /dev/null +++ b/scale-catalog-template/test/node-red/item.yaml @@ -0,0 +1,3 @@ +categories: + - tools +icon_url: https://nodered.org/about/resources/media/node-red-icon-2.png diff --git a/scale-catalog-template/test/nzbget/3.1.5/CONFIG.md b/scale-catalog-template/test/nzbget/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/nzbget/3.1.5/Chart.lock b/scale-catalog-template/test/nzbget/3.1.5/Chart.lock new file mode 100644 index 00000000..9d35bc3f --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:58.151914285Z" diff --git a/scale-catalog-template/test/nzbget/3.1.5/Chart.yaml b/scale-catalog-template/test/nzbget/3.1.5/Chart.yaml new file mode 100644 index 00000000..863ecde8 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: nzbget +version: 3.1.5 +upstream_version: 7.3.1 +appVersion: "auto" +description: NZBGet is a Usenet downloader client +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/nzbget +icon: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4 +keywords: + - nzbget + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/nzbget + - https://github.com/k8s-at-home/charts/tree/master/charts/nzbget + - https://hub.docker.com/r/linuxserver/nzbget/ + - https://nzbget.net/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/nzbget/3.1.5/README.md b/scale-catalog-template/test/nzbget/3.1.5/README.md new file mode 100644 index 00000000..927dec88 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +NZBGet is a Usenet downloader client + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `nzbget` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `nzbget` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/nzbget/3.1.5/app-readme.md b/scale-catalog-template/test/nzbget/3.1.5/app-readme.md new file mode 100644 index 00000000..bde861cf --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +NZBGet is a Usenet downloader client +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +NZBGet is a Usenet downloader client diff --git a/scale-catalog-template/test/nzbget/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/nzbget/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/nzbget/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/nzbget/3.1.5/ix_values.yaml b/scale-catalog-template/test/nzbget/3.1.5/ix_values.yaml new file mode 100644 index 00000000..08de88a7 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/nzbget + pullPolicy: IfNotPresent + tag: v21.0 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/nzbget/3.1.5/questions.yaml b/scale-catalog-template/test/nzbget/3.1.5/questions.yaml new file mode 100644 index 00000000..842b21e7 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 6789 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 6789 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36021 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/nzbget/3.1.5/templates/common.yaml b/scale-catalog-template/test/nzbget/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/nzbget/3.1.5/test_values.yaml b/scale-catalog-template/test/nzbget/3.1.5/test_values.yaml new file mode 100644 index 00000000..212877c5 --- /dev/null +++ b/scale-catalog-template/test/nzbget/3.1.5/test_values.yaml @@ -0,0 +1,23 @@ +# Default values for nzbget. + +image: + repository: ghcr.io/truecharts/nzbget + pullPolicy: IfNotPresent + tag: v21.0 + +strategy: + type: Recreate + +services: + main: + port: + port: 6789 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/nzbget/3.1.5/values.yaml b/scale-catalog-template/test/nzbget/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/nzbget/item.yaml b/scale-catalog-template/test/nzbget/item.yaml new file mode 100644 index 00000000..86059d18 --- /dev/null +++ b/scale-catalog-template/test/nzbget/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars1.githubusercontent.com/u/3368377?s=400&v=4 diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/CONFIG.md b/scale-catalog-template/test/nzbhydra/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/Chart.lock b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.lock new file mode 100644 index 00000000..cef5aa69 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:58.660164697Z" diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/Chart.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.yaml new file mode 100644 index 00000000..5d35ede6 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: nzbhydra +version: 3.1.5 +upstream_version: 5.3.1 +appVersion: "auto" +description: Usenet meta search +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/nzbhydra +icon: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png +keywords: + - nzbhydra + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/nzbhydra + - https://github.com/k8s-at-home/charts/tree/master/charts/nzbhydra + - https://hub.docker.com/r/linuxserver/nzbhydra2 + - https://github.com/theotherp/nzbhydra2 +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/README.md b/scale-catalog-template/test/nzbhydra/3.1.5/README.md new file mode 100644 index 00000000..a3cd6644 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Usenet meta search + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `nzbhydra` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `nzbhydra` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/app-readme.md b/scale-catalog-template/test/nzbhydra/3.1.5/app-readme.md new file mode 100644 index 00000000..2012c83a --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Usenet meta search +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Usenet meta search diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/nzbhydra/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/ix_values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/ix_values.yaml new file mode 100644 index 00000000..0a6fde47 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/ix_values.yaml @@ -0,0 +1,51 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/nzbhydra2 + pullPolicy: IfNotPresent + tag: v3.14.1 + +probes: + liveness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/livenessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + readiness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + startup: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/questions.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/questions.yaml new file mode 100644 index 00000000..a620bab6 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 5076 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 5076 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36041 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/templates/common.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/test_values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/test_values.yaml new file mode 100644 index 00000000..5baf1ad7 --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/3.1.5/test_values.yaml @@ -0,0 +1,64 @@ +# Default values for nzbhydra. + +image: + repository: ghcr.io/truecharts/nzbhydra2 + pullPolicy: IfNotPresent + tag: v3.14.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 5076 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +probes: + liveness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/livenessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + readiness: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + startup: + custom: true + enabled: true + spec: + failureThreshold: 5 + httpGet: + path: /actuator/health/readinessState + port: http + initialDelaySeconds: 30 + periodSeconds: 10 + timeoutSeconds: 10 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/nzbhydra/3.1.5/values.yaml b/scale-catalog-template/test/nzbhydra/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/nzbhydra/item.yaml b/scale-catalog-template/test/nzbhydra/item.yaml new file mode 100644 index 00000000..9da6666b --- /dev/null +++ b/scale-catalog-template/test/nzbhydra/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://raw.githubusercontent.com/linuxserver/docker-templates/master/linuxserver.io/img/hydra-icon.png diff --git a/scale-catalog-template/test/organizr/3.1.5/CONFIG.md b/scale-catalog-template/test/organizr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/organizr/3.1.5/Chart.lock b/scale-catalog-template/test/organizr/3.1.5/Chart.lock new file mode 100644 index 00000000..3afb86bf --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:59.129683638Z" diff --git a/scale-catalog-template/test/organizr/3.1.5/Chart.yaml b/scale-catalog-template/test/organizr/3.1.5/Chart.yaml new file mode 100644 index 00000000..631c1abc --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: organizr +version: 3.1.5 +upstream_version: 3.2.1 +appVersion: "latest" +description: HTPC/Homelab Services Organizer +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/organizr +icon: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true +keywords: + - organizr +sources: + - https://github.com/truecharts/apps/tree/master/incubator/organizr + - https://github.com/k8s-at-home/charts/tree/master/charts/organizr + - https://github.com/causefx/Organizr + - https://hub.docker.com/r/organizr/organizr +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/organizr/3.1.5/README.md b/scale-catalog-template/test/organizr/3.1.5/README.md new file mode 100644 index 00000000..dd5cdedc --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +HTPC/Homelab Services Organizer + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `organizr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `organizr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/organizr/3.1.5/app-readme.md b/scale-catalog-template/test/organizr/3.1.5/app-readme.md new file mode 100644 index 00000000..0bfeec6a --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +HTPC/Homelab Services Organizer +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +HTPC/Homelab Services Organizer diff --git a/scale-catalog-template/test/organizr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/organizr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/organizr/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/organizr/3.1.5/ix_values.yaml b/scale-catalog-template/test/organizr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..19a9fa1e --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: organizr/organizr + pullPolicy: Always + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/organizr/3.1.5/questions.yaml b/scale-catalog-template/test/organizr/3.1.5/questions.yaml new file mode 100644 index 00000000..35051230 --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/questions.yaml @@ -0,0 +1,502 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36046 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/organizr/3.1.5/templates/common.yaml b/scale-catalog-template/test/organizr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/organizr/3.1.5/test_values.yaml b/scale-catalog-template/test/organizr/3.1.5/test_values.yaml new file mode 100644 index 00000000..c784dfb7 --- /dev/null +++ b/scale-catalog-template/test/organizr/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Organizr. + +image: + repository: organizr/organizr + pullPolicy: Always + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/organizr/3.1.5/values.yaml b/scale-catalog-template/test/organizr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/organizr/item.yaml b/scale-catalog-template/test/organizr/item.yaml new file mode 100644 index 00000000..8d111e1f --- /dev/null +++ b/scale-catalog-template/test/organizr/item.yaml @@ -0,0 +1,3 @@ +categories: + - organizers +icon_url: https://github.com/causefx/Organizr/blob/v2-master/plugins/images/organizr/logo.png?raw=true diff --git a/scale-catalog-template/test/podgrab/1.0.3/CONFIG.md b/scale-catalog-template/test/podgrab/1.0.3/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/podgrab/1.0.3/Chart.lock b/scale-catalog-template/test/podgrab/1.0.3/Chart.lock new file mode 100644 index 00000000..ad7bd61f --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:29:59.589063587Z" diff --git a/scale-catalog-template/test/podgrab/1.0.3/Chart.yaml b/scale-catalog-template/test/podgrab/1.0.3/Chart.yaml new file mode 100644 index 00000000..da35df55 --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/Chart.yaml @@ -0,0 +1,27 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: podgrab +version: 1.0.3 +upstream_version: 1.0.0 +appVersion: "latest" +description: A self-hosted podcast manager to download episodes as soon as they become live. +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/podgrab +icon: https://truecharts.org/_static/img/podgrab-icon.png +keywords: + - podgrab +sources: + - https://github.com/akhilrex/podgrab + - https://hub.docker.com/r/akhilrex/podgrab +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: warllo54 + email: 20650065+warllo54@users.noreply.github.com + url: truecharts.org diff --git a/scale-catalog-template/test/podgrab/1.0.3/README.md b/scale-catalog-template/test/podgrab/1.0.3/README.md new file mode 100644 index 00000000..9977071a --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 1.0.3](https://img.shields.io/badge/Version-1.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +A self-hosted podcast manager to download episodes as soon as they become live. + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `podgrab` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `podgrab` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/podgrab/1.0.3/app-readme.md b/scale-catalog-template/test/podgrab/1.0.3/app-readme.md new file mode 100644 index 00000000..9d85b5de --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/app-readme.md @@ -0,0 +1,3 @@ +A self-hosted podcast manager to download episodes as soon as they become live. +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A self-hosted podcast manager to download episodes as soon as they become live. diff --git a/scale-catalog-template/test/podgrab/1.0.3/charts/common-3.5.5.tgz b/scale-catalog-template/test/podgrab/1.0.3/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/podgrab/1.0.3/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/podgrab/1.0.3/ix_values.yaml b/scale-catalog-template/test/podgrab/1.0.3/ix_values.yaml new file mode 100644 index 00000000..4d5da6cf --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/ix_values.yaml @@ -0,0 +1,16 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: akhilrex/podgrab + pullPolicy: Always + tag: latest + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/podgrab/1.0.3/questions.yaml b/scale-catalog-template/test/podgrab/1.0.3/questions.yaml new file mode 100644 index 00000000..023e9e17 --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/questions.yaml @@ -0,0 +1,454 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + +# App env variables + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: PASSWORD + label: "Password" + description: "Desired Password" + schema: + type: string + default: "" + required: false + - variable: CHECK_FREQUENCY + label: "Update Frequency" + description: "Interval to check for new podcasts" + schema: + type: int + default: 240 + required: true + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36047 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Config Storage" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "1Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/podgrab/1.0.3/templates/common.yaml b/scale-catalog-template/test/podgrab/1.0.3/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/podgrab/1.0.3/test_values.yaml b/scale-catalog-template/test/podgrab/1.0.3/test_values.yaml new file mode 100644 index 00000000..6982fed0 --- /dev/null +++ b/scale-catalog-template/test/podgrab/1.0.3/test_values.yaml @@ -0,0 +1,47 @@ +# Default values for podgrab. + +image: + repository: akhilrex/podgrab + pullPolicy: Always + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: true + runAsUser: 568 + runAsGroup: 568 + fsGroup: 568 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 51080 + protocol: TCP + targetPort: 51080 + +env: + PASSWORD: secretpasswordgoeshere + CHECK_FREQUENCY: 240 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + +customStorage: + - name: assets + enabled: true + mountPath: "/assets" + emptyDir: true diff --git a/scale-catalog-template/test/podgrab/1.0.3/values.yaml b/scale-catalog-template/test/podgrab/1.0.3/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/podgrab/item.yaml b/scale-catalog-template/test/podgrab/item.yaml new file mode 100644 index 00000000..8fea192f --- /dev/null +++ b/scale-catalog-template/test/podgrab/item.yaml @@ -0,0 +1,3 @@ +categories: + - mutlimedia +icon_url: https://truecharts.org/_static/img/podgrab-icon.png diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/CONFIG.md b/scale-catalog-template/test/qbittorrent/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/Chart.lock b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.lock new file mode 100644 index 00000000..42139f48 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.098310198Z" diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/Chart.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.yaml new file mode 100644 index 00000000..37d8d5de --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: qbittorrent +version: 3.1.5 +upstream_version: 7.2.1 +appVersion: "auto" +description: qBittorrent is a cross-platform free and open-source BitTorrent client +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/qbittorrent +icon: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png +keywords: + - qbittorrent + - torrrent +sources: + - https://github.com/truecharts/apps/tree/master/incubator/qbittorrent + - https://github.com/k8s-at-home/charts/tree/master/charts/qbittorrent + - https://hub.docker.com/r/linuxserver/qbittorrent/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/README.md b/scale-catalog-template/test/qbittorrent/3.1.5/README.md new file mode 100644 index 00000000..885309a1 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +qBittorrent is a cross-platform free and open-source BitTorrent client + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `qbittorrent` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `qbittorrent` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/app-readme.md b/scale-catalog-template/test/qbittorrent/3.1.5/app-readme.md new file mode 100644 index 00000000..5d26b483 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +qBittorrent is a cross-platform free and open-source BitTorrent client +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +qBittorrent is a cross-platform free and open-source BitTorrent client diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/qbittorrent/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/ix_values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/ix_values.yaml new file mode 100644 index 00000000..a99eddee --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/qbittorrent + pullPolicy: IfNotPresent + tag: v4.3.5 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/questions.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/questions.yaml new file mode 100644 index 00000000..d2494a1b --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/questions.yaml @@ -0,0 +1,563 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36039 + required: true + - variable: tcp + label: "TCP Torrent connections" + description: "This service is used to process incomming torrent connections over TCP" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 6881 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36040 + required: true + - variable: udp + label: "UDP Torrent connections" + description: "This service is used to process incomming torrent connections over UDP" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "NodePort" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 6881 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 51413 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36040 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/templates/common.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/templates/configmap.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/templates/configmap.yaml new file mode 100644 index 00000000..f8549d96 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/templates/configmap.yaml @@ -0,0 +1,45 @@ +## +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# `SPDX-License-Identifier: Apache-2.0` +# +# This file is considered to be modified by the TrueCharts Project. +## + +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "common.names.fullname" . }}-scripts + labels: + {{- include "common.labels" . | nindent 4 }} +data: + {{- $bittorrentPort := "" -}} + {{- $bittorrentPort = .Values.services.tcp.port.port -}} + {{- if $bittorrentPort }} + 31-update-port: |- + #!/bin/bash + QBITTORRENT_CONFIGFILE="/config/qBittorrent/qBittorrent.conf" + INCOMING_PORT={{- $bittorrentPort }} + + incoming_port_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin='${INCOMING_PORT}) + if [[ -z "${incoming_port_exist}" ]]; then + incoming_exist=$(cat ${QBITTORRENT_CONFIGFILE} | grep -m 1 'Connection\\PortRangeMin') + if [[ ! -z "${incoming_exist}" ]]; then + # Get line number of Incoming + LINE_NUM=$(grep -Fn -m 1 'Connection\PortRangeMin' ${QBITTORRENT_CONFIGFILE} | cut -d: -f 1) + sed -i "${LINE_NUM}s@.*@Connection\\\PortRangeMin=${INCOMING_PORT}@" ${QBITTORRENT_CONFIGFILE} + else + echo "Connection\\PortRangeMin=${INCOMING_PORT}" >> ${QBITTORRENT_CONFIGFILE} + fi + fi + {{- end }} diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/test_values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/test_values.yaml new file mode 100644 index 00000000..02e101f8 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/3.1.5/test_values.yaml @@ -0,0 +1,60 @@ +# Default values for qbittorrent. + +image: + repository: ghcr.io/truecharts/qbittorrent + pullPolicy: IfNotPresent + tag: v4.3.5 + +strategy: + type: Recreate + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + # UMASK: 022 + +services: + main: + port: + port: 8080 + tcp: + enabled: true + type: ClusterIP + port: + port: 6881 + protocol: TCP + targetPort: 51413 + udp: + enabled: true + type: ClusterIP + port: + port: 6881 + protocol: UDP + targetPort: 51413 + + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" + +additionalVolumes: + - name: qbittorrent-scripts + emptyDir: {} + ## When you want to enable automatic port configuration at startup, adjust this to: + # configMap: + # name: -scripts + # defaultMode: 511 + +additionalVolumeMounts: + - mountPath: /config/custom-cont-init.d + name: qbittorrent-scripts + + +appAdditionalServicesEnabled: true +appAdditionalServices: diff --git a/scale-catalog-template/test/qbittorrent/3.1.5/values.yaml b/scale-catalog-template/test/qbittorrent/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/qbittorrent/item.yaml b/scale-catalog-template/test/qbittorrent/item.yaml new file mode 100644 index 00000000..a366e589 --- /dev/null +++ b/scale-catalog-template/test/qbittorrent/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://cloud.githubusercontent.com/assets/14862437/23586868/89ef2922-01c4-11e7-869c-52aafcece17f.png diff --git a/scale-catalog-template/test/readarr/3.1.5/CONFIG.md b/scale-catalog-template/test/readarr/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/readarr/3.1.5/Chart.lock b/scale-catalog-template/test/readarr/3.1.5/Chart.lock new file mode 100644 index 00000000..ab4b8a02 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.428743745Z" diff --git a/scale-catalog-template/test/readarr/3.1.5/Chart.yaml b/scale-catalog-template/test/readarr/3.1.5/Chart.yaml new file mode 100644 index 00000000..041ee3f5 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: readarr +version: 3.1.5 +upstream_version: 2.1.0 +appVersion: "auto" +description: A fork of Radarr to work with Books & AudioBooks +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/readarr +icon: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true +keywords: + - readarr + - torrent + - usenet + - AudioBooks + - ebooks +sources: + - https://github.com/truecharts/apps/tree/master/incubator/readarr + - https://github.com/k8s-at-home/charts/tree/master/charts/readarr + - https://github.com/Readarr/Readarr + - https://readarr.com +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/readarr/3.1.5/README.md b/scale-catalog-template/test/readarr/3.1.5/README.md new file mode 100644 index 00000000..dded0c18 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +A fork of Radarr to work with Books & AudioBooks + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `readarr` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `readarr` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/readarr/3.1.5/app-readme.md b/scale-catalog-template/test/readarr/3.1.5/app-readme.md new file mode 100644 index 00000000..ec0ebb21 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +A fork of Radarr to work with Books & AudioBooks +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +A fork of Radarr to work with Books & AudioBooks diff --git a/scale-catalog-template/test/readarr/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/readarr/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/readarr/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/readarr/3.1.5/ix_values.yaml b/scale-catalog-template/test/readarr/3.1.5/ix_values.yaml new file mode 100644 index 00000000..8e161d6d --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/ix_values.yaml @@ -0,0 +1,37 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/readarr + pullPolicy: IfNotPresent + tag: v0.1.0.643 + +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: true + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/readarr/3.1.5/questions.yaml b/scale-catalog-template/test/readarr/3.1.5/questions.yaml new file mode 100644 index 00000000..840fe89a --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/questions.yaml @@ -0,0 +1,436 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8787 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8787 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36038 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/readarr/3.1.5/templates/common.yaml b/scale-catalog-template/test/readarr/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/readarr/3.1.5/test_values.yaml b/scale-catalog-template/test/readarr/3.1.5/test_values.yaml new file mode 100644 index 00000000..09676bb4 --- /dev/null +++ b/scale-catalog-template/test/readarr/3.1.5/test_values.yaml @@ -0,0 +1,49 @@ +# Default values for Radarr. + +image: + repository: ghcr.io/truecharts/readarr + pullPolicy: IfNotPresent + tag: v0.1.0.643 + +strategy: + type: Recreate + +services: + main: + port: + port: 8787 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +probes: + liveness: + enabled: true + ## Set this to true if you wish to specify your own livenessProbe + custom: true + ## The spec field contains the values for the default livenessProbe. + ## If you selected custom: true, this field holds the definition of the livenessProbe. + spec: + exec: + command: + - /usr/bin/env + - bash + - -c + - curl --fail localhost:8787/api/v1/system/status?apiKey=`IFS=\> && while + read -d \< E C; do if [[ $E = "ApiKey" ]]; then echo $C; fi; done < /config/config.xml` + failureThreshold: 5 + initialDelaySeconds: 60 + periodSeconds: 10 + successThreshold: 1 + timeoutSeconds: 10 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/readarr/3.1.5/values.yaml b/scale-catalog-template/test/readarr/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/readarr/item.yaml b/scale-catalog-template/test/readarr/item.yaml new file mode 100644 index 00000000..e409535f --- /dev/null +++ b/scale-catalog-template/test/readarr/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://github.com/Readarr/Readarr/blob/develop/Logo/1024.png?raw=true diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/CONFIG.md b/scale-catalog-template/test/sabnzbd/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/Chart.lock b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.lock new file mode 100644 index 00000000..5c046e33 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.676279356Z" diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/Chart.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.yaml new file mode 100644 index 00000000..281a1644 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: sabnzbd +version: 3.1.5 +upstream_version: 5.0.1 +appVersion: "auto" +description: Free and easy binary newsreader +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/sabnzbd +icon: https://avatars1.githubusercontent.com/u/960698?s=400&v=4 +keywords: + - sabnzbd + - usenet +sources: + - https://github.com/truecharts/apps/tree/master/incubator/sabnzbd + - https://github.com/k8s-at-home/charts/tree/master/charts/sabnzbd + - https://hub.docker.com/r/linuxserver/sabnzbd/ + - https://sabnzbd.org/ +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/README.md b/scale-catalog-template/test/sabnzbd/3.1.5/README.md new file mode 100644 index 00000000..cfa2b2d0 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/README.md @@ -0,0 +1,56 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Free and easy binary newsreader + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `sabnzbd` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `sabnzbd` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/app-readme.md b/scale-catalog-template/test/sabnzbd/3.1.5/app-readme.md new file mode 100644 index 00000000..05e7f339 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Free and easy binary newsreader +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Free and easy binary newsreader diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/sabnzbd/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/ix_values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/ix_values.yaml new file mode 100644 index 00000000..70a2cef7 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ghcr.io/truecharts/sabnzbd + pullPolicy: IfNotPresent + tag: v3.2.1 + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/questions.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/questions.yaml new file mode 100644 index 00000000..d47bf059 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/questions.yaml @@ -0,0 +1,452 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + + # Docker specific env + - variable: env + group: "Configuration" + label: "Image Environment" + schema: + type: dict + attrs: + - variable: HOST_WHITELIST_ENTRIES + label: "HostName Whitelist" + description: "If you use a reverse proxy, you might need to enter your hostname's here (comma seperated)" + schema: + type: string + default: "" + required: false + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36045 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: true + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 568 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 568 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/templates/common.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/test_values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/test_values.yaml new file mode 100644 index 00000000..b5ccdd61 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/3.1.5/test_values.yaml @@ -0,0 +1,28 @@ +# Default values for Sabnzbd. + +image: + repository: ghcr.io/truecharts/sabnzbd + pullPolicy: IfNotPresent + tag: v3.2.1 + +strategy: + type: Recreate + +services: + main: + port: + port: 8080 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/sabnzbd/3.1.5/values.yaml b/scale-catalog-template/test/sabnzbd/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/sabnzbd/item.yaml b/scale-catalog-template/test/sabnzbd/item.yaml new file mode 100644 index 00000000..b81149d2 --- /dev/null +++ b/scale-catalog-template/test/sabnzbd/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars1.githubusercontent.com/u/960698?s=400&v=4 diff --git a/scale-catalog-template/test/truecommand/3.1.5/CONFIG.md b/scale-catalog-template/test/truecommand/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/truecommand/3.1.5/Chart.lock b/scale-catalog-template/test/truecommand/3.1.5/Chart.lock new file mode 100644 index 00000000..7d44d79e --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:00.892306191Z" diff --git a/scale-catalog-template/test/truecommand/3.1.5/Chart.yaml b/scale-catalog-template/test/truecommand/3.1.5/Chart.yaml new file mode 100644 index 00000000..c8ab27ff --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/Chart.yaml @@ -0,0 +1,29 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: truecommand +version: 3.1.5 +# upstream_version: 1.1.0 +appVersion: "nightly" +description: Aggregated management of TrueNAS devices +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/truecommand +icon: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png +keywords: + - truecommand +sources: + - https://github.com/truecharts/apps/tree/master/incubator/truecommand + - https://hub.docker.com/r/ixsystems/truecommand +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org + - name: Ornias1993 + email: kjeld@schouten-lebbing.nl + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/truecommand/3.1.5/README.md b/scale-catalog-template/test/truecommand/3.1.5/README.md new file mode 100644 index 00000000..8caf3b92 --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/README.md @@ -0,0 +1,54 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: nightly](https://img.shields.io/badge/AppVersion-nightly-informational?style=flat-square) + +Aggregated management of TrueNAS devices + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `truecommand` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `truecommand` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/truecommand/3.1.5/app-readme.md b/scale-catalog-template/test/truecommand/3.1.5/app-readme.md new file mode 100644 index 00000000..8e146848 --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Aggregated management of TrueNAS devices +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Aggregated management of TrueNAS devices diff --git a/scale-catalog-template/test/truecommand/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/truecommand/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/truecommand/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/truecommand/3.1.5/ix_values.yaml b/scale-catalog-template/test/truecommand/3.1.5/ix_values.yaml new file mode 100644 index 00000000..d2b8ab2a --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: ixsystems/truecommand + pullPolicy: IfNotPresent + tag: nightly + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/truecommand/3.1.5/questions.yaml b/scale-catalog-template/test/truecommand/3.1.5/questions.yaml new file mode 100644 index 00000000..1701b241 --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/questions.yaml @@ -0,0 +1,453 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 80 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36044 + required: true +## TrueCharts Specific + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: data + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/data" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/truecommand/3.1.5/templates/common.yaml b/scale-catalog-template/test/truecommand/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/truecommand/3.1.5/test_values.yaml b/scale-catalog-template/test/truecommand/3.1.5/test_values.yaml new file mode 100644 index 00000000..ee4eb28f --- /dev/null +++ b/scale-catalog-template/test/truecommand/3.1.5/test_values.yaml @@ -0,0 +1,35 @@ +# Default values for Jackett. + +image: + repository: ixsystems/truecommand + pullPolicy: IfNotPresent + tag: nightly + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +services: + main: + port: + port: 80 + +env: {} + # TZ: UTC + # PUID: 1001 + # PGID: 1001 + +persistence: + data: + enabled: true + mountPath: "/data" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/truecommand/3.1.5/values.yaml b/scale-catalog-template/test/truecommand/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/truecommand/item.yaml b/scale-catalog-template/test/truecommand/item.yaml new file mode 100644 index 00000000..9c10785b --- /dev/null +++ b/scale-catalog-template/test/truecommand/item.yaml @@ -0,0 +1,3 @@ +categories: + - Administration +icon_url: https://www.ixsystems.com/documentation/truecommand/1.2/_static/tv-logo.png diff --git a/scale-catalog-template/test/tvheadend/4.1.5/CONFIG.md b/scale-catalog-template/test/tvheadend/4.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/tvheadend/4.1.5/Chart.lock b/scale-catalog-template/test/tvheadend/4.1.5/Chart.lock new file mode 100644 index 00000000..3987b9bb --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:01.11612182Z" diff --git a/scale-catalog-template/test/tvheadend/4.1.5/Chart.yaml b/scale-catalog-template/test/tvheadend/4.1.5/Chart.yaml new file mode 100644 index 00000000..2e376dda --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/Chart.yaml @@ -0,0 +1,30 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: tvheadend +version: 4.1.5 +upstream_version: 1.1.2 +appVersion: "latest" +description: TVheadend - a TV streaming server and digital video recorder +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/tvheadend +icon: https://avatars.githubusercontent.com/u/1908588?s=200&v=4 +keywords: + - tvheadend + - tv + - streaming + - dvb +sources: + - https://github.com/truecharts/apps/tree/master/incubator/tvheadend + - https://github.com/k8s-at-home/charts/tree/master/charts/tvheadend + - https://github.com/tvheadend/tvheadend +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/tvheadend/4.1.5/README.md b/scale-catalog-template/test/tvheadend/4.1.5/README.md new file mode 100644 index 00000000..63f3c617 --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 4.1.5](https://img.shields.io/badge/Version-4.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: latest](https://img.shields.io/badge/AppVersion-latest-informational?style=flat-square) + +TVheadend - a TV streaming server and digital video recorder + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `tvheadend` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `tvheadend` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/tvheadend/4.1.5/app-readme.md b/scale-catalog-template/test/tvheadend/4.1.5/app-readme.md new file mode 100644 index 00000000..972a532e --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/app-readme.md @@ -0,0 +1,3 @@ +TVheadend - a TV streaming server and digital video recorder +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +TVheadend - a TV streaming server and digital video recorder diff --git a/scale-catalog-template/test/tvheadend/4.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/tvheadend/4.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/tvheadend/4.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/tvheadend/4.1.5/ix_values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/ix_values.yaml new file mode 100644 index 00000000..1d54e5cb --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/ix_values.yaml @@ -0,0 +1,15 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: linuxserver/tvheadend + pullPolicy: IfNotPresent + tag: latest + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/tvheadend/4.1.5/questions.yaml b/scale-catalog-template/test/tvheadend/4.1.5/questions.yaml new file mode 100644 index 00000000..5a869bcc --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/questions.yaml @@ -0,0 +1,492 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Service Configuration + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTP" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 9981 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9981 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36042 + required: true + - variable: htsp + label: "HTSP service" + description: "Service to connect to htsp" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the service" + schema: + type: boolean + default: true + - variable: type + label: "Service type" + description: "ClusterIP's are only internally available, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 9982 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 9982 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36043 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/config" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/tvheadend/4.1.5/templates/common.yaml b/scale-catalog-template/test/tvheadend/4.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/tvheadend/4.1.5/test_values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/test_values.yaml new file mode 100644 index 00000000..4d5ca71d --- /dev/null +++ b/scale-catalog-template/test/tvheadend/4.1.5/test_values.yaml @@ -0,0 +1,44 @@ +# Default values for tvheadend. + +image: + repository: linuxserver/tvheadend + pullPolicy: IfNotPresent + tag: latest + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +# See https://github.com/linuxserver/docker-tvheadend#parameters +env: {} + # PUID: 1000 + # PGID: 1000 + # TZ: Europe/London + # RUN_OPTS: + +services: + main: + port: + port: 9981 + htsp: + enabled: true + type: ClusterIP + port: + port: 9982 + protocol: TCP + targetPort: 9982 + +persistence: + config: + enabled: true + mountPath: "/config" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/tvheadend/4.1.5/values.yaml b/scale-catalog-template/test/tvheadend/4.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/tvheadend/item.yaml b/scale-catalog-template/test/tvheadend/item.yaml new file mode 100644 index 00000000..4e787795 --- /dev/null +++ b/scale-catalog-template/test/tvheadend/item.yaml @@ -0,0 +1,3 @@ +categories: + - media +icon_url: https://avatars.githubusercontent.com/u/1908588?s=200&v=4 diff --git a/scale-catalog-template/test/unifi/3.1.5/CONFIG.md b/scale-catalog-template/test/unifi/3.1.5/CONFIG.md new file mode 100644 index 00000000..6d760c18 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/CONFIG.md @@ -0,0 +1,8 @@ +# Configuration Options + +##### Connecting to other apps +If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide: +https://truecharts.org/manual/linking/ + +##### Available config options +In the future this page is going to contain an automated list of options available in the installation/edit UI. diff --git a/scale-catalog-template/test/unifi/3.1.5/Chart.lock b/scale-catalog-template/test/unifi/3.1.5/Chart.lock new file mode 100644 index 00000000..1cb7fec5 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/Chart.lock @@ -0,0 +1,6 @@ +dependencies: +- name: common + repository: https://truecharts.org/ + version: 3.5.5 +digest: sha256:ea66c36be2fa73e56bc33f7e89af9ce338cdfbed0b347484888e87228b825015 +generated: "2021-05-06T13:30:01.348637242Z" diff --git a/scale-catalog-template/test/unifi/3.1.5/Chart.yaml b/scale-catalog-template/test/unifi/3.1.5/Chart.yaml new file mode 100644 index 00000000..744da8ed --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/Chart.yaml @@ -0,0 +1,28 @@ +apiVersion: v2 +kubeVersion: ">=1.16.0-0" +name: unifi +version: 3.1.5 +upstream_version: 1.5.1 +appVersion: "auto" +description: Ubiquiti Network's Unifi Controller +type: application +deprecated: false +home: https://github.com/truecharts/apps/tree/master/incubator/unifi +icon: https://dl.ubnt.com/press/logo-UniFi.png +keywords: + - ubiquiti + - unifi +sources: + - https://github.com/truecharts/apps/tree/master/incubator/unifi + - https://github.com/jacobalberty/unifi-docker + - https://unifi-network.ui.com +dependencies: + - name: common + repository: https://truecharts.org/ + version: 3.5.5 + # condition: +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: truecharts.org +# annotations: diff --git a/scale-catalog-template/test/unifi/3.1.5/README.md b/scale-catalog-template/test/unifi/3.1.5/README.md new file mode 100644 index 00000000..048495ca --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/README.md @@ -0,0 +1,55 @@ +# Introduction + +![Version: 3.1.5](https://img.shields.io/badge/Version-3.1.5-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: auto](https://img.shields.io/badge/AppVersion-auto-informational?style=flat-square) + +Ubiquiti Network's Unifi Controller + +TrueCharts are designed to be installed as TrueNAS SCALE app only. We can not guarantee this charts works as a stand-alone helm installation. +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/apps/issues/new/choose)** + +## Source Code + +* +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://truecharts.org/ | common | 3.5.5 | + +## Installing the Chart + +To install the chart with the release name `unifi` + +- Open TrueNAS SCALE +- Go to Apps +- Click "Install" for this specific Apps +- Fill out the configuration form + +## Uninstalling the Chart + +To uninstall the `unifi` deployment + +- Open TrueNAS SCALE +- Go to Apps +- Go to "Installed Apps" +- Expand the menu in the top-right corner of this App +- Click "Remove" for this specific Apps + +The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release. + +## Support + +- See the [Wiki](https://truecharts.org) +- Open a [issue](https://github.com/truecharts/apps/issues/new/choose) +- Ask a [question](https://github.com/truecharts/apps/discussions) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) +All Rights Reserved - The TrueCharts Project diff --git a/scale-catalog-template/test/unifi/3.1.5/app-readme.md b/scale-catalog-template/test/unifi/3.1.5/app-readme.md new file mode 100644 index 00000000..0e6732e4 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/app-readme.md @@ -0,0 +1,3 @@ +Ubiquiti Network's Unifi Controller +This App is supplied by TrueCharts, for more information please visit https://truecharts.org +Ubiquiti Network's Unifi Controller diff --git a/scale-catalog-template/test/unifi/3.1.5/charts/common-3.5.5.tgz b/scale-catalog-template/test/unifi/3.1.5/charts/common-3.5.5.tgz new file mode 100644 index 00000000..d01688bb Binary files /dev/null and b/scale-catalog-template/test/unifi/3.1.5/charts/common-3.5.5.tgz differ diff --git a/scale-catalog-template/test/unifi/3.1.5/ix_values.yaml b/scale-catalog-template/test/unifi/3.1.5/ix_values.yaml new file mode 100644 index 00000000..a7c2aa22 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/ix_values.yaml @@ -0,0 +1,21 @@ +## +# This file contains Values.yaml content that gets added to the output of questions.yaml +# It's ONLY meant for content that the user is NOT expected to change. +# Example: Everything under "image" is not included in questions.yaml but is included here. +## + +image: + repository: jacobalberty/unifi + tag: 6.1.71 + pullPolicy: IfNotPresent + + +envTpl: +# Permissions Settings + UNIFI_GID: "{{ .Values.PUID }}" + UNIFI_UID: "{{ .Values.PGID }}" + +## +# Most other defaults are set in questions.yaml +# For other options please refer to the wiki, default_values.yaml or the common library chart +## diff --git a/scale-catalog-template/test/unifi/3.1.5/questions.yaml b/scale-catalog-template/test/unifi/3.1.5/questions.yaml new file mode 100644 index 00000000..9b329892 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/questions.yaml @@ -0,0 +1,635 @@ +groups: + - name: "Container Image" + description: "Image to be used for container" + - name: "Workload Configuration" + description: "Configure workload deployment" + - name: "Configuration" + description: "additional container configuration" + - name: "Networking" + description: "Configure / service for container" + - name: "Storage" + description: "Persist and share data that is separate from the lifecycle of the container" + - name: "Resources and Devices" + description: "Specify resources/devices to be allocated to workload" + - name: "Reverse Proxy Configuration" + description: "Reverse Proxy configuration" + - name: "Advanced" + description: "Advanced Configuration" + - name: "WARNING" + description: "WARNING" +portals: + web_portal: + protocols: + - "$kubernetes-resource_configmap_portal_protocol" + host: + - "$kubernetes-resource_configmap_portal_host" + ports: + - "$kubernetes-resource_configmap_portal_port" +questions: + - variable: portal + group: "Container Image" + label: "Configure Portal Button" + schema: + type: dict + hidden: true + attrs: + - variable: enabled + label: "Enable" + description: "enable the portal button" + schema: + hidden: true + editable: false + type: boolean + default: true + + # Update Policy + - variable: strategyType + group: "Container Image" + label: "Update Strategy" + schema: + type: string + default: "Recreate" + enum: + - value: "RollingUpdate" + description: "Create new pods and then kill old ones" + - value: "Recreate" + description: "Kill existing pods before creating new ones" + # Configure Time Zone + - variable: timezone + group: "Container Image" + label: "Timezone" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + + # Configure Enviroment Variables + - variable: environmentVariables + label: "Image environment" + group: "Configuration" + schema: + type: list + default: [] + items: + - variable: environmentVariable + label: "Environment Variable" + schema: + type: dict + attrs: + - variable: name + label: "Name" + schema: + type: string + - variable: value + label: "Value" + schema: + type: string + # Enable Host Networking + - variable: hostNetwork + group: "Networking" + label: "Enable Host Networking" + schema: + type: boolean + default: false + - variable: services + group: "Networking" + label: "Configure Service" + schema: + type: dict + attrs: + - variable: main + label: "Main service" + description: "The Primary service on which the healthcheck runs, often the webUI" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "HTTPS" + hidden: false + enum: + - value: HTTP + description: "HTTP" + - value: "HTTPS" + description: "HTTPS" + - variable: port + label: "container port" + schema: + type: int + default: 8443 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8443 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36035 + required: true + - variable: tcp + label: "Unifi Device Communications" + description: "This services is used for devices to communicate with the controller" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "TCP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 8080 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36036 + required: true + - variable: udp + label: "Stun Device Communications" + description: "This services is used for devices to communicate with the controller using STUN" + schema: + 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, nodePorts expose the container to the host node System" + schema: + type: string + default: "ClusterIP" + enum: + - value: "NodePort" + description: "NodePort" + - value: "ClusterIP" + description: "ClusterIP" + - variable: port + label: "Port configuration" + schema: + type: dict + attrs: + - variable: protocol + label: "Port Type" + schema: + type: string + default: "UDP" + hidden: true + enum: + - value: TCP + description: "TCP" + - value: "UDP" + description: "UDP" + - variable: port + label: "container port" + schema: + type: int + default: 3478 + editable: false + hidden: true + - variable: targetport + label: "Internal Service port" + description: "When connecting internally to this App, you'll need this port" + schema: + type: int + default: 3478 + editable: false + hidden: true + - variable: nodePort + label: "(optional) host nodePort to expose to" + description: "only get used when nodePort is selected" + schema: + type: int + min: 9000 + max: 65535 + default: 36037 + required: true + - variable: persistence + label: "Integrated Persistent Storage" + description: "Websocket Service" + group: "Storage" + schema: + type: dict + attrs: + - variable: config + label: "App Config Storage" + description: "Stores the Application Configuration." + schema: + type: dict + attrs: + - variable: enabled + label: "Enable the storage" + schema: + type: boolean + default: true + hidden: true + - variable: storageClass + label: "Type of Storage" + description: " Warning: Anything other than Internal will break rollback!" + schema: + type: string + default: "" + enum: + - value: "" + description: "Internal" + - variable: mountPath + label: "mountPath" + description: "Path inside the container the storage is mounted" + schema: + type: string + default: "/unifi" + hidden: true + - variable: emptyDir + label: "Mount a ramdisk instead of actual storage" + schema: + type: boolean + default: false + hidden: true + - variable: accessMode + label: "Access Mode (Advanced)" + description: "Allow or disallow multiple PVC's writhing to the same PVC" + schema: + type: string + default: "ReadWriteOnce" + enum: + - value: "ReadWriteOnce" + description: "ReadWriteOnce" + - value: "ReadOnlyMany" + description: "ReadOnlyMany" + - value: "ReadWriteMany" + description: "ReadWriteMany" + - variable: size + label: "Size quotum of storage" + schema: + type: string + default: "100Gi" + + + - variable: customStorage + label: "Custom app storage" + group: "Storage" + schema: + type: list + default: [] + items: + - variable: volumeMount + label: "Custom Storage" + schema: + type: dict + attrs: + - variable: enabled + label: "Enabled" + schema: + type: boolean + default: true + required: true + hidden: true + editable: false + - variable: setPermissions + label: "Automatic Permissions" + description: "Automatically set permissions on install" + schema: + type: boolean + default: true + hidden: false + - variable: readOnly + label: "Mount as ReadOnly" + description: "prevent any write from being done to the mounted volume" + schema: + type: boolean + default: false + hidden: false + - variable: emptyDir + label: "emptyDir" + schema: + type: boolean + default: false + hidden: true + editable: false + - variable: mountPath + label: "Mount Path" + description: "Path to mount inside the pod" + schema: + type: path + required: true + default: "" + editable: true + - variable: hostPath + label: "Host Path" + schema: + type: hostpath + required: true + - variable: ingress + label: "" + group: "Reverse Proxy Configuration" + schema: + type: dict + attrs: + - variable: main + label: "WebUI" + schema: + type: dict + attrs: + - variable: certType + label: "Select Reverse-Proxy Type" + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: "Disabled" + - value: "" + description: "No Encryption/TLS/Certificates" + - value: "selfsigned" + description: "Self-Signed Certificate" + - value: "ixcert" + description: "TrueNAS SCALE Certificate" + - variable: type + label: "Reverse Proxy Type" + schema: + type: string + default: "HTTP" + hidden: true + editable: false + required: true + - variable: serviceName + label: "Service name to proxy to" + schema: + hidden: true + editable: false + type: string + default: "" + - variable: entrypoint + label: "Select Entrypoint" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "websecure" + required: true + enum: + - value: "websecure" + description: "Websecure: HTTPS/TLS port 443" + - variable: hosts + label: "Hosts" + schema: + show_if: [["certType", "!=", "disabled"]] + type: list + default: [] + items: + - variable: host + label: "Host" + schema: + type: dict + attrs: + - variable: host + label: "Domain Name" + required: true + schema: + type: string + - variable: path + label: "path" + schema: + type: string + required: true + hidden: true + default: "/" + - variable: certificate + label: "Select TrueNAS SCALE Certificate" + schema: + type: int + show_if: [["certType", "=", "ixcert"]] + $ref: + - "definitions/certificate" + - variable: authForwardURL + label: "Forward Authentication URL" + schema: + show_if: [["certType", "!=", "disabled"]] + type: string + default: "" + - variable: tcp + label: "TCP Ingress Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable TCP Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + label: "Select Ingress Type" + schema: + type: string + default: "TCP" + required: true + editable: false + hidden: true + - variable: entrypoint + label: "Select Entrypoint" + schema: + type: string + default: "unificom" + required: true + enum: + - value: "unificom" + description: "Unifi Communications TCP: port 8080" + - variable: udp + label: "UDP Ingress Configuration" + schema: + type: dict + attrs: + - variable: enabled + label: "Enable UDP Ingress" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: type + label: "Select Ingress Type" + schema: + type: string + default: "UDP" + required: true + editable: false + hidden: true + - variable: entrypoint + label: "Select Entrypoint" + schema: + type: string + default: "stun-udp" + required: true + enum: + - value: "stun-udp" + description: "STUN UDP: port 3478" + - variable: PUID + group: "Advanced" + label: "PUID" + description: "Sets the PUID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + + - variable: PGID + group: "Advanced" + label: "PGID" + description: "Sets the PGID env var for LinuxServer.io (compatible) containers" + schema: + type: int + default: 568 + - variable: UMASK + group: "Advanced" + label: "UMASK" + description: "Sets the UMASK env var for LinuxServer.io (compatible) containers" + schema: + type: string + default: "002" + # Enable privileged + - variable: securityContext + group: "Advanced" + label: "Security Context" + schema: + type: dict + attrs: + - variable: privileged + label: "Enable privileged mode for Common-Chart based charts" + schema: + type: boolean + default: false + # Set Pod Security Policy + - variable: podSecurityContext + group: "Advanced" + label: "Pod Security Context" + schema: + type: dict + attrs: + - variable: runAsNonRoot + label: "runAsNonRoot" + schema: + type: boolean + default: false + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: The groupID this App of the user running the application" + schema: + type: int + default: 0 + - variable: supplementalGroups + label: "supplementalGroups" + description: "Additional groups this App needs access to" + schema: + type: list + default: [] + items: + - variable: Group + label: "Group" + schema: + type: int + default: 568 + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: "OnRootMismatch" + enum: + - value: "OnRootMismatch" + description: "OnRootMismatch" + - value: "Always" + description: "Always" diff --git a/scale-catalog-template/test/unifi/3.1.5/templates/common.yaml b/scale-catalog-template/test/unifi/3.1.5/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/scale-catalog-template/test/unifi/3.1.5/test_values.yaml b/scale-catalog-template/test/unifi/3.1.5/test_values.yaml new file mode 100644 index 00000000..b8989031 --- /dev/null +++ b/scale-catalog-template/test/unifi/3.1.5/test_values.yaml @@ -0,0 +1,54 @@ +# Default values for Unifi. + +image: + repository: jacobalberty/unifi + tag: 6.1.71 + pullPolicy: IfNotPresent + +strategy: + type: Recreate + +# Configure the Security Context for the Pod +podSecurityContext: + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + fsGroup: 0 + +envTpl: +# Permissions Settings + UNIFI_GID: "{{ .Values.PUID }}" + UNIFI_UID: "{{ .Values.PGID }}" + +services: + main: + port: + port: 8443 + tcp: + enabled: true + type: ClusterIP + port: + port: 8080 + protocol: TCP + targetPort: 8080 + udp: + enabled: true + type: ClusterIP + port: + port: 3478 + protocol: UDP + targetPort: 3478 + +env: {} + # TZ: + # PUID: + # PGID: + +persistence: + config: + enabled: true + mountPath: "/unifi" + emptyDir: true + accessMode: ReadWriteOnce + size: 1Gi + storageClass: "" diff --git a/scale-catalog-template/test/unifi/3.1.5/values.yaml b/scale-catalog-template/test/unifi/3.1.5/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/scale-catalog-template/test/unifi/item.yaml b/scale-catalog-template/test/unifi/item.yaml new file mode 100644 index 00000000..288785c1 --- /dev/null +++ b/scale-catalog-template/test/unifi/item.yaml @@ -0,0 +1,3 @@ +categories: + - Networking +icon_url: https://dl.ubnt.com/press/logo-UniFi.png