add labels and annotations to questions.yaml and revert oopsie (+13 squashed commit) (#843)
Squashed commit: [5ffcf238] Allow more lists [d185c0ed] Test annotationsList on persistence [6d8afee1] Allow setting ingressclass on ingress [a9dccd41] fix again [4a54beb8] fix broken servicetest again [62e85336] Fix mistake [e45db47b] remove services annotation test due to random annotations, fix new PVC tests [745a11bd] Add podAnnotationsList, podLabelsList, controllerAnnotationsList and controller:abelsList, [5d075f33] Add PVC test for labels and retain [43b64ddc] Fix PVC error [229143ed] Update common [d551d80f] add gracePeriodSeconds [350e6885] Add HPA GUI
This commit is contained in:
@@ -0,0 +1,24 @@
|
|||||||
|
# Patterns to ignore when building packages.
|
||||||
|
# This supports shell glob matching, relative path matching, and
|
||||||
|
# negation (prefixed with !). Only one pattern per line.
|
||||||
|
.DS_Store
|
||||||
|
# Common VCS dirs
|
||||||
|
.git/
|
||||||
|
.gitignore
|
||||||
|
.bzr/
|
||||||
|
.bzrignore
|
||||||
|
.hg/
|
||||||
|
.hgignore
|
||||||
|
.svn/
|
||||||
|
# Common backup files
|
||||||
|
*.swp
|
||||||
|
*.bak
|
||||||
|
*.tmp
|
||||||
|
*~
|
||||||
|
# Various IDEs
|
||||||
|
.project
|
||||||
|
.idea/
|
||||||
|
*.tmproj
|
||||||
|
.vscode/
|
||||||
|
# OWNERS file for Kubernetes
|
||||||
|
OWNERS
|
||||||
@@ -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 Internally" quick-start guide:
|
||||||
|
https://truecharts.org/manual/Quick-Start%20Guides/14-linking-apps/
|
||||||
|
|
||||||
|
##### Available config options
|
||||||
|
In the future this page is going to contain an automated list of options available in the installation/edit UI.
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
appVersion: auto
|
||||||
|
dependencies:
|
||||||
|
- name: common
|
||||||
|
repository: https://truecharts.org/
|
||||||
|
version: 6.10.7
|
||||||
|
deprecated: false
|
||||||
|
description: API Support for your favorite torrent trackers.
|
||||||
|
home: https://github.com/truecharts/apps/tree/master/charts/stable/jackett
|
||||||
|
icon: https://truecharts.org/_static/img/jackett-icon.png
|
||||||
|
keywords:
|
||||||
|
- jackett
|
||||||
|
- torrent
|
||||||
|
- usenet
|
||||||
|
kubeVersion: '>=1.16.0-0'
|
||||||
|
maintainers:
|
||||||
|
- email: info@truecharts.org
|
||||||
|
name: TrueCharts
|
||||||
|
url: truecharts.org
|
||||||
|
- email: kjeld@schouten-lebbing.nl
|
||||||
|
name: Ornias1993
|
||||||
|
url: truecharts.org
|
||||||
|
name: prototypegui
|
||||||
|
sources:
|
||||||
|
- https://github.com/Jackett/Jackett
|
||||||
|
type: application
|
||||||
|
version: 6.8.7
|
||||||
@@ -0,0 +1,42 @@
|
|||||||
|
# Introduction
|
||||||
|
|
||||||
|
  
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
* <https://github.com/Jackett/Jackett>
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Kubernetes: `>=1.16.0-0`
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Repository | Name | Version |
|
||||||
|
|------------|------|---------|
|
||||||
|
| https://truecharts.org/ | common | 6.10.7 |
|
||||||
|
|
||||||
|
## Installing the Chart
|
||||||
|
|
||||||
|
To install this App on TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/03-Installing-an-App/).
|
||||||
|
|
||||||
|
## Uninstalling the Chart
|
||||||
|
|
||||||
|
To remove this App from TrueNAS SCALE check our [Quick-Start Guide](https://truecharts.org/manual/Quick-Start%20Guides/07-Deleting-an-App/).
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
- Please check our [quick-start guides](https://truecharts.org/manual/Quick-Start%20Guides/01-Open-Apps/) first.
|
||||||
|
- See the [Wiki](https://truecharts.org)
|
||||||
|
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
|
||||||
|
- 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
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
categories:
|
||||||
|
- media
|
||||||
|
icon_url: https://truecharts.org/_static/img/jackett-icon.png
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
##
|
||||||
|
# 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/k8s-at-home/jackett
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: v0.18.616
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
readiness:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
startup:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
##
|
||||||
|
# Most other defaults are set in questions.yaml
|
||||||
|
# For other options please refer to the wiki, default_values.yaml or the common library chart
|
||||||
|
##
|
||||||
@@ -0,0 +1,939 @@
|
|||||||
|
groups:
|
||||||
|
- name: "Container Image"
|
||||||
|
description: "Image to be used for container"
|
||||||
|
- name: "Controller"
|
||||||
|
description: "Configure workload deployment"
|
||||||
|
- name: "Container Configuration"
|
||||||
|
description: "additional container configuration"
|
||||||
|
- name: "App Configuration"
|
||||||
|
description: "App specific config options"
|
||||||
|
- name: "Networking and Services"
|
||||||
|
description: "Configure Network and Services for container"
|
||||||
|
- name: "Storage and Persistence"
|
||||||
|
description: "Persist and share data that is separate from the container"
|
||||||
|
- name: "Ingress"
|
||||||
|
description: "Ingress Configuration"
|
||||||
|
- name: "Security and Permissions"
|
||||||
|
description: "Configure security context and permissions"
|
||||||
|
- name: "Resources and Devices"
|
||||||
|
description: "Specify resources/devices to be allocated to workload"
|
||||||
|
- name: "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:
|
||||||
|
- 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
|
||||||
|
- variable: controller
|
||||||
|
group: "Controller"
|
||||||
|
label: ""
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: type
|
||||||
|
description: "Please specify type of workload to deploy"
|
||||||
|
label: "(Advanced) Controller Type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "deployment"
|
||||||
|
required: true
|
||||||
|
enum:
|
||||||
|
- value: "deployment"
|
||||||
|
description: "Deployment"
|
||||||
|
- value: "statefulset"
|
||||||
|
description: "Statefulset"
|
||||||
|
- value: "daemonset"
|
||||||
|
description: "Daemonset"
|
||||||
|
- variable: replicas
|
||||||
|
description: "Number of desired pod replicas"
|
||||||
|
label: "Desired Replicas"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 1
|
||||||
|
required: true
|
||||||
|
- variable: strategy
|
||||||
|
description: "Please specify type of workload to deploy"
|
||||||
|
label: "(Advanced) Update Strategy"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "Recreate"
|
||||||
|
required: true
|
||||||
|
enum:
|
||||||
|
- value: "Recreate"
|
||||||
|
description: "Recreate: Kill existing pods before creating new ones"
|
||||||
|
- value: "RollingUpdate"
|
||||||
|
description: "RollingUpdate: Create new pods and then kill old ones"
|
||||||
|
- value: "OnDelete"
|
||||||
|
description: "(Legacy) OnDelete: ignore .spec.template changes"
|
||||||
|
- variable: labelsList
|
||||||
|
label: "Controller Labels"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: labelItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: annotationsList
|
||||||
|
label: " Controller Annotations"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: annotationItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
|
||||||
|
- variable: podLabelsList
|
||||||
|
group: "Container Configuration"
|
||||||
|
label: "Pod Labels"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: podLabelItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
- variable: podAnnotationsList
|
||||||
|
group: "Container Configuration"
|
||||||
|
label: "Pod Annotations"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: podAnnotationItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
- variable: termination
|
||||||
|
group: "Container Configuration"
|
||||||
|
label: "Termination settings"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: gracePeriodSeconds
|
||||||
|
label: "Grace Period Seconds"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 10
|
||||||
|
|
||||||
|
- variable: env
|
||||||
|
group: "Container Configuration"
|
||||||
|
label: "Image Environment"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: TZ
|
||||||
|
label: "Timezone"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "Etc/UTC"
|
||||||
|
$ref:
|
||||||
|
- "definitions/timezone"
|
||||||
|
- variable: UMASK
|
||||||
|
label: "UMASK"
|
||||||
|
description: "Sets the UMASK env var for LinuxServer.io (compatible) containers"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "002"
|
||||||
|
# Configure Enviroment Variables
|
||||||
|
- variable: envList
|
||||||
|
label: "Image environment"
|
||||||
|
group: "Container Configuration"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: envItem
|
||||||
|
label: "Environment Variable"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
- variable: hostNetwork
|
||||||
|
group: "Networking and Services"
|
||||||
|
label: "Enable Host Networking"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
|
||||||
|
- variable: service
|
||||||
|
group: "Networking and Services"
|
||||||
|
label: "Configure Service(s)"
|
||||||
|
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, Loadbalancer exposes the service using the system loadbalancer"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "NodePort"
|
||||||
|
enum:
|
||||||
|
- value: "NodePort"
|
||||||
|
description: "NodePort"
|
||||||
|
- value: "ClusterIP"
|
||||||
|
description: "ClusterIP"
|
||||||
|
- value: "LoadBalancer"
|
||||||
|
description: "LoadBalancer"
|
||||||
|
- variable: loadBalancerIP
|
||||||
|
label: "LoadBalancer IP"
|
||||||
|
description: "LoadBalancerIP"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "LoadBalancer"]]
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: externalIPs
|
||||||
|
label: "External IP's"
|
||||||
|
description: "External IP's"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "LoadBalancer"]]
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: externalIP
|
||||||
|
label: "External IP"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: ports
|
||||||
|
label: "Service's Port(s) Configuration"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: main
|
||||||
|
label: "Main Service Port Configuration"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable the port"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
hidden: true
|
||||||
|
- variable: protocol
|
||||||
|
label: "Port Type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "HTTP"
|
||||||
|
enum:
|
||||||
|
- value: HTTP
|
||||||
|
description: "HTTP"
|
||||||
|
- value: "HTTPS"
|
||||||
|
description: "HTTPS"
|
||||||
|
- value: TCP
|
||||||
|
description: "TCP"
|
||||||
|
- value: "UDP"
|
||||||
|
description: "UDP"
|
||||||
|
- variable: port
|
||||||
|
label: "Container Port"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 9117
|
||||||
|
editable: false
|
||||||
|
hidden: true
|
||||||
|
- variable: targetPort
|
||||||
|
label: "Target Port"
|
||||||
|
description: "This port exposes the container port on the service"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 9117
|
||||||
|
editable: true
|
||||||
|
required: true
|
||||||
|
- variable: nodePort
|
||||||
|
label: "Node Port (Optional)"
|
||||||
|
description: "This port gets exposed to the node. Only considered when service type is NodePort"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
min: 9000
|
||||||
|
max: 65535
|
||||||
|
default: 36009
|
||||||
|
|
||||||
|
- variable: persistence
|
||||||
|
label: "Integrated Persistent Storage"
|
||||||
|
group: "Storage and Persistence"
|
||||||
|
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
|
||||||
|
- variable: type
|
||||||
|
label: "(Advanced) Type of Storage"
|
||||||
|
description: "Sets the persistence type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "pvc"
|
||||||
|
enum:
|
||||||
|
- value: "pvc"
|
||||||
|
description: "pvc"
|
||||||
|
- value: "emptyDir"
|
||||||
|
description: "emptyDir"
|
||||||
|
- value: "hostPath"
|
||||||
|
description: "hostPath"
|
||||||
|
- variable: storageClass
|
||||||
|
label: "(Advanced) storageClass"
|
||||||
|
description: " Warning: Anything other than SCALE-ZFS will break rollback!"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
type: string
|
||||||
|
default: "SCALE-ZFS"
|
||||||
|
- variable: labelsList
|
||||||
|
label: "Labels"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: labelItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: annotationsList
|
||||||
|
label: "Annotations"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: annotationItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: setPermissions
|
||||||
|
label: "Automatic Permissions"
|
||||||
|
description: "Automatically set permissions on install"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
- variable: readOnly
|
||||||
|
label: "readOnly"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: hostPath
|
||||||
|
label: "hostPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: hostpath
|
||||||
|
- variable: hostPathType
|
||||||
|
label: "hostPath Type"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
enum:
|
||||||
|
- value: ""
|
||||||
|
description: "Default"
|
||||||
|
- value: "DirectoryOrCreate"
|
||||||
|
description: "DirectoryOrCreate"
|
||||||
|
- value: "Directory"
|
||||||
|
description: "Directory"
|
||||||
|
- value: "FileOrCreate"
|
||||||
|
description: "FileOrCreate"
|
||||||
|
- value: "File"
|
||||||
|
description: "File"
|
||||||
|
- value: "Socket"
|
||||||
|
description: "Socket"
|
||||||
|
- value: "CharDevice"
|
||||||
|
description: "CharDevice"
|
||||||
|
- value: "BlockDevice"
|
||||||
|
description: "BlockDevice"
|
||||||
|
- variable: mountPath
|
||||||
|
label: "mountPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "/config"
|
||||||
|
hidden: true
|
||||||
|
- variable: medium
|
||||||
|
label: "EmptyDir Medium"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "emptyDir"]]
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
enum:
|
||||||
|
- value: ""
|
||||||
|
description: "Default"
|
||||||
|
- value: "Memory"
|
||||||
|
description: "Memory"
|
||||||
|
- variable: accessMode
|
||||||
|
label: "Access Mode (Advanced)"
|
||||||
|
description: "Allow or disallow multiple PVC's writhing to the same PV"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
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:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
type: string
|
||||||
|
default: "100Gi"
|
||||||
|
- variable: persistenceList
|
||||||
|
label: "Additional app storage"
|
||||||
|
group: "Storage and Persistence"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: persistenceListEntry
|
||||||
|
label: "Custom Storage"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable the storage"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
- variable: type
|
||||||
|
label: "(Advanced) Type of Storage"
|
||||||
|
description: "Sets the persistence type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "hostPath"
|
||||||
|
enum:
|
||||||
|
- value: "pvc"
|
||||||
|
description: "pvc"
|
||||||
|
- value: "emptyDir"
|
||||||
|
description: "emptyDir"
|
||||||
|
- value: "hostPath"
|
||||||
|
description: "hostPath"
|
||||||
|
- variable: storageClass
|
||||||
|
label: "(Advanced) storageClass"
|
||||||
|
description: " Warning: Anything other than SCALE-ZFS will break rollback!"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
type: string
|
||||||
|
default: "SCALE-ZFS"
|
||||||
|
- variable: labelsList
|
||||||
|
label: "Labels"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: labelItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: annotationsList
|
||||||
|
label: "Annotations"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: annotationItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: setPermissions
|
||||||
|
label: "Automatic Permissions"
|
||||||
|
description: "Automatically set permissions on install"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
- variable: readOnly
|
||||||
|
label: "readOnly"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: hostPath
|
||||||
|
label: "hostPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: hostpath
|
||||||
|
- variable: hostPathType
|
||||||
|
label: "hostPath Type"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "hostPath"]]
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
enum:
|
||||||
|
- value: ""
|
||||||
|
description: "Default"
|
||||||
|
- value: "DirectoryOrCreate"
|
||||||
|
description: "DirectoryOrCreate"
|
||||||
|
- value: "Directory"
|
||||||
|
description: "Directory"
|
||||||
|
- value: "FileOrCreate"
|
||||||
|
description: "FileOrCreate"
|
||||||
|
- value: "File"
|
||||||
|
description: "File"
|
||||||
|
- value: "Socket"
|
||||||
|
description: "Socket"
|
||||||
|
- value: "CharDevice"
|
||||||
|
description: "CharDevice"
|
||||||
|
- value: "BlockDevice"
|
||||||
|
description: "BlockDevice"
|
||||||
|
- variable: mountPath
|
||||||
|
label: "mountPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: ""
|
||||||
|
- variable: medium
|
||||||
|
label: "EmptyDir Medium"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "emptyDir"]]
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
enum:
|
||||||
|
- value: ""
|
||||||
|
description: "Default"
|
||||||
|
- value: "Memory"
|
||||||
|
description: "Memory"
|
||||||
|
- variable: accessMode
|
||||||
|
label: "Access Mode (Advanced)"
|
||||||
|
description: "Allow or disallow multiple PVC's writhing to the same PVC"
|
||||||
|
schema:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
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:
|
||||||
|
show_if: [["type", "=", "pvc"]]
|
||||||
|
type: string
|
||||||
|
default: "100Gi"
|
||||||
|
|
||||||
|
- variable: ingress
|
||||||
|
label: ""
|
||||||
|
group: "Ingress"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: main
|
||||||
|
label: "Main Ingress"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable Ingress"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
show_subquestions_if: true
|
||||||
|
subquestions:
|
||||||
|
- variable: ingressClassName
|
||||||
|
label: "IngressClass Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: labelsList
|
||||||
|
label: "Labels"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: labelItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: annotationsList
|
||||||
|
label: "Annotations"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: annotationItem
|
||||||
|
label: "Label"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: value
|
||||||
|
label: "Value"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
- variable: hosts
|
||||||
|
label: "Hosts"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: hostEntry
|
||||||
|
label: "Host"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: host
|
||||||
|
label: "HostName"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
required: true
|
||||||
|
- variable: paths
|
||||||
|
label: "Paths"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: pathEntry
|
||||||
|
label: "Host"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: path
|
||||||
|
label: "path"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: "/"
|
||||||
|
- variable: pathType
|
||||||
|
label: "pathType"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
required: true
|
||||||
|
default: "Prefix"
|
||||||
|
- variable: tls
|
||||||
|
label: "TLS-Settings"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: tlsEntry
|
||||||
|
label: "Host"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: hosts
|
||||||
|
label: "Certificate Hosts"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: host
|
||||||
|
label: "Host"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
required: true
|
||||||
|
- variable: scaleCert
|
||||||
|
label: "Select TrueNAS SCALE Certificate"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
$ref:
|
||||||
|
- "definitions/certificate"
|
||||||
|
- variable: entrypoint
|
||||||
|
label: "Traefik Entrypoint"
|
||||||
|
description: "Entrypoint used by Traefik when using Traefik as Ingress Provider"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "websecure"
|
||||||
|
required: true
|
||||||
|
- variable: middlewares
|
||||||
|
label: "Traefik Middlewares"
|
||||||
|
description: "Add previously created Traefik Middlewares to this Ingress"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: name
|
||||||
|
label: "Name"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- variable: securityContext
|
||||||
|
group: "Security and Permissions"
|
||||||
|
label: "Security Context"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: privileged
|
||||||
|
label: Privileged mode"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: readOnlyRootFilesystem
|
||||||
|
label: "ReadOnly Root Filesystem"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
- variable: allowPrivilegeEscalation
|
||||||
|
label: "Allow Privilege Escalation"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
|
||||||
|
- variable: podSecurityContext
|
||||||
|
group: "Security and Permissions"
|
||||||
|
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: fsGroup
|
||||||
|
label: "fsGroup"
|
||||||
|
description: "The group that should own ALL storage."
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 568
|
||||||
|
- variable: supplementalGroups
|
||||||
|
label: "When should we take ownership?"
|
||||||
|
schema:
|
||||||
|
type: list
|
||||||
|
default: []
|
||||||
|
items:
|
||||||
|
- variable: supplementalGroupsEntry
|
||||||
|
label: "When should we take ownership?"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
- variable: fsGroupChangePolicy
|
||||||
|
label: "When should we take ownership?"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "OnRootMismatch"
|
||||||
|
enum:
|
||||||
|
- value: "OnRootMismatch"
|
||||||
|
description: "OnRootMismatch"
|
||||||
|
- value: "Always"
|
||||||
|
description: "Always"
|
||||||
|
- variable: resources
|
||||||
|
group: "Resources and Devices"
|
||||||
|
label: "Resource Limits"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: limits
|
||||||
|
label: "Advanced Limit Resource Consumption"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: cpu
|
||||||
|
label: "CPU"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "2000m"
|
||||||
|
- variable: memory
|
||||||
|
label: "Memory RAM"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "2Gi"
|
||||||
|
- variable: requests
|
||||||
|
label: "Advanced Request minimum resources required"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: cpu
|
||||||
|
label: "CPU"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "10m"
|
||||||
|
- variable: memory
|
||||||
|
label: "Memory RAM"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "50Mi"
|
||||||
|
|
||||||
|
- variable: autoscaling
|
||||||
|
group: "Resources and Devices"
|
||||||
|
label: "Horizontal Pod Autoscaler"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "enabled"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: false
|
||||||
|
show_subquestions_if: true
|
||||||
|
subquestions:
|
||||||
|
- variable: target
|
||||||
|
label: "Target"
|
||||||
|
description: "deployment name, defaults to main deployment"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
- variable: minReplicas
|
||||||
|
label: "Minimum Replicas"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 1
|
||||||
|
- variable: maxReplicas
|
||||||
|
label: "Maximum Replicas"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 5
|
||||||
|
- variable: targetCPUUtilizationPercentage
|
||||||
|
label: "Target CPU Utilization Percentage"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 80
|
||||||
|
- variable: targetMemoryUtilizationPercentage
|
||||||
|
label: "Target Memory Utilization Percentage"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 80
|
||||||
@@ -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
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{{ include "common.all" . }}
|
||||||
@@ -0,0 +1,41 @@
|
|||||||
|
# Default values for Jackett.
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: ghcr.io/k8s-at-home/jackett
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: v0.18.616
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
|
||||||
|
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
enabled: true
|
||||||
|
ports:
|
||||||
|
main:
|
||||||
|
port: 9117
|
||||||
|
|
||||||
|
probes:
|
||||||
|
liveness:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
readiness:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
startup:
|
||||||
|
path: "/UI/Login"
|
||||||
|
|
||||||
|
env: {}
|
||||||
|
# TZ: UTC
|
||||||
|
# PUID: 1001
|
||||||
|
# PGID: 1001
|
||||||
|
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
config:
|
||||||
|
enabled: true
|
||||||
|
mountPath: "/config"
|
||||||
|
type: pvc
|
||||||
|
accessMode: ReadWriteOnce
|
||||||
|
size: "100Gi"
|
||||||
@@ -18,4 +18,4 @@ maintainers:
|
|||||||
name: common
|
name: common
|
||||||
sources: null
|
sources: null
|
||||||
type: library
|
type: library
|
||||||
version: 6.10.7
|
version: 6.11.0
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ metadata:
|
|||||||
name: {{ $ingressName }}
|
name: {{ $ingressName }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "common.labels" . | nindent 4 }}
|
{{- include "common.labels" . | nindent 4 }}
|
||||||
|
{{- with $values.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
annotations:
|
annotations:
|
||||||
"traefik.ingress.kubernetes.io/router.entrypoints": {{ $values.entrypoint | default "websecure" }}
|
"traefik.ingress.kubernetes.io/router.entrypoints": {{ $values.entrypoint | default "websecure" }}
|
||||||
"traefik.ingress.kubernetes.io/router.middlewares": {{ $middlewares | quote }}
|
"traefik.ingress.kubernetes.io/router.middlewares": {{ $middlewares | quote }}
|
||||||
|
|||||||
@@ -23,9 +23,9 @@ kind: PersistentVolumeClaim
|
|||||||
apiVersion: v1
|
apiVersion: v1
|
||||||
metadata:
|
metadata:
|
||||||
name: {{ $pvcName }}
|
name: {{ $pvcName }}
|
||||||
{{- if or $values.skipuninstall $values.annotations }}
|
{{- if or $values.retain $values.annotations }}
|
||||||
annotations:
|
annotations:
|
||||||
{{- if $values.skipuninstall }}
|
{{- if $values.retain }}
|
||||||
"helm.sh/resource-policy": keep
|
"helm.sh/resource-policy": keep
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- with $values.annotations }}
|
{{- with $values.annotations }}
|
||||||
@@ -34,6 +34,9 @@ metadata:
|
|||||||
{{- end }}
|
{{- end }}
|
||||||
labels:
|
labels:
|
||||||
{{- include "common.labels" . | nindent 4 }}
|
{{- include "common.labels" . | nindent 4 }}
|
||||||
|
{{- with $values.labels }}
|
||||||
|
{{- toYaml . | nindent 4 }}
|
||||||
|
{{- end }}
|
||||||
spec:
|
spec:
|
||||||
accessModes:
|
accessModes:
|
||||||
- {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }}
|
- {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }}
|
||||||
|
|||||||
@@ -7,6 +7,40 @@
|
|||||||
{{- $_ := set . "Values" (deepCopy $mergedValues) -}}
|
{{- $_ := set . "Values" (deepCopy $mergedValues) -}}
|
||||||
{{- end -}}
|
{{- end -}}
|
||||||
|
|
||||||
|
{{/* merge podAnnotationsList with podAnnotations */}}
|
||||||
|
{{- $podAnnotationsDict := dict }}
|
||||||
|
{{- range .Values.podAnnotationsList }}
|
||||||
|
{{- $_ := set $podAnnotationsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $podanno := merge .Values.podAnnotations $podAnnotationsDict }}
|
||||||
|
{{- $_ := set .Values "podAnnotations" (deepCopy $podanno) -}}
|
||||||
|
|
||||||
|
{{/* merge podLabelsList with podLabels */}}
|
||||||
|
{{- $podLabelsDict := dict }}
|
||||||
|
{{- range .Values.controller.labelsList }}
|
||||||
|
{{- $_ := set $podLabelsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $podlab := merge .Values.controller.labels $podLabelsDict }}
|
||||||
|
{{- $_ := set .Values.controller "labels" (deepCopy $podlab) -}}
|
||||||
|
|
||||||
|
{{/* merge controllerAnnotationsList with controllerAnnotations */}}
|
||||||
|
{{- $controllerAnnotationsDict := dict }}
|
||||||
|
{{- range .Values.controller.annotationsList }}
|
||||||
|
{{- $_ := set $controllerAnnotationsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $controlleranno := merge .Values.controller.annotations $controllerAnnotationsDict }}
|
||||||
|
{{- $_ := set .Values.controller "annotations" (deepCopy $controlleranno) -}}
|
||||||
|
|
||||||
|
{{/* merge controllerLabelsList with controllerLabels */}}
|
||||||
|
{{- $controllerLabelsDict := dict }}
|
||||||
|
{{- range .Values.controller.labelsList }}
|
||||||
|
{{- $_ := set $controllerLabelsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $controllerlab := merge .Values.controller.labels $controllerLabelsDict }}
|
||||||
|
{{- $_ := set .Values "labels" (deepCopy $controllerlab) -}}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
{{/* merge persistenceList with Persitence */}}
|
{{/* merge persistenceList with Persitence */}}
|
||||||
{{- $perDict := dict }}
|
{{- $perDict := dict }}
|
||||||
{{- range $index, $item := .Values.persistenceList -}}
|
{{- range $index, $item := .Values.persistenceList -}}
|
||||||
@@ -29,6 +63,30 @@
|
|||||||
{{- $_ := set .Values "persistence" (deepCopy $per) -}}
|
{{- $_ := set .Values "persistence" (deepCopy $per) -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* merge persistenceAnnotationsList with persistenceAnnotations */}}
|
||||||
|
{{- range $index, $item := .Values.persistence }}
|
||||||
|
{{- $persistenceAnnotationsDict := dict }}
|
||||||
|
{{- range $item.annotationsList }}
|
||||||
|
{{- $_ := set $persistenceAnnotationsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $tmp := $item.annotations }}
|
||||||
|
{{- $persistenceanno := merge $tmp $persistenceAnnotationsDict }}
|
||||||
|
{{- $_ := set $item "annotations" (deepCopy $persistenceanno) -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* merge persistenceLabelsList with persistenceLabels */}}
|
||||||
|
{{- range $index, $item := .Values.persistence }}
|
||||||
|
{{- $persistenceLabelsDict := dict }}
|
||||||
|
{{- range $item.labelsList }}
|
||||||
|
{{- $_ := set $persistenceLabelsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $tmp := $item.labels }}
|
||||||
|
{{- $persistencelab := merge $tmp $persistenceLabelsDict }}
|
||||||
|
{{- $_ := set $item "labels" (deepCopy $persistencelab) -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
{{/* merge ingressList with ingress */}}
|
{{/* merge ingressList with ingress */}}
|
||||||
{{- $ingDict := dict }}
|
{{- $ingDict := dict }}
|
||||||
{{- range $index, $item := .Values.ingressList -}}
|
{{- range $index, $item := .Values.ingressList -}}
|
||||||
@@ -41,6 +99,30 @@
|
|||||||
{{- $ing := merge .Values.ingress $ingDict }}
|
{{- $ing := merge .Values.ingress $ingDict }}
|
||||||
{{- $_ := set .Values "ingress" (deepCopy $ing) -}}
|
{{- $_ := set .Values "ingress" (deepCopy $ing) -}}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* merge ingressAnnotationsList with ingressAnnotations */}}
|
||||||
|
{{- range $index, $item := .Values.ingress }}
|
||||||
|
{{- $ingressAnnotationsDict := dict }}
|
||||||
|
{{- range $item.annotationsList }}
|
||||||
|
{{- $_ := set $ingressAnnotationsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $tmp := $item.annotations }}
|
||||||
|
{{- $ingressanno := merge $tmp $ingressAnnotationsDict }}
|
||||||
|
{{- $_ := set $item "annotations" (deepCopy $ingressanno) -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
|
|
||||||
|
{{/* merge ingressLabelsList with ingressLabels */}}
|
||||||
|
{{- range $index, $item := .Values.ingress }}
|
||||||
|
{{- $ingressLabelsDict := dict }}
|
||||||
|
{{- range $item.labelsList }}
|
||||||
|
{{- $_ := set $ingressLabelsDict .name .value }}
|
||||||
|
{{- end }}
|
||||||
|
{{- $tmp := $item.labels }}
|
||||||
|
{{- $ingresslab := merge $tmp $ingressLabelsDict }}
|
||||||
|
{{- $_ := set $item "labels" (deepCopy $ingresslab) -}}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
{{/* Enable privileged securitycontext when deviceList is used */}}
|
{{/* Enable privileged securitycontext when deviceList is used */}}
|
||||||
{{- if .Values.securityContext.privileged }}
|
{{- if .Values.securityContext.privileged }}
|
||||||
{{- else if .Values.deviceList }}
|
{{- else if .Values.deviceList }}
|
||||||
|
|||||||
@@ -27,6 +27,12 @@
|
|||||||
lifecycle:
|
lifecycle:
|
||||||
{{- toYaml . | nindent 4 }}
|
{{- toYaml . | nindent 4 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- with .Values.termination.messagePath }}
|
||||||
|
terminationMessagePath: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.termination.messagePolicy }}
|
||||||
|
terminationMessagePolicy: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
|
||||||
env:
|
env:
|
||||||
{{- range $key, $value := .Values.envTpl }}
|
{{- range $key, $value := .Values.envTpl }}
|
||||||
|
|||||||
@@ -35,6 +35,9 @@ dnsConfig:
|
|||||||
{{- toYaml . | nindent 2 }}
|
{{- toYaml . | nindent 2 }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
||||||
|
{{- with .Values.termination.gracePeriodSeconds }}
|
||||||
|
terminationGracePeriodSeconds: {{ . }}
|
||||||
|
{{- end }}
|
||||||
{{- with .Values.initContainers }}
|
{{- with .Values.initContainers }}
|
||||||
initContainers:
|
initContainers:
|
||||||
{{- toYaml . | nindent 2 }}
|
{{- toYaml . | nindent 2 }}
|
||||||
|
|||||||
@@ -18,6 +18,9 @@
|
|||||||
{{- with $item.readOnly }}
|
{{- with $item.readOnly }}
|
||||||
readOnly: {{ . }}
|
readOnly: {{ . }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
{{- with $item.mountPropagation }}
|
||||||
|
mountPropagation: {{ . }}
|
||||||
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
{{- end }}
|
{{- end }}
|
||||||
|
|||||||
@@ -73,3 +73,96 @@ func (suite *PersistenceVolumeClaimTestSuite) TestStorageClass() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (suite *PersistenceVolumeClaimTestSuite) TestMetaData() {
|
||||||
|
defaultChartAnnotations := make(map[string]interface{})
|
||||||
|
defaultChartLabels := map[string]interface{}{
|
||||||
|
"app.kubernetes.io/instance": "common-test",
|
||||||
|
"app.kubernetes.io/managed-by": "Helm",
|
||||||
|
"app.kubernetes.io/name": "common-test",
|
||||||
|
"app.kubernetes.io/version":"none",
|
||||||
|
"helm.sh/chart": "common-test-3.1.0",
|
||||||
|
}
|
||||||
|
|
||||||
|
tests := map[string]struct {
|
||||||
|
values []string
|
||||||
|
expectedAnnotations map[string]interface{}
|
||||||
|
expectedLabels map[string]interface{}
|
||||||
|
}{
|
||||||
|
"Default": {
|
||||||
|
values: []string{
|
||||||
|
"persistence.config.enabled=true",
|
||||||
|
},
|
||||||
|
expectedAnnotations: nil,
|
||||||
|
expectedLabels: nil,
|
||||||
|
},
|
||||||
|
"NoRetain": {
|
||||||
|
values: []string{
|
||||||
|
"persistence.config.enabled=true",
|
||||||
|
"persistence.config.labels.test_label=test",
|
||||||
|
"persistence.config.annotations.test_annotation=test",
|
||||||
|
},
|
||||||
|
expectedAnnotations: map[string]interface{}{
|
||||||
|
"test_annotation": "test",
|
||||||
|
},
|
||||||
|
expectedLabels: map[string]interface{}{
|
||||||
|
"test_label": "test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
"Retain": {
|
||||||
|
values: []string{
|
||||||
|
"persistence.config.enabled=true",
|
||||||
|
"persistence.config.retain=true",
|
||||||
|
"persistence.config.labels.test_label=test",
|
||||||
|
"persistence.config.annotations.test_annotation=test",
|
||||||
|
},
|
||||||
|
expectedAnnotations: map[string]interface{}{
|
||||||
|
"helm.sh/resource-policy": "keep",
|
||||||
|
"test_annotation": "test",
|
||||||
|
},
|
||||||
|
expectedLabels: map[string]interface{}{
|
||||||
|
"test_label": "test",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for name, tc := range tests {
|
||||||
|
suite.Suite.Run(name, func() {
|
||||||
|
err := suite.Chart.Render(nil, tc.values, nil)
|
||||||
|
if err != nil {
|
||||||
|
suite.FailNow(err.Error())
|
||||||
|
}
|
||||||
|
|
||||||
|
pvcManifest := suite.Chart.Manifests.Get("PersistentVolumeClaim", "common-test-config")
|
||||||
|
suite.Assertions.NotEmpty(pvcManifest)
|
||||||
|
|
||||||
|
pvcAnnotations := pvcManifest.Path("metadata.annotations").Data()
|
||||||
|
testAnnotations := make(map[string]interface{})
|
||||||
|
for index, element := range defaultChartAnnotations {
|
||||||
|
testAnnotations[index] = element
|
||||||
|
}
|
||||||
|
for index, element := range tc.expectedAnnotations {
|
||||||
|
testAnnotations[index] = element
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(testAnnotations) == 0 {
|
||||||
|
suite.Assertions.Equal(nil, pvcAnnotations)
|
||||||
|
} else {
|
||||||
|
suite.Assertions.EqualValues(testAnnotations, pvcAnnotations)
|
||||||
|
}
|
||||||
|
|
||||||
|
pvcLabels := pvcManifest.Path("metadata.labels").Data()
|
||||||
|
testLabels := make(map[string]interface{})
|
||||||
|
for index, element := range defaultChartLabels {
|
||||||
|
testLabels[index] = element
|
||||||
|
}
|
||||||
|
for index, element := range tc.expectedLabels {
|
||||||
|
testLabels[index] = element
|
||||||
|
}
|
||||||
|
if len(testLabels) == 0 {
|
||||||
|
suite.Assertions.Equal(nil, pvcLabels)
|
||||||
|
} else {
|
||||||
|
suite.Assertions.EqualValues(testLabels, pvcLabels)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package common
|
package common
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/truecharts/apps/tests/helmunit"
|
"github.com/truecharts/apps/tests/helmunit"
|
||||||
@@ -102,37 +101,3 @@ func (suite *ServiceTestSuite) TestPortProtocol() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (suite *ServiceTestSuite) TestAnnotations() {
|
|
||||||
tests := map[string]struct {
|
|
||||||
values []string
|
|
||||||
expectedAnnotations map[string]string
|
|
||||||
}{
|
|
||||||
"Default": {values: nil, expectedAnnotations: nil},
|
|
||||||
"ExplicitTCP": {values: []string{"service.main.ports.main.protocol=TCP"}, expectedAnnotations: nil},
|
|
||||||
"ExplicitHTTP": {values: []string{"service.main.ports.main.protocol=HTTP"}, expectedAnnotations: nil},
|
|
||||||
"ExplicitHTTPS": {values: []string{"service.main.ports.main.protocol=HTTPS"}, expectedAnnotations: map[string]string{"traefik.ingress.kubernetes.io/service.serversscheme": "https"}},
|
|
||||||
"ExplicitUDP": {values: []string{"service.main.ports.main.protocol=UDP"}, expectedAnnotations: nil},
|
|
||||||
}
|
|
||||||
for name, tc := range tests {
|
|
||||||
suite.Suite.Run(name, func() {
|
|
||||||
err := suite.Chart.Render(nil, tc.values, nil)
|
|
||||||
if err != nil {
|
|
||||||
suite.FailNow(err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
serviceManifest := suite.Chart.Manifests.Get("Service", "common-test")
|
|
||||||
suite.Assertions.NotEmpty(serviceManifest)
|
|
||||||
serviceAnnotations, _ := serviceManifest.Path("metadata.annotations").Children()
|
|
||||||
if tc.expectedAnnotations == nil {
|
|
||||||
suite.Assertions.Empty(serviceAnnotations)
|
|
||||||
} else {
|
|
||||||
for annotation, value := range tc.expectedAnnotations {
|
|
||||||
serviceAnnotation := serviceManifest.Path("metadata.annotations").Search(annotation)
|
|
||||||
suite.Assertions.NotEmpty(serviceAnnotation, fmt.Sprintf("Annotation %s not found", annotation))
|
|
||||||
suite.Assertions.EqualValues(value, serviceAnnotation.Data(), fmt.Sprintf("Invalid value for annotation %s", annotation))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -10,8 +10,16 @@ controller:
|
|||||||
# -- Set the controller type.
|
# -- Set the controller type.
|
||||||
# Valid options are deployment, daemonset or statefulset
|
# Valid options are deployment, daemonset or statefulset
|
||||||
type: deployment
|
type: deployment
|
||||||
# -- Set annotations on the deployment/statefulset/daemonset
|
# -- Set additional annotations on the deployment/statefulset/daemonset
|
||||||
|
annotationsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
# -- Set annotations on the deployment/statefulset/daemonset
|
||||||
annotations: {}
|
annotations: {}
|
||||||
|
# -- Set additional labels on the deployment/statefulset/daemonset
|
||||||
|
labelsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
# -- Set labels on the deployment/statefulset/daemonset
|
# -- Set labels on the deployment/statefulset/daemonset
|
||||||
labels: {}
|
labels: {}
|
||||||
# -- Number of desired pods
|
# -- Number of desired pods
|
||||||
@@ -44,9 +52,20 @@ command: []
|
|||||||
# -- Override the args for the default container
|
# -- Override the args for the default container
|
||||||
args: []
|
args: []
|
||||||
|
|
||||||
|
# -- Set additional annotations on the pod
|
||||||
|
podAnnotationsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
|
||||||
|
#
|
||||||
# -- Set annotations on the pod
|
# -- Set annotations on the pod
|
||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
|
|
||||||
|
# -- Set additional labels on the pod
|
||||||
|
podLabelsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
|
||||||
# -- Set labels on the pod
|
# -- Set labels on the pod
|
||||||
podLabels: {}
|
podLabels: {}
|
||||||
|
|
||||||
@@ -217,6 +236,20 @@ probes:
|
|||||||
periodSeconds: 5
|
periodSeconds: 5
|
||||||
failureThreshold: 60
|
failureThreshold: 60
|
||||||
|
|
||||||
|
termination:
|
||||||
|
# -- Configure the path at which the file to which the main container's termination message will be written.
|
||||||
|
# -- [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle-1)]
|
||||||
|
messagePath:
|
||||||
|
|
||||||
|
# -- Indicate how the main container's termination message should be populated.
|
||||||
|
# Valid options are `File` and `FallbackToLogsOnError`.
|
||||||
|
# -- [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle-1)]
|
||||||
|
messagePolicy:
|
||||||
|
|
||||||
|
# -- Duration in seconds the pod needs to terminate gracefully
|
||||||
|
# -- [[ref](https://kubernetes.io/docs/reference/kubernetes-api/workload-resources/pod-v1/#lifecycle)]
|
||||||
|
gracePeriodSeconds: 10
|
||||||
|
|
||||||
# -- Configure the services for the chart here.
|
# -- Configure the services for the chart here.
|
||||||
# Additional services can be added by adding a dictionary key similar to the 'main' service.
|
# Additional services can be added by adding a dictionary key similar to the 'main' service.
|
||||||
# @default -- See below
|
# @default -- See below
|
||||||
@@ -234,10 +267,16 @@ service:
|
|||||||
|
|
||||||
# -- Set the service type
|
# -- Set the service type
|
||||||
type: ClusterIP
|
type: ClusterIP
|
||||||
|
annotationsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
# -- Provide additional annotations which may be required.
|
# -- Provide additional annotations which may be required.
|
||||||
annotations: {}
|
annotations: {}
|
||||||
|
|
||||||
|
labelsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
# -- Set labels on the deployment/statefulset/daemonset
|
||||||
# -- Provide additional labels which may be required.
|
# -- Provide additional labels which may be required.
|
||||||
labels: {}
|
labels: {}
|
||||||
|
|
||||||
@@ -300,12 +339,19 @@ ingress:
|
|||||||
# -- Additional List of middlewares in the traefikmiddlewares k8s namespace to add automatically
|
# -- Additional List of middlewares in the traefikmiddlewares k8s namespace to add automatically
|
||||||
# Creates an annotation with the middlewares and appends k8s and traefik namespaces to the middleware names
|
# Creates an annotation with the middlewares and appends k8s and traefik namespaces to the middleware names
|
||||||
middlewares: []
|
middlewares: []
|
||||||
|
annotationsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
# -- Provide additional annotations which may be required.
|
# -- Provide additional annotations which may be required.
|
||||||
annotations: {}
|
annotations: {}
|
||||||
# kubernetes.io/ingress.class: nginx
|
# kubernetes.io/ingress.class: nginx
|
||||||
# kubernetes.io/tls-acme: "true"
|
# kubernetes.io/tls-acme: "true"
|
||||||
|
|
||||||
|
labelsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
# -- Set labels on the deployment/statefulset/daemonset
|
||||||
|
# -- Provide additional labels which may be required.
|
||||||
# -- Provide additional labels which may be required.
|
# -- Provide additional labels which may be required.
|
||||||
labels: {}
|
labels: {}
|
||||||
|
|
||||||
@@ -357,6 +403,19 @@ persistence:
|
|||||||
config:
|
config:
|
||||||
# -- Enables or disables the persistence item
|
# -- Enables or disables the persistence item
|
||||||
enabled: false
|
enabled: false
|
||||||
|
annotationsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
# -- Add annotations to PVC object
|
||||||
|
annotations: {}
|
||||||
|
|
||||||
|
labelsList: []
|
||||||
|
# - name: somename
|
||||||
|
# value: somevalue
|
||||||
|
# -- Set labels on the deployment/statefulset/daemonset
|
||||||
|
# -- Provide additional labels which may be required.
|
||||||
|
# -- Add labels to PVC object
|
||||||
|
labels: {}
|
||||||
|
|
||||||
# -- Sets the persistence type
|
# -- Sets the persistence type
|
||||||
# Valid options are pvc, emptyDir, hostPath or custom
|
# Valid options are pvc, emptyDir, hostPath or custom
|
||||||
@@ -388,6 +447,8 @@ persistence:
|
|||||||
# -- Used in conjunction with `existingClaim`. Specifies a sub-path inside the referenced volume instead of its root
|
# -- Used in conjunction with `existingClaim`. Specifies a sub-path inside the referenced volume instead of its root
|
||||||
subPath: # some-subpath
|
subPath: # some-subpath
|
||||||
|
|
||||||
|
# mountPropagation: {}
|
||||||
|
|
||||||
# -- AccessMode for the persistent volume.
|
# -- AccessMode for the persistent volume.
|
||||||
# Make sure to select an access mode that is supported by your storage provider!
|
# Make sure to select an access mode that is supported by your storage provider!
|
||||||
# [[ref]](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes)
|
# [[ref]](https://kubernetes.io/docs/concepts/storage/persistent-volumes/#access-modes)
|
||||||
@@ -397,7 +458,7 @@ persistence:
|
|||||||
size: 1Gi
|
size: 1Gi
|
||||||
|
|
||||||
# - Set to true to retain the PVC upon `helm uninstall`
|
# - Set to true to retain the PVC upon `helm uninstall`
|
||||||
skipuninstall: false
|
retain: false
|
||||||
|
|
||||||
# -- Create an emptyDir volume to share between all containers
|
# -- Create an emptyDir volume to share between all containers
|
||||||
# [[ref]]https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)
|
# [[ref]]https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)
|
||||||
|
|||||||
Reference in New Issue
Block a user