initial nextcloud PoC (#645)
* initial nextcloud PoC * add questions to set nextcloud default admin username and password * cleanup a bit * shuffle a bit * port recent changes it ix_values.yaml * fix port numbers * add readmeshizzle * fixup postgresql host * add initial redis code (disabled for now) * fixup comment * disable postgresql persistent during testing * spawn redis container * maybe admin shouldn't be used as a testname * set fsgroup to 33 * redis whoopsie * setup seperate redis secret * fixup redis host references to deal with masters and slaves * set redis to standalone * try without admin username and password being set * no use for standalone mode * append port to postgress * Simplify redis deployment and fix redis persistence * up redis version * longer startup probe * try port 80 * trigger test * add configmap for trusted host generation * add configmap * fix configmap * add cronjob * add more cronjob config to values.yaml * more end? * end tweeaks * cronjob cleanup * remove currently unused shizzle from cronjob
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,9 @@
|
|||||||
|
# Configuration Options
|
||||||
|
|
||||||
|
##### Connecting to other apps
|
||||||
|
If you need to connect this App to other Apps on TrueNAS SCALE, please refer to our "Linking Apps Together" guide:
|
||||||
|
https://truecharts.org/manual/linking/
|
||||||
|
|
||||||
|
|
||||||
|
##### Available config options
|
||||||
|
In the future this page is going to contain an automated list of options available in the installation/edit UI.
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
apiVersion: v2
|
||||||
|
appVersion: auto
|
||||||
|
dependencies:
|
||||||
|
- name: common
|
||||||
|
repository: https://truecharts.org/
|
||||||
|
version: 6.4.6
|
||||||
|
- condition: postgresql.enabled
|
||||||
|
name: postgresql
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
version: 10.5.1
|
||||||
|
- name: redis
|
||||||
|
version: 14.6.3
|
||||||
|
repository: https://charts.bitnami.com/bitnami
|
||||||
|
condition: redis.enabled
|
||||||
|
deprecated: false
|
||||||
|
description: A private cloud server that puts the control and security of your own data back into your hands.
|
||||||
|
home: https://nextcloud.com/
|
||||||
|
icon: https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Nextcloud_Logo.svg/1280px-Nextcloud_Logo.svg.png
|
||||||
|
keywords:
|
||||||
|
- nextcloud
|
||||||
|
- storage
|
||||||
|
- http
|
||||||
|
- web
|
||||||
|
- php
|
||||||
|
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: nextcloud
|
||||||
|
sources:
|
||||||
|
- https://github.com/nextcloud/docker
|
||||||
|
- https://github.com/nextcloud/helm
|
||||||
|
type: application
|
||||||
|
version: 1.0.0
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
# Introduction
|
||||||
|
|
||||||
|
  
|
||||||
|
|
||||||
|
A private cloud server that puts the control and security of your own data back into your hands.
|
||||||
|
|
||||||
|
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/nextcloud/docker>
|
||||||
|
* <https://github.com/nextcloud/helm>
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
Kubernetes: `>=1.16.0-0`
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
| Repository | Name | Version |
|
||||||
|
|------------|------|---------|
|
||||||
|
| https://charts.bitnami.com/bitnami | postgresql | 10.5.1 |
|
||||||
|
| https://truecharts.org/ | common | 6.4.6 |
|
||||||
|
|
||||||
|
## Installing the Chart
|
||||||
|
|
||||||
|
To install the chart with the release name `nextcloud`
|
||||||
|
|
||||||
|
- Open TrueNAS SCALE
|
||||||
|
- Go to Apps
|
||||||
|
- Click "Install" for this specific Apps
|
||||||
|
- Fill out the configuration form
|
||||||
|
|
||||||
|
## Uninstalling the Chart
|
||||||
|
|
||||||
|
To uninstall the `nextcloud` deployment
|
||||||
|
|
||||||
|
- Open TrueNAS SCALE
|
||||||
|
- Go to Apps
|
||||||
|
- Go to "Installed Apps"
|
||||||
|
- Expand the menu in the top-right corner of this App
|
||||||
|
- Click "Remove" for this specific Apps
|
||||||
|
|
||||||
|
The command removes all the Kubernetes components associated with the chart **including storage volumes** _(Except hostPath Storage)_ and deletes the release.
|
||||||
|
|
||||||
|
## Support
|
||||||
|
|
||||||
|
- See the [Wiki](https://truecharts.org)
|
||||||
|
- Open a [issue](https://github.com/truecharts/apps/issues/new/choose)
|
||||||
|
- Ask a [question](https://github.com/truecharts/apps/discussions)
|
||||||
|
|
||||||
|
|
||||||
|
----------------------------------------------
|
||||||
|
Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0)
|
||||||
|
All Rights Reserved - The TrueCharts Project
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
categories:
|
||||||
|
- cloud
|
||||||
|
icon_url: https://upload.wikimedia.org/wikipedia/commons/thumb/6/60/Nextcloud_Logo.svg/1280px-Nextcloud_Logo.svg.png
|
||||||
@@ -0,0 +1,98 @@
|
|||||||
|
##
|
||||||
|
# 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: nextcloud
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: 21.0.2
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
|
||||||
|
env: {}
|
||||||
|
|
||||||
|
|
||||||
|
envTpl:
|
||||||
|
POSTGRES_DB: "{{ .Values.postgresql.postgresqlDatabase }}"
|
||||||
|
POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}"
|
||||||
|
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: nextcloudconfig
|
||||||
|
|
||||||
|
|
||||||
|
envValueFrom:
|
||||||
|
POSTGRES_PASSWORD:
|
||||||
|
secretKeyRef:
|
||||||
|
name: dbcreds
|
||||||
|
key: postgresql-password
|
||||||
|
POSTGRES_HOST:
|
||||||
|
secretKeyRef:
|
||||||
|
name: dbcreds
|
||||||
|
key: host
|
||||||
|
REDIS_HOST:
|
||||||
|
secretKeyRef:
|
||||||
|
name: rediscreds
|
||||||
|
key: masterhost
|
||||||
|
REDIS_PASSWORD:
|
||||||
|
secretKeyRef:
|
||||||
|
name: rediscreds
|
||||||
|
key: redis-password
|
||||||
|
|
||||||
|
probes:
|
||||||
|
startup:
|
||||||
|
spec:
|
||||||
|
initialDelaySeconds: 3
|
||||||
|
timeoutSeconds: 2
|
||||||
|
## This means it has a maximum of 10*60=600 seconds to start up before it fails
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 60
|
||||||
|
|
||||||
|
## Cronjob to execute Nextcloud background tasks
|
||||||
|
## ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#webcron
|
||||||
|
##
|
||||||
|
cronjob:
|
||||||
|
# Every 5 minutes
|
||||||
|
# Note: Setting this to any any other value than 5 minutes might
|
||||||
|
# cause issues with how nextcloud background jobs are executed
|
||||||
|
schedule: "*/5 * * * *"
|
||||||
|
annotations: {}
|
||||||
|
failedJobsHistoryLimit: 5
|
||||||
|
successfulJobsHistoryLimit: 2
|
||||||
|
|
||||||
|
# Enabled postgres
|
||||||
|
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
postgresqlUsername: nextcloud
|
||||||
|
postgresqlDatabase: nextcloud
|
||||||
|
existingSecret: dbcreds
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
existingClaim: db
|
||||||
|
|
||||||
|
# Enabled redis
|
||||||
|
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/redis
|
||||||
|
redis:
|
||||||
|
architecture: standalone
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
existingSecret: rediscreds
|
||||||
|
existingSecretPasswordKey: redis-password
|
||||||
|
master:
|
||||||
|
persistence:
|
||||||
|
enabled: true
|
||||||
|
existingClaim: redismaster
|
||||||
|
replica:
|
||||||
|
replicaCount: 0
|
||||||
|
persistence:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
##
|
||||||
|
# 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,855 @@
|
|||||||
|
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: 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: 80
|
||||||
|
editable: false
|
||||||
|
hidden: true
|
||||||
|
- variable: targetport
|
||||||
|
label: "Target Port"
|
||||||
|
description: "This port exposes the container port on the service"
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 80
|
||||||
|
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: 38011
|
||||||
|
required: true
|
||||||
|
|
||||||
|
- variable: persistence
|
||||||
|
label: "Integrated Persistent Storage"
|
||||||
|
description: "Integrated Persistent Storage"
|
||||||
|
group: "Storage and Persistence"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: data
|
||||||
|
label: "App Data Storage"
|
||||||
|
description: "Stores the Application Data."
|
||||||
|
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: 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: "/var/www"
|
||||||
|
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: db
|
||||||
|
label: "Database Storage"
|
||||||
|
description: "Stores the Application database."
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable the storage"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
hidden: true
|
||||||
|
- variable: forceName
|
||||||
|
label: "Override PVC Name (advanced)"
|
||||||
|
description: "Forces a certain name for the PVC"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "db"
|
||||||
|
hidden: true
|
||||||
|
- variable: type
|
||||||
|
label: "(Advanced) Type of Storage"
|
||||||
|
description: "Sets the persistence type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "pvc"
|
||||||
|
hidden: true
|
||||||
|
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: mountPath
|
||||||
|
label: "mountPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
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: redismaster
|
||||||
|
label: "Redis Storage"
|
||||||
|
description: "Stores the Application redis-master-database."
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable the storage"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
hidden: true
|
||||||
|
- variable: forceName
|
||||||
|
label: "Override PVC Name (advanced)"
|
||||||
|
description: "Forces a certain name for the PVC"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "db"
|
||||||
|
hidden: true
|
||||||
|
- variable: type
|
||||||
|
label: "(Advanced) Type of Storage"
|
||||||
|
description: "Sets the persistence type"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "pvc"
|
||||||
|
hidden: true
|
||||||
|
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: mountPath
|
||||||
|
label: "mountPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
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: dbbackup
|
||||||
|
label: "Database Backup Storage"
|
||||||
|
description: "Stores the Application database backups."
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: enabled
|
||||||
|
label: "Enable the storage"
|
||||||
|
schema:
|
||||||
|
type: boolean
|
||||||
|
default: true
|
||||||
|
- variable: storageClass
|
||||||
|
label: "Type of Storage"
|
||||||
|
description: " Warning: Anything other than Internal will break rollback!"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: "SCALE-ZFS"
|
||||||
|
- variable: mountPath
|
||||||
|
label: "mountPath"
|
||||||
|
description: "Path inside the container the storage is mounted"
|
||||||
|
schema:
|
||||||
|
type: string
|
||||||
|
default: ""
|
||||||
|
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: 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: 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: podSecurityContext
|
||||||
|
group: "Security and Permissions"
|
||||||
|
label: "Pod Security Context"
|
||||||
|
schema:
|
||||||
|
type: dict
|
||||||
|
attrs:
|
||||||
|
- variable: fsGroup
|
||||||
|
label: "fsGroup"
|
||||||
|
description: "The group that should own ALL storage."
|
||||||
|
schema:
|
||||||
|
type: int
|
||||||
|
default: 33
|
||||||
|
- 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: ""
|
||||||
|
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"
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
{{/* Define the configmap */}}
|
||||||
|
{{- define "nextcloud.configmap" -}}
|
||||||
|
|
||||||
|
{{- $hosts := "" }}
|
||||||
|
{{- if .Values.ingress.main.enabled }}
|
||||||
|
{{ range $index, $host := .Values.ingress.main.hosts }}
|
||||||
|
{{- if $index }}
|
||||||
|
{{ $hosts = ( printf "%v %v" $hosts $host ) }}
|
||||||
|
{{- else }}
|
||||||
|
{{ $hosts = ( printf "%s" $host ) }}
|
||||||
|
{{- end }}
|
||||||
|
{{ end }}
|
||||||
|
{{- end }}
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: ConfigMap
|
||||||
|
metadata:
|
||||||
|
name: nextcloudconfig
|
||||||
|
data:
|
||||||
|
NEXTCLOUD_TRUSTED_DOMAINS: {{ $hosts | quote }}
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
{{/* Define the cronjob */}}
|
||||||
|
{{- define "nextcloud.cronjob" -}}
|
||||||
|
{{- $jobName := include "common.names.fullname" . -}}
|
||||||
|
---
|
||||||
|
apiVersion: batch/v1beta1
|
||||||
|
kind: CronJob
|
||||||
|
metadata:
|
||||||
|
name: {{ printf "%s-auto-permissions" $jobName }}
|
||||||
|
labels:
|
||||||
|
{{- include "common.labels" . | nindent 4 }}
|
||||||
|
spec:
|
||||||
|
schedule: "{{ .Values.cronjob.schedule }}"
|
||||||
|
concurrencyPolicy: Forbid
|
||||||
|
{{- with .Values.cronjob.failedJobsHistoryLimit }}
|
||||||
|
failedJobsHistoryLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
{{- with .Values.cronjob.successfulJobsHistoryLimit }}
|
||||||
|
successfulJobsHistoryLimit: {{ . }}
|
||||||
|
{{- end }}
|
||||||
|
jobTemplate:
|
||||||
|
metadata:
|
||||||
|
spec:
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
spec:
|
||||||
|
restartPolicy: Never
|
||||||
|
containers:
|
||||||
|
- name: {{ .Chart.Name }}
|
||||||
|
image: "{{ .Values.image.repository }}:{{ default .Values.image.tag }}"
|
||||||
|
imagePullPolicy: {{ default .Values.image.pullPolicy }}
|
||||||
|
command: [ "curl" ]
|
||||||
|
args:
|
||||||
|
- "-k"
|
||||||
|
- "--fail"
|
||||||
|
- "-L"
|
||||||
|
- "http://{{ template "common.names.fullname" . }}:{{ .Values.service.main.ports.main.port }}/cron.php"
|
||||||
|
# Will mount configuration files as www-data (id: 33) by default for nextcloud
|
||||||
|
securityContext:
|
||||||
|
{{- if .Values.securityContext }}
|
||||||
|
{{- with .Values.securityContext }}
|
||||||
|
{{- toYaml . | nindent 17 }}
|
||||||
|
{{- end }}
|
||||||
|
{{- end }}
|
||||||
|
resources:
|
||||||
|
{{ toYaml (default .Values.resources .Values.cronjob.resources) | indent 16 }}
|
||||||
|
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,49 @@
|
|||||||
|
{{/* Define the secrets */}}
|
||||||
|
{{- define "nextcloud.secrets" -}}
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "common.labels" . | nindent 4 }}
|
||||||
|
name: dbcreds
|
||||||
|
{{- $previous := lookup "v1" "Secret" .Release.Namespace "dbcreds" }}
|
||||||
|
{{- $dbPass := "" }}
|
||||||
|
data:
|
||||||
|
{{- if $previous }}
|
||||||
|
{{- $dbPass = ( index $previous.data "postgresql-password" ) | b64dec }}
|
||||||
|
postgresql-password: {{ ( index $previous.data "postgresql-password" ) }}
|
||||||
|
postgresql-postgres-password: {{ ( index $previous.data "postgresql-postgres-password" ) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $dbPass = randAlphaNum 50 }}
|
||||||
|
postgresql-password: {{ $dbPass | b64enc | quote }}
|
||||||
|
postgresql-postgres-password: {{ randAlphaNum 50 | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
url: {{ ( printf "%v%v:%v@%v-%v:%v/%v" "postgresql://" .Values.postgresql.postgresqlUsername $dbPass .Release.Name "postgresql" "5432" .Values.postgresql.postgresqlDatabase ) | b64enc | quote }}
|
||||||
|
host: {{ ( printf "%v-%v:5432" .Release.Name "postgresql" ) | b64enc | quote }}
|
||||||
|
type: Opaque
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
{{- include "common.labels" . | nindent 4 }}
|
||||||
|
name: rediscreds
|
||||||
|
{{- $redisprevious := lookup "v1" "Secret" .Release.Namespace "rediscreds" }}
|
||||||
|
{{- $redisPass := "" }}
|
||||||
|
data:
|
||||||
|
{{- if $redisprevious }}
|
||||||
|
{{- $redisPass = ( index $redisprevious.data "redis-password" ) | b64dec }}
|
||||||
|
redis-password: {{ ( index $redisprevious.data "redis-password" ) }}
|
||||||
|
{{- else }}
|
||||||
|
{{- $redisPass = randAlphaNum 50 }}
|
||||||
|
redis-password: {{ $redisPass | b64enc | quote }}
|
||||||
|
{{- end }}
|
||||||
|
masterhost: {{ ( printf "%v-%v" .Release.Name "redis-master" ) | b64enc | quote }}
|
||||||
|
slavehost: {{ ( printf "%v-%v" .Release.Name "redis-master" ) | b64enc | quote }}
|
||||||
|
type: Opaque
|
||||||
|
{{- end -}}
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
{{/* Make sure all variables are set properly */}}
|
||||||
|
{{- include "common.values.setup" . }}
|
||||||
|
|
||||||
|
{{/* Render the templates */}}
|
||||||
|
{{ include "common.all" . }}
|
||||||
|
|
||||||
|
{{/* Render configmap for nextcloud */}}
|
||||||
|
{{- include "nextcloud.configmap" . }}
|
||||||
|
|
||||||
|
{{/* Render secrets for nextcloud */}}
|
||||||
|
{{- include "nextcloud.secrets" . }}
|
||||||
|
|
||||||
|
{{/* Render cronjob for nextcloud */}}
|
||||||
|
{{- include "nextcloud.cronjob" . }}
|
||||||
@@ -0,0 +1,119 @@
|
|||||||
|
# Default values for Bitwarden.
|
||||||
|
|
||||||
|
image:
|
||||||
|
repository: nextcloud
|
||||||
|
pullPolicy: IfNotPresent
|
||||||
|
tag: 21.0.2
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
type: Recreate
|
||||||
|
|
||||||
|
service:
|
||||||
|
main:
|
||||||
|
ports:
|
||||||
|
main:
|
||||||
|
port: 80
|
||||||
|
|
||||||
|
env: {}
|
||||||
|
|
||||||
|
envTpl:
|
||||||
|
POSTGRES_DB: "{{ .Values.postgresql.postgresqlDatabase }}"
|
||||||
|
POSTGRES_USER: "{{ .Values.postgresql.postgresqlUsername }}"
|
||||||
|
|
||||||
|
|
||||||
|
envFrom:
|
||||||
|
- configMapRef:
|
||||||
|
name: nextcloudconfig
|
||||||
|
|
||||||
|
envValueFrom:
|
||||||
|
POSTGRES_PASSWORD:
|
||||||
|
secretKeyRef:
|
||||||
|
name: dbcreds
|
||||||
|
key: postgresql-password
|
||||||
|
POSTGRES_HOST:
|
||||||
|
secretKeyRef:
|
||||||
|
name: dbcreds
|
||||||
|
key: host
|
||||||
|
# REDIS_HOST:
|
||||||
|
# secretKeyRef:
|
||||||
|
# name: rediscreds
|
||||||
|
# key: masterhost
|
||||||
|
# REDIS_PASSWORD:
|
||||||
|
# secretKeyRef:
|
||||||
|
# name: rediscreds
|
||||||
|
# key: redis-password
|
||||||
|
|
||||||
|
persistence:
|
||||||
|
data:
|
||||||
|
enabled: true
|
||||||
|
mountPath: "/var/www"
|
||||||
|
type: emptyDir
|
||||||
|
|
||||||
|
db:
|
||||||
|
forceName: "db"
|
||||||
|
enabled: true
|
||||||
|
type: emptyDir
|
||||||
|
|
||||||
|
redismaster:
|
||||||
|
forceName: "redismaster"
|
||||||
|
enabled: true
|
||||||
|
type: emptyDir
|
||||||
|
|
||||||
|
dbbackup:
|
||||||
|
enabled: true
|
||||||
|
type: emptyDir
|
||||||
|
|
||||||
|
|
||||||
|
podSecurityContext:
|
||||||
|
fsGroup: 33
|
||||||
|
|
||||||
|
# test
|
||||||
|
probes:
|
||||||
|
startup:
|
||||||
|
spec:
|
||||||
|
initialDelaySeconds: 3
|
||||||
|
timeoutSeconds: 2
|
||||||
|
## This means it has a maximum of 10*60=600 seconds to start up before it fails
|
||||||
|
periodSeconds: 10
|
||||||
|
failureThreshold: 60
|
||||||
|
|
||||||
|
|
||||||
|
## Cronjob to execute Nextcloud background tasks
|
||||||
|
## ref: https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/background_jobs_configuration.html#webcron
|
||||||
|
##
|
||||||
|
cronjob:
|
||||||
|
# Every 5 minutes
|
||||||
|
# Note: Setting this to any any other value than 5 minutes might
|
||||||
|
# cause issues with how nextcloud background jobs are executed
|
||||||
|
schedule: "*/5 * * * *"
|
||||||
|
annotations: {}
|
||||||
|
failedJobsHistoryLimit: 5
|
||||||
|
successfulJobsHistoryLimit: 2
|
||||||
|
|
||||||
|
# Enabled postgres
|
||||||
|
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/postgresql
|
||||||
|
postgresql:
|
||||||
|
enabled: true
|
||||||
|
postgresqlUsername: nextcloud
|
||||||
|
postgresqlDatabase: nextcloud
|
||||||
|
existingSecret: dbcreds
|
||||||
|
persistence:
|
||||||
|
enabled: false
|
||||||
|
existingClaim: db
|
||||||
|
|
||||||
|
# Enabled redis
|
||||||
|
# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/redis
|
||||||
|
redis:
|
||||||
|
architecture: standalone
|
||||||
|
enabled: true
|
||||||
|
auth:
|
||||||
|
existingSecret: rediscreds
|
||||||
|
existingSecretPasswordKey: redis-password
|
||||||
|
master:
|
||||||
|
persistence:
|
||||||
|
enabled: false
|
||||||
|
existingClaim: redismaster
|
||||||
|
replica:
|
||||||
|
replicaCount: 0
|
||||||
|
persistence:
|
||||||
|
enabled: false
|
||||||
Reference in New Issue
Block a user