Storage rework part 1 (#337)

* Create docs for Integrated Persistent Storage

* add a clear note about possibly moving to PVC's in the (near) future.

* Adapt developer docs to reflect new storage system

* Move Apps fixed-storage to new Storage system
This commit is contained in:
Kjeld Schouten-Lebbing
2021-04-13 21:43:27 +02:00
committed by GitHub
parent 728cd300c8
commit eb48f8a4e1
491 changed files with 8313 additions and 11058 deletions

View File

@@ -5,82 +5,78 @@ This article serves as a development extention to the storage article available
##### Storage and Common-Chart
For all these storage solutions we require the commonchart to be added to the App.
The Common-Chart handles both the connection/addition of storage to the container and spinning up special k8s jobs to fix the permissions if requested.
The Common-Chart handles both the connection/addition of storage to the container and spinning up special k8s jobs to fix the permissions if requested for the Custom storage.
### Fixed Storage
### Integrated Persistent Storage
When adding an App, there are almost always certain folders that are required for solid Apps performance. For example config files that should be persistent across restarts.
For these storages we can easily add fixes values in the UI, these settings can not be disabled or removed and would, by default, bind to an ix_volume if nothing is changed.
For these storages we can easily add fixes values in the UI, these settings can not be disabled or removed and would, by default and preferably, be limited to the "internal" storage class
Preventing the user to disable them, ensures that users don't (by mistake) remove the storage.
#####
```
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
- variable: data
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
type: string
default: "/data"
hidden: true
- variable: emptyDir
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
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"
```
### Unlimited Custom Storage Mounts

View File

@@ -1,41 +1,69 @@
# Storage
TrueCharts tries to stay in sync with the Official IX-Systems App Catalog when it comes to storage. Which is currently pretty much a "work in progres".
TrueCharts uses multiple different storage systems:
### Storage types
Storage is currently seperated into two types:
1. ix_volumes
2. hostPath
While, from a k8s point of view, both of these are technically hostPath volumes, for you, as a user, there is a significant difference.
1. Integrated Persistent Storage
2. Custom Storage
##### ix_volumes
ix_volumes, are the default storage option for every TrueCharts App. They always get created and used unless "hostPath" is checked.
ix_volumes are fully managed by TrueNAS SCALE, they get created and destroyed on demand when creating, updating or editing an App.
But, most importantly, they can be reverted if an upgrade goes wrong. Which makes them an great to use for storing config files.
### Integrated Persistent Storage
They are, normally, stored in the following directory:
`/mnt/poolname/ix-applications/releases/releasename/volumes/ix_volumes/`
Integrated Persistent Storage is based around Kubernetes PVC's to integrate as closely as possible into TrueNAS SCALE. They are also heavily preconfigured to work as optimal as possible and provide options for future expansion such as NFS and Gluster options being added.
##### hostPath
These storage options inherently are not well suited to being shared with multiple applications.
We currently have the following Storage options for Integrated Persistent Storage storage:
1. Internal
##### Internal
This storage is integrated into TrueNAS SCALE and completely supports reverting upgrades. Thats why this is the default (and only actually supported!) way of storing App configuration files.
### Custom Storage
Besides the earlier mentioned Integrated Persistent Storage, we also provide the option to mount as many host folders as you want.
Custom storage currently actually quite simple:
It mounts a directory from your TrueNAS SCALE system, directly to a directory inside the App you're installing.
However: We might port this to PVC's in the future, which is not fully decided on yet.
Hostpath is quite simple: It mounts a directory from your TrueNAS SCALE system, directly to a directory inside the App you're installing.
There is, in contrast to the ix_volumes, no "special magic sauce" when adding hostPath storage.
### Permissions
Permission settings are rather important and are often something that causes issues for users.
For that reason TrueCharts introduced a feature to automatically set permissions individually for each of your storage options.
For both Integrated Persistent Storage and Custom storage, we offer special options to automatically set permissions to coincide with your container.
##### Integrated Persistent Storage
These get automatically set to be owned by root:__PGID__
There are no options available to configure this.
##### Custom storage
We offer an optional automatic set the permissions according to App PGID and PUID.
Setting permissions automatically means we `chown` the folder and all folder within it, to a user and group of your choice.
However, we only do so when installing or updating an app.
Please be aware that automatically setting ownership/permissions, does mean it overrides your current CHOWN and CHMOD settings. This could break things and yes, it will destroy your system if used carelessly. It's also not wise to enable the automatic permissions on mounted shares from an external system.
These permission get based on the user and group you enter in the App configuration dialog and default to `568` (the SCALE default Apps user).
### Custom Storage
Besides the earlier mentioned storage options, we also provide the option to mount as many host folders as you want. This is limited to hostPath mounts only.
### Depricated Storage systems
##### ix_volumes
ix_volumes, where the default storage option for every TrueCharts App before 21.04ALPHA. They always got created and used unless "hostPath" was checked.
ix_volumes where fully managed by TrueNAS SCALE, they got created and destroyed on demand when creating, updating or editing an App.
But, most importantly, they could be reverted if an upgrade goes wrong. Which makes them an great to use for storing config files.
They are, normally, stored in the following directory:
`/mnt/poolname/ix-applications/releases/releasename/volumes/ix_volumes/`

View File

@@ -1,526 +0,0 @@
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 and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources 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
# Configure Time Zone
- variable: timezone
group: "Container Image"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Container Image"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Container Image"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Container Image"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# 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: 36052
required: true
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: media
label: "media dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "media"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/media"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
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: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- 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: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: 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: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- 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:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
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: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@@ -1,60 +0,0 @@
# 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: false
emptyDir: false
media:
enabled: false
emptyDir: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## 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: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
## TrueCharts Config
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
media:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/media"
downloads:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/downloads"

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: bazarr
version: 2.2.2
version: 3.0.0
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

View File

@@ -7,7 +7,7 @@ groups:
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
@@ -173,7 +173,7 @@ questions:
label: "container port"
schema:
type: int
default: 3579
default: 6767
editable: false
hidden: true
- variable: targetport
@@ -181,7 +181,7 @@ questions:
description: "When connecting internally to this App, you'll need this port"
schema:
type: int
default: 3579
default: 6767
editable: false
hidden: true
- variable: nodePort
@@ -196,74 +196,69 @@ questions:
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
type: string
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
hidden: true
- variable: emptyDir
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
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: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
group: "Storage"
schema:
type: list
default: []

View File

@@ -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: ""

View File

@@ -1,468 +0,0 @@
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 and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources 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
# Configure Time Zone
- variable: timezone
group: "Container Image"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Container Image"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Container Image"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Container Image"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# 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: 36052
required: true
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: media
label: "media dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "media"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/media"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
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: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- 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: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: 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: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- 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:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
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: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@@ -1,57 +0,0 @@
# Default values for Calibre-Web.
image:
repository: linuxserver/calibre-web
pullPolicy: IfNotPresent
tag: version-0.6.11
strategy:
type: Recreate
startAsRoot: true
services:
main:
port:
port: 8083
env: {}
# TZ:
# PUID:
# PGID:
# UMASK:
# DOCKER_MODS:
persistence:
config:
enabled: false
emptyDir: false
books:
enabled: false
emptyDir: false
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## 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: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Set to true to retain the PVC upon helm uninstall
# skipuninstall: false
# existingClaim: ""
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
media:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/media"

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: calibre-web
version: 2.2.2
version: 3.0.0
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.

View File

@@ -0,0 +1,407 @@
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: "Resource Reservation"
description: "Specify resources 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
# Configure Time Zone
- variable: timezone
group: "Container Image"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Container Image"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Container Image"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Container Image"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# 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: 36052
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: additionalAppVolumeMounts
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: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- 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: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: 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: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- 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:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
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: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@@ -0,0 +1,32 @@
# Default values for Calibre-Web.
image:
repository: linuxserver/calibre-web
pullPolicy: IfNotPresent
tag: version-0.6.11
strategy:
type: Recreate
startAsRoot: true
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: ""

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: deluge
version: 2.2.2
version: 3.0.0
# upstream_version:
appVersion: "auto"
description: Deluge App for TrueNAS SCALE

View File

@@ -7,7 +7,7 @@ groups:
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
@@ -121,129 +121,69 @@ questions:
type: boolean
default: false
## Volumes
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "config"
required: true
editable: false
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
type: string
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: accessMode
label: "Access Mode (Advanced)"
description: "Allow or disallow multiple PVC's writhing to the same PVC"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
default: "ReadWriteOnce"
enum:
- value: "ReadWriteOnce"
description: "ReadWriteOnce"
- value: "ReadOnlyMany"
description: "ReadOnlyMany"
- value: "ReadWriteMany"
description: "ReadWriteMany"
- variable: size
label: "Size quotum of storage"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
type: string
default: "100Gi"
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
group: "Storage"
schema:
type: list
default: []

View File

@@ -29,14 +29,11 @@ services:
protocol: UDP
targetPort: 51413
appVolumeMounts:
persistence:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
# downloads:
# enabled: false
# emptyDir: false
# setPermissions: true
# mountPath: "/downloads"
emptyDir: true
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ""

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: freshrss
version: 2.2.2
version: 3.0.0
upstream_version: 2.3.1
appVersion: "auto"
description: FreshRSS is a self-hosted RSS feed aggregator

View File

@@ -7,7 +7,7 @@ groups:
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
@@ -196,73 +196,71 @@ questions:
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
- variable: config
label: "config dataset"
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
type: string
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
hidden: true
- variable: emptyDir
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
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: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
group: "Storage"
schema:
type: list
default: []

View File

@@ -21,14 +21,10 @@ env: {}
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
emptyDir: true
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ""

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: gaps
version: 2.2.2
version: 3.0.0
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.

View File

@@ -7,7 +7,7 @@ groups:
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
@@ -194,75 +194,72 @@ questions:
default: 36052
required: true
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
- variable: data
label: "data dataset"
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "data"
required: true
editable: false
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
type: string
default: "/usr/data"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
hidden: true
- variable: emptyDir
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
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: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
group: "Storage"
schema:
type: list
default: []

View File

@@ -17,15 +17,10 @@ env: {}
# TZ: UTC
persistence:
data:
enabled: false
emptyDir: false
mountPath: /usr/data
appVolumeMounts:
data:
enabled: true
mountPath: "/usr/data"
emptyDir: true
setPermissions: true
mountPath: "/data"
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ""

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: grocy
version: 2.2.2
version: 3.0.0
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

View File

@@ -0,0 +1,406 @@
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: "Resource Reservation"
description: "Specify resources 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
# Configure Time Zone
- variable: timezone
group: "Container Image"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Container Image"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Container Image"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Container Image"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# 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: 36052
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: additionalAppVolumeMounts
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: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- 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: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: 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: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- 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:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
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: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@@ -21,14 +21,10 @@ env: {}
# PGID:
persistence:
config:
enabled: false
emptyDir: false
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
emptyDir: true
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ""

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: heimdall
version: 2.2.2
version: 3.0.0
upstream_version: 4.1.1
appVersion: "auto"
description: An Application dashboard and launcher

View File

@@ -7,7 +7,7 @@ groups:
description: "additional container configuration"
- name: "Networking"
description: "Configure / service for container"
- name: "Storage and Devices"
- name: "Storage"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources to be allocated to workload"
@@ -196,74 +196,69 @@ questions:
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
- variable: persistence
label: "Integrated Persistent Storage"
description: "Websocket Service"
group: "Storage"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
label: "App Config Storage"
description: "Stores the Application Configuration."
schema:
type: dict
$ref:
- "normalize/ixVolume"
attrs:
- variable: enabled
label: "Enabled"
label: "Enable the storage"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
- variable: storageClass
label: "Type of Storage"
description: " Warning: Anything other than Internal will break rollback!"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
default: ""
enum:
- value: ""
description: "Internal"
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
label: "mountPath"
description: "Path inside the container the storage is mounted"
schema:
type: path
required: true
type: string
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
hidden: true
- variable: emptyDir
label: "Mount a ramdisk instead of actual storage"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
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: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
group: "Storage"
schema:
type: list
default: []

View File

@@ -25,15 +25,10 @@ probes:
enabled: true
persistence:
config:
enabled: false
emptyDir: false
## TrueCharts Config
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
emptyDir: true
accessMode: ReadWriteOnce
size: 1Gi
storageClass: ""

View File

@@ -1,526 +0,0 @@
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 and Devices"
description: "Persist and share data that is separate from the lifecycle of the container"
- name: "Resource Reservation"
description: "Specify resources 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
# Configure Time Zone
- variable: timezone
group: "Container Image"
label: "Timezone"
schema:
type: string
default: "Etc/UTC"
$ref:
- "definitions/timezone"
- variable: PUID
group: "Container Image"
label: "PUID"
description: "The UserID of the user running the application and owning the files"
schema:
type: int
default: 568
- variable: PGID
group: "Container Image"
label: "PGID"
description: "The groupID of the user/group running the application and owning the files"
schema:
type: int
default: 568
- variable: UMASK
group: "Container Image"
label: "UMASK (advanced)"
description: "The UMASK used if supported by the application"
schema:
type: string
default: "002"
# 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: 36052
required: true
## TrueCharts Specific
- variable: appVolumeMounts
label: "app storage"
group: "Storage and Devices"
schema:
type: dict
attrs:
# Config ------------------------
- variable: config
label: "config dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "config"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/config"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: media
label: "media dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "media"
required: true
editable: false
hidden: true
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/media"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: downloads
label: "downloads dataset"
schema:
type: dict
$ref:
- "normalize/ixVolume"
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: emptyDir
label: "emptyDir"
schema:
type: boolean
default: false
hidden: true
editable: false
- variable: datasetName
label: "Dataset Name"
schema:
type: string
default: "downloads"
required: true
editable: false
- variable: mountPath
label: "Mount Path"
description: "Path to mount inside the pod"
schema:
type: path
required: true
default: "/downloads"
editable: false
- variable: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- variable: hostPath
label: "Host Path"
schema:
type: hostpath
required: true
- variable: additionalAppVolumeMounts
label: "Custom app storage"
group: "Storage and Devices"
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: name
label: "Mountpoint Name"
schema:
type: string
default: ""
required: true
editable: true
- 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: hostPathEnabled
label: "host Path Enabled"
schema:
type: boolean
default: true
hidden: 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: "Web Reverse Proxy Configuration"
schema:
type: dict
attrs:
- variable: enabled
label: "Enable Web Reverse Proxy"
schema:
type: boolean
default: false
show_subquestions_if: true
subquestions:
- 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:
type: string
default: "websecure"
required: true
enum:
- value: "websecure"
description: "Websecure: HTTPS/TLS port 443"
- variable: hosts
label: "Hosts"
schema:
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: certType
label: "Select Certificate Type"
schema:
type: string
default: "selfsigned"
enum:
- value: ""
description: "No Encryption/TLS/Certificates"
- value: "selfsigned"
description: "Self-Signed Certificate"
- value: "ixcert"
description: "TrueNAS SCALE Certificate"
- variable: certificate
label: "Select TrueNAS SCALE Certificate"
schema:
type: int
show_if: [["certType", "=", "ixcert"]]
$ref:
- "definitions/certificate"
- variable: authForwardURL
label: "Forward Authentication URL"
schema:
type: string
default: ""

View File

@@ -1,63 +0,0 @@
# Default values for LazyLibrarian.
image:
repository: linuxserver/lazylibrarian
pullPolicy: IfNotPresent
tag: latest
strategy:
type: Recreate
startAsRoot: true
services:
main:
port:
port: 5299
env: {}
# TZ: UTC
# PUID: 1001
# PGID: 1001
persistence:
config:
enabled: false
emptyDir: false
media:
enabled: false
emptyDir: false
mountPath: /media
## Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## 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: "-"
# accessMode: ReadWriteOnce
# size: 1Gi
## Do not delete the pvc upon helm uninstall
# skipuninstall: false
# existingClaim: ""
## TrueCharts Config
appVolumeMounts:
config:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/config"
media:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/media"
downloads:
enabled: true
emptyDir: true
setPermissions: true
mountPath: "/downloads"

View File

@@ -1,7 +1,7 @@
apiVersion: v2
kubeVersion: ">=1.16.0-0"
name: lazylibrarian
version: 2.2.2
version: 3.0.0
upstream_version: 2.1.0
appVersion: "latest"
description: Get all your books, like series with Sonarr...

Some files were not shown because too many files have changed in this diff Show More