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:
committed by
GitHub
parent
107adb0723
commit
25a98b4d69
24
charts/incubator/prototypegui/.helmignore
Normal file
24
charts/incubator/prototypegui/.helmignore
Normal file
@@ -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
|
||||
8
charts/incubator/prototypegui/CONFIG.md
Normal file
8
charts/incubator/prototypegui/CONFIG.md
Normal file
@@ -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.
|
||||
27
charts/incubator/prototypegui/Chart.yaml
Normal file
27
charts/incubator/prototypegui/Chart.yaml
Normal file
@@ -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
|
||||
42
charts/incubator/prototypegui/README.md
Normal file
42
charts/incubator/prototypegui/README.md
Normal file
@@ -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
|
||||
3
charts/incubator/prototypegui/SCALE/item.yaml
Normal file
3
charts/incubator/prototypegui/SCALE/item.yaml
Normal file
@@ -0,0 +1,3 @@
|
||||
categories:
|
||||
- media
|
||||
icon_url: https://truecharts.org/_static/img/jackett-icon.png
|
||||
25
charts/incubator/prototypegui/SCALE/ix_values.yaml
Normal file
25
charts/incubator/prototypegui/SCALE/ix_values.yaml
Normal file
@@ -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
|
||||
##
|
||||
939
charts/incubator/prototypegui/SCALE/questions.yaml
Normal file
939
charts/incubator/prototypegui/SCALE/questions.yaml
Normal file
@@ -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
|
||||
3
charts/incubator/prototypegui/app-readme.md
Normal file
3
charts/incubator/prototypegui/app-readme.md
Normal file
@@ -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
|
||||
1
charts/incubator/prototypegui/templates/common.yaml
Normal file
1
charts/incubator/prototypegui/templates/common.yaml
Normal file
@@ -0,0 +1 @@
|
||||
{{ include "common.all" . }}
|
||||
41
charts/incubator/prototypegui/values.yaml
Normal file
41
charts/incubator/prototypegui/values.yaml
Normal file
@@ -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
|
||||
sources: null
|
||||
type: library
|
||||
version: 6.10.7
|
||||
version: 6.11.0
|
||||
|
||||
@@ -57,6 +57,9 @@ metadata:
|
||||
name: {{ $ingressName }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- with $values.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
annotations:
|
||||
"traefik.ingress.kubernetes.io/router.entrypoints": {{ $values.entrypoint | default "websecure" }}
|
||||
"traefik.ingress.kubernetes.io/router.middlewares": {{ $middlewares | quote }}
|
||||
|
||||
@@ -23,9 +23,9 @@ kind: PersistentVolumeClaim
|
||||
apiVersion: v1
|
||||
metadata:
|
||||
name: {{ $pvcName }}
|
||||
{{- if or $values.skipuninstall $values.annotations }}
|
||||
{{- if or $values.retain $values.annotations }}
|
||||
annotations:
|
||||
{{- if $values.skipuninstall }}
|
||||
{{- if $values.retain }}
|
||||
"helm.sh/resource-policy": keep
|
||||
{{- end }}
|
||||
{{- with $values.annotations }}
|
||||
@@ -34,6 +34,9 @@ metadata:
|
||||
{{- end }}
|
||||
labels:
|
||||
{{- include "common.labels" . | nindent 4 }}
|
||||
{{- with $values.labels }}
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
spec:
|
||||
accessModes:
|
||||
- {{ required (printf "accessMode is required for PVC %v" $pvcName) $values.accessMode | quote }}
|
||||
|
||||
@@ -7,6 +7,40 @@
|
||||
{{- $_ := set . "Values" (deepCopy $mergedValues) -}}
|
||||
{{- 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 */}}
|
||||
{{- $perDict := dict }}
|
||||
{{- range $index, $item := .Values.persistenceList -}}
|
||||
@@ -29,6 +63,30 @@
|
||||
{{- $_ := 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 */}}
|
||||
{{- $ingDict := dict }}
|
||||
{{- range $index, $item := .Values.ingressList -}}
|
||||
@@ -41,6 +99,30 @@
|
||||
{{- $ing := merge .Values.ingress $ingDict }}
|
||||
{{- $_ := 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 */}}
|
||||
{{- if .Values.securityContext.privileged }}
|
||||
{{- else if .Values.deviceList }}
|
||||
|
||||
@@ -27,6 +27,12 @@
|
||||
lifecycle:
|
||||
{{- toYaml . | nindent 4 }}
|
||||
{{- end }}
|
||||
{{- with .Values.termination.messagePath }}
|
||||
terminationMessagePath: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.termination.messagePolicy }}
|
||||
terminationMessagePolicy: {{ . }}
|
||||
{{- end }}
|
||||
|
||||
env:
|
||||
{{- range $key, $value := .Values.envTpl }}
|
||||
|
||||
@@ -35,6 +35,9 @@ dnsConfig:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
{{- end }}
|
||||
enableServiceLinks: {{ .Values.enableServiceLinks }}
|
||||
{{- with .Values.termination.gracePeriodSeconds }}
|
||||
terminationGracePeriodSeconds: {{ . }}
|
||||
{{- end }}
|
||||
{{- with .Values.initContainers }}
|
||||
initContainers:
|
||||
{{- toYaml . | nindent 2 }}
|
||||
|
||||
@@ -18,6 +18,9 @@
|
||||
{{- with $item.readOnly }}
|
||||
readOnly: {{ . }}
|
||||
{{- end }}
|
||||
{{- with $item.mountPropagation }}
|
||||
mountPropagation: {{ . }}
|
||||
{{- 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
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"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.
|
||||
# Valid options are deployment, daemonset or statefulset
|
||||
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: {}
|
||||
# -- Set additional labels on the deployment/statefulset/daemonset
|
||||
labelsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
# -- Set labels on the deployment/statefulset/daemonset
|
||||
labels: {}
|
||||
# -- Number of desired pods
|
||||
@@ -44,9 +52,20 @@ command: []
|
||||
# -- Override the args for the default container
|
||||
args: []
|
||||
|
||||
# -- Set additional annotations on the pod
|
||||
podAnnotationsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
|
||||
#
|
||||
# -- Set annotations on the pod
|
||||
podAnnotations: {}
|
||||
|
||||
# -- Set additional labels on the pod
|
||||
podLabelsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
|
||||
# -- Set labels on the pod
|
||||
podLabels: {}
|
||||
|
||||
@@ -217,6 +236,20 @@ probes:
|
||||
periodSeconds: 5
|
||||
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.
|
||||
# Additional services can be added by adding a dictionary key similar to the 'main' service.
|
||||
# @default -- See below
|
||||
@@ -234,10 +267,16 @@ service:
|
||||
|
||||
# -- Set the service type
|
||||
type: ClusterIP
|
||||
|
||||
annotationsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
# -- Provide additional annotations which may be required.
|
||||
annotations: {}
|
||||
|
||||
labelsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
# -- Set labels on the deployment/statefulset/daemonset
|
||||
# -- Provide additional labels which may be required.
|
||||
labels: {}
|
||||
|
||||
@@ -300,12 +339,19 @@ ingress:
|
||||
# -- 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
|
||||
middlewares: []
|
||||
|
||||
annotationsList: []
|
||||
# - name: somename
|
||||
# value: somevalue
|
||||
# -- Provide additional annotations which may be required.
|
||||
annotations: {}
|
||||
# kubernetes.io/ingress.class: nginx
|
||||
# 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.
|
||||
labels: {}
|
||||
|
||||
@@ -357,6 +403,19 @@ persistence:
|
||||
config:
|
||||
# -- Enables or disables the persistence item
|
||||
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
|
||||
# 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
|
||||
subPath: # some-subpath
|
||||
|
||||
# mountPropagation: {}
|
||||
|
||||
# -- AccessMode for the persistent volume.
|
||||
# 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)
|
||||
@@ -397,7 +458,7 @@ persistence:
|
||||
size: 1Gi
|
||||
|
||||
# - Set to true to retain the PVC upon `helm uninstall`
|
||||
skipuninstall: false
|
||||
retain: false
|
||||
|
||||
# -- Create an emptyDir volume to share between all containers
|
||||
# [[ref]]https://kubernetes.io/docs/concepts/storage/volumes/#emptydir)
|
||||
|
||||
Reference in New Issue
Block a user