fix
This commit is contained in:
@@ -6,21 +6,227 @@ metadata:
|
||||
name: nextcloud
|
||||
description: null
|
||||
options:
|
||||
admin:
|
||||
default:
|
||||
name: nextcloud_admin
|
||||
sub-domain:
|
||||
default: files
|
||||
examples:
|
||||
- name: nextcloud_admin
|
||||
- files
|
||||
type: string
|
||||
hpa:
|
||||
default:
|
||||
avg-cpu: 50
|
||||
max-replicas: 5
|
||||
min-replicas: 1
|
||||
examples:
|
||||
- avg-cpu: 50
|
||||
max-replicas: 5
|
||||
min-replicas: 1
|
||||
properties:
|
||||
name:
|
||||
default: nextcloud_admin
|
||||
avg-cpu:
|
||||
default: 50
|
||||
type: integer
|
||||
max-replicas:
|
||||
default: 5
|
||||
type: integer
|
||||
min-replicas:
|
||||
default: 1
|
||||
type: integer
|
||||
type: object
|
||||
ingress-class:
|
||||
default: traefik
|
||||
examples:
|
||||
- traefik
|
||||
type: string
|
||||
backups:
|
||||
default:
|
||||
enable: false
|
||||
endpoint: ''
|
||||
key-id-key: s3-id
|
||||
restic-key: bck-password
|
||||
retention:
|
||||
db: 30d
|
||||
keepDaily: 14
|
||||
keepMonthly: 12
|
||||
keepWeekly: 6
|
||||
keepYearly: 12
|
||||
schedule:
|
||||
backup: 30 3 * * *
|
||||
check: 30 5 * * 1
|
||||
db: 30 3 * * *
|
||||
prune: 30 1 * * 0
|
||||
secret-key: s3-secret
|
||||
secret-name: backup-settings
|
||||
examples:
|
||||
- enable: false
|
||||
endpoint: ''
|
||||
key-id-key: s3-id
|
||||
restic-key: bck-password
|
||||
retention:
|
||||
db: 30d
|
||||
keepDaily: 14
|
||||
keepMonthly: 12
|
||||
keepWeekly: 6
|
||||
keepYearly: 12
|
||||
schedule:
|
||||
backup: 30 3 * * *
|
||||
check: 30 5 * * 1
|
||||
db: 30 3 * * *
|
||||
prune: 30 1 * * 0
|
||||
secret-key: s3-secret
|
||||
secret-name: backup-settings
|
||||
properties:
|
||||
enable:
|
||||
default: false
|
||||
type: boolean
|
||||
endpoint:
|
||||
default: ''
|
||||
type: string
|
||||
key-id-key:
|
||||
default: s3-id
|
||||
type: string
|
||||
restic-key:
|
||||
default: bck-password
|
||||
type: string
|
||||
retention:
|
||||
default:
|
||||
db: 30d
|
||||
keepDaily: 14
|
||||
keepMonthly: 12
|
||||
keepWeekly: 6
|
||||
keepYearly: 12
|
||||
properties:
|
||||
db:
|
||||
default: 30d
|
||||
type: string
|
||||
keepDaily:
|
||||
default: 14
|
||||
type: integer
|
||||
keepMonthly:
|
||||
default: 12
|
||||
type: integer
|
||||
keepWeekly:
|
||||
default: 6
|
||||
type: integer
|
||||
keepYearly:
|
||||
default: 12
|
||||
type: integer
|
||||
type: object
|
||||
schedule:
|
||||
default:
|
||||
backup: 30 3 * * *
|
||||
check: 30 5 * * 1
|
||||
db: 30 3 * * *
|
||||
prune: 30 1 * * 0
|
||||
properties:
|
||||
backup:
|
||||
default: 30 3 * * *
|
||||
type: string
|
||||
check:
|
||||
default: 30 5 * * 1
|
||||
type: string
|
||||
db:
|
||||
default: 30 3 * * *
|
||||
type: string
|
||||
prune:
|
||||
default: 30 1 * * 0
|
||||
type: string
|
||||
type: object
|
||||
secret-key:
|
||||
default: s3-secret
|
||||
type: string
|
||||
secret-name:
|
||||
default: backup-settings
|
||||
type: string
|
||||
type: object
|
||||
openid-name:
|
||||
default: vynil
|
||||
apps:
|
||||
default:
|
||||
audioplayer: false
|
||||
bookmarks: false
|
||||
bpm: false
|
||||
calendar: false
|
||||
collabora: false
|
||||
contacts: false
|
||||
deck: false
|
||||
groupfolders: true
|
||||
mindmap: false
|
||||
music: false
|
||||
notes: false
|
||||
onlyoffice: false
|
||||
passman: false
|
||||
spreed: false
|
||||
tables: false
|
||||
tasks: false
|
||||
texteditor: true
|
||||
examples:
|
||||
- vynil
|
||||
type: string
|
||||
- audioplayer: false
|
||||
bookmarks: false
|
||||
bpm: false
|
||||
calendar: false
|
||||
collabora: false
|
||||
contacts: false
|
||||
deck: false
|
||||
groupfolders: true
|
||||
mindmap: false
|
||||
music: false
|
||||
notes: false
|
||||
onlyoffice: false
|
||||
passman: false
|
||||
spreed: false
|
||||
tables: false
|
||||
tasks: false
|
||||
texteditor: true
|
||||
properties:
|
||||
audioplayer:
|
||||
default: false
|
||||
type: boolean
|
||||
bookmarks:
|
||||
default: false
|
||||
type: boolean
|
||||
bpm:
|
||||
default: false
|
||||
type: boolean
|
||||
calendar:
|
||||
default: false
|
||||
type: boolean
|
||||
collabora:
|
||||
default: false
|
||||
type: boolean
|
||||
contacts:
|
||||
default: false
|
||||
type: boolean
|
||||
deck:
|
||||
default: false
|
||||
type: boolean
|
||||
groupfolders:
|
||||
default: true
|
||||
type: boolean
|
||||
mindmap:
|
||||
default: false
|
||||
type: boolean
|
||||
music:
|
||||
default: false
|
||||
type: boolean
|
||||
notes:
|
||||
default: false
|
||||
type: boolean
|
||||
onlyoffice:
|
||||
default: false
|
||||
type: boolean
|
||||
passman:
|
||||
default: false
|
||||
type: boolean
|
||||
spreed:
|
||||
default: false
|
||||
type: boolean
|
||||
tables:
|
||||
default: false
|
||||
type: boolean
|
||||
tasks:
|
||||
default: false
|
||||
type: boolean
|
||||
texteditor:
|
||||
default: true
|
||||
type: boolean
|
||||
type: object
|
||||
redis:
|
||||
default:
|
||||
exporter:
|
||||
@@ -54,20 +260,74 @@ options:
|
||||
default: 2Gi
|
||||
type: string
|
||||
type: object
|
||||
postgres:
|
||||
default:
|
||||
replicas: 1
|
||||
storage: 5Gi
|
||||
version: '14'
|
||||
examples:
|
||||
- replicas: 1
|
||||
storage: 5Gi
|
||||
version: '14'
|
||||
properties:
|
||||
replicas:
|
||||
default: 1
|
||||
type: integer
|
||||
storage:
|
||||
default: 5Gi
|
||||
type: string
|
||||
version:
|
||||
default: '14'
|
||||
type: string
|
||||
type: object
|
||||
domain-name:
|
||||
default: your_company.com
|
||||
examples:
|
||||
- your_company.com
|
||||
type: string
|
||||
sub-domain:
|
||||
default: files
|
||||
issuer:
|
||||
default: letsencrypt-prod
|
||||
examples:
|
||||
- files
|
||||
- letsencrypt-prod
|
||||
type: string
|
||||
ingress-class:
|
||||
default: traefik
|
||||
storage:
|
||||
default:
|
||||
accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
examples:
|
||||
- traefik
|
||||
- accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
properties:
|
||||
accessMode:
|
||||
default: ReadWriteOnce
|
||||
enum:
|
||||
- ReadWriteOnce
|
||||
- ReadOnlyMany
|
||||
- ReadWriteMany
|
||||
type: string
|
||||
size:
|
||||
default: 10Gi
|
||||
type: string
|
||||
type: object
|
||||
admin:
|
||||
default:
|
||||
name: nextcloud_admin
|
||||
examples:
|
||||
- name: nextcloud_admin
|
||||
properties:
|
||||
name:
|
||||
default: nextcloud_admin
|
||||
type: string
|
||||
type: object
|
||||
domain:
|
||||
default: your-company
|
||||
examples:
|
||||
- your-company
|
||||
type: string
|
||||
openid-name:
|
||||
default: vynil
|
||||
examples:
|
||||
- vynil
|
||||
type: string
|
||||
images:
|
||||
default:
|
||||
@@ -232,165 +492,6 @@ options:
|
||||
type: string
|
||||
type: object
|
||||
type: object
|
||||
domain:
|
||||
default: your-company
|
||||
examples:
|
||||
- your-company
|
||||
type: string
|
||||
issuer:
|
||||
default: letsencrypt-prod
|
||||
examples:
|
||||
- letsencrypt-prod
|
||||
type: string
|
||||
postgres:
|
||||
default:
|
||||
replicas: 1
|
||||
storage: 5Gi
|
||||
version: '14'
|
||||
examples:
|
||||
- replicas: 1
|
||||
storage: 5Gi
|
||||
version: '14'
|
||||
properties:
|
||||
replicas:
|
||||
default: 1
|
||||
type: integer
|
||||
storage:
|
||||
default: 5Gi
|
||||
type: string
|
||||
version:
|
||||
default: '14'
|
||||
type: string
|
||||
type: object
|
||||
hpa:
|
||||
default:
|
||||
avg-cpu: 50
|
||||
max-replicas: 5
|
||||
min-replicas: 1
|
||||
examples:
|
||||
- avg-cpu: 50
|
||||
max-replicas: 5
|
||||
min-replicas: 1
|
||||
properties:
|
||||
avg-cpu:
|
||||
default: 50
|
||||
type: integer
|
||||
max-replicas:
|
||||
default: 5
|
||||
type: integer
|
||||
min-replicas:
|
||||
default: 1
|
||||
type: integer
|
||||
type: object
|
||||
apps:
|
||||
default:
|
||||
audioplayer: false
|
||||
bookmarks: false
|
||||
bpm: false
|
||||
calendar: false
|
||||
collabora: false
|
||||
contacts: false
|
||||
deck: false
|
||||
groupfolders: true
|
||||
mindmap: false
|
||||
music: false
|
||||
notes: false
|
||||
onlyoffice: false
|
||||
passman: false
|
||||
spreed: false
|
||||
tables: false
|
||||
tasks: false
|
||||
texteditor: true
|
||||
examples:
|
||||
- audioplayer: false
|
||||
bookmarks: false
|
||||
bpm: false
|
||||
calendar: false
|
||||
collabora: false
|
||||
contacts: false
|
||||
deck: false
|
||||
groupfolders: true
|
||||
mindmap: false
|
||||
music: false
|
||||
notes: false
|
||||
onlyoffice: false
|
||||
passman: false
|
||||
spreed: false
|
||||
tables: false
|
||||
tasks: false
|
||||
texteditor: true
|
||||
properties:
|
||||
audioplayer:
|
||||
default: false
|
||||
type: boolean
|
||||
bookmarks:
|
||||
default: false
|
||||
type: boolean
|
||||
bpm:
|
||||
default: false
|
||||
type: boolean
|
||||
calendar:
|
||||
default: false
|
||||
type: boolean
|
||||
collabora:
|
||||
default: false
|
||||
type: boolean
|
||||
contacts:
|
||||
default: false
|
||||
type: boolean
|
||||
deck:
|
||||
default: false
|
||||
type: boolean
|
||||
groupfolders:
|
||||
default: true
|
||||
type: boolean
|
||||
mindmap:
|
||||
default: false
|
||||
type: boolean
|
||||
music:
|
||||
default: false
|
||||
type: boolean
|
||||
notes:
|
||||
default: false
|
||||
type: boolean
|
||||
onlyoffice:
|
||||
default: false
|
||||
type: boolean
|
||||
passman:
|
||||
default: false
|
||||
type: boolean
|
||||
spreed:
|
||||
default: false
|
||||
type: boolean
|
||||
tables:
|
||||
default: false
|
||||
type: boolean
|
||||
tasks:
|
||||
default: false
|
||||
type: boolean
|
||||
texteditor:
|
||||
default: true
|
||||
type: boolean
|
||||
type: object
|
||||
storage:
|
||||
default:
|
||||
accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
examples:
|
||||
- accessMode: ReadWriteOnce
|
||||
size: 10Gi
|
||||
properties:
|
||||
accessMode:
|
||||
default: ReadWriteOnce
|
||||
enum:
|
||||
- ReadWriteOnce
|
||||
- ReadOnlyMany
|
||||
- ReadWriteMany
|
||||
type: string
|
||||
size:
|
||||
default: 10Gi
|
||||
type: string
|
||||
type: object
|
||||
dependencies:
|
||||
- dist: null
|
||||
category: share
|
||||
|
||||
@@ -2,6 +2,22 @@ locals {
|
||||
pg-labels = merge(local.common-labels, {
|
||||
"app.kubernetes.io/component" = "pg"
|
||||
})
|
||||
backup-def = var.backups.enable ? {
|
||||
barmanObjectStore = {
|
||||
destinationPath = "s3://${var.instance}-${var.namespace}/"
|
||||
endpointURL = "${var.backups.endpoint}/barman"
|
||||
s3Credentials = {
|
||||
accessKeyId = {
|
||||
name = var.backups.secret-name
|
||||
key = var.backups.key-id-key
|
||||
}
|
||||
secretAccessKey = {
|
||||
name = var.backups.secret-name
|
||||
key = var.backups.secret-key
|
||||
}
|
||||
}
|
||||
}
|
||||
} : {}
|
||||
}
|
||||
|
||||
resource "kubectl_manifest" "prj_pg" {
|
||||
@@ -16,5 +32,28 @@ resource "kubectl_manifest" "prj_pg" {
|
||||
instances: ${var.postgres.replicas}
|
||||
storage:
|
||||
size: "${var.postgres.storage}"
|
||||
monitoring:
|
||||
enablePodMonitor: true
|
||||
bootstrap:
|
||||
initdb:
|
||||
database: "${var.component}"
|
||||
owner: "${var.component}"
|
||||
backup: ${jsonencode(local.backup-def)}
|
||||
EOF
|
||||
}
|
||||
|
||||
resource "kubectl_manifest" "prj_pg_backup" {
|
||||
yaml_body = <<-EOF
|
||||
apiVersion: postgresql.cnpg.io/v1
|
||||
kind: ScheduledBackup
|
||||
metadata:
|
||||
name: "${var.instance}-${var.component}-pg"
|
||||
namespace: "${var.namespace}"
|
||||
labels: ${jsonencode(local.pg-labels)}
|
||||
spec:
|
||||
schedule: "${var.backups.schedule.db}"
|
||||
backupOwnerReference: self
|
||||
cluster:
|
||||
name: "${var.instance}-${var.component}-pg"
|
||||
EOF
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user