titan-iac/services/nextcloud/maintenance-cronjob.yaml

98 lines
4.0 KiB
YAML
Raw Normal View History

2025-12-14 13:59:16 -03:00
# services/nextcloud/maintenance-cronjob.yaml
apiVersion: batch/v1
kind: CronJob
metadata:
name: nextcloud-maintenance
namespace: nextcloud
spec:
schedule: "30 4 * * *"
concurrencyPolicy: Forbid
jobTemplate:
spec:
template:
2026-01-14 12:28:10 -03:00
metadata:
annotations:
vault.hashicorp.com/agent-inject: "true"
2026-01-14 14:29:29 -03:00
vault.hashicorp.com/agent-pre-populate-only: "true"
2026-01-14 12:28:10 -03:00
vault.hashicorp.com/role: "nextcloud"
vault.hashicorp.com/agent-inject-secret-nextcloud-env.sh: "kv/data/atlas/nextcloud/nextcloud-db"
vault.hashicorp.com/agent-inject-template-nextcloud-env.sh: |
{{ with secret "kv/data/atlas/nextcloud/nextcloud-db" }}
2026-01-14 12:28:10 -03:00
export POSTGRES_DB="{{ .Data.data.database }}"
2026-01-14 13:00:21 -03:00
export POSTGRES_USER="{{ index .Data.data "db-username" }}"
export POSTGRES_PASSWORD="{{ index .Data.data "db-password" }}"
{{ end }}
{{ with secret "kv/data/atlas/nextcloud/nextcloud-admin" }}
2026-01-14 13:00:21 -03:00
export NEXTCLOUD_ADMIN_USER="{{ index .Data.data "admin-user" }}"
export NEXTCLOUD_ADMIN_PASSWORD="{{ index .Data.data "admin-password" }}"
{{ end }}
2026-01-14 12:28:10 -03:00
export ADMIN_USER="${NEXTCLOUD_ADMIN_USER}"
export ADMIN_PASS="${NEXTCLOUD_ADMIN_PASSWORD}"
{{ with secret "kv/data/atlas/nextcloud/nextcloud-oidc" }}
2026-01-14 13:00:21 -03:00
export OIDC_CLIENT_ID="{{ index .Data.data "client-id" }}"
export OIDC_CLIENT_SECRET="{{ index .Data.data "client-secret" }}"
{{ end }}
{{ with secret "kv/data/atlas/shared/postmark-relay" }}
export SMTP_NAME="{{ index .Data.data "apikey" }}"
export SMTP_PASSWORD="{{ index .Data.data "apikey" }}"
{{ end }}
{{ with secret "kv/data/atlas/shared/keycloak-admin" }}
2026-01-14 12:28:10 -03:00
export KC_ADMIN_USER="{{ .Data.data.username }}"
export KC_ADMIN_PASS="{{ .Data.data.password }}"
{{ end }}
2025-12-14 13:59:16 -03:00
spec:
restartPolicy: OnFailure
securityContext:
runAsUser: 0
runAsGroup: 0
serviceAccountName: nextcloud-vault
2025-12-14 13:59:16 -03:00
containers:
- name: maintenance
image: nextcloud:29-apache
imagePullPolicy: IfNotPresent
command: ["/bin/sh", "-c"]
args:
- |
2026-01-15 03:08:01 -03:00
set -eu
2026-01-14 12:28:10 -03:00
. /vault/secrets/nextcloud-env.sh
exec /maintenance/maintenance.sh
2025-12-14 13:59:16 -03:00
env:
- name: NC_URL
value: https://cloud.bstein.dev
volumeMounts:
2026-01-07 09:40:25 -03:00
- name: nextcloud-web
mountPath: /var/www/html
- name: nextcloud-config-pvc
mountPath: /var/www/html/config
- name: nextcloud-custom-apps
mountPath: /var/www/html/custom_apps
2026-01-07 04:41:00 -03:00
- name: nextcloud-user-data
mountPath: /var/www/html/data
2025-12-14 13:59:16 -03:00
- name: maintenance-script
mountPath: /maintenance/maintenance.sh
subPath: maintenance.sh
resources:
requests:
cpu: 100m
memory: 256Mi
limits:
cpu: 500m
memory: 512Mi
volumes:
- name: nextcloud-config-pvc
2025-12-14 13:59:16 -03:00
persistentVolumeClaim:
2026-01-07 10:13:09 -03:00
claimName: nextcloud-config-v2
- name: nextcloud-custom-apps
persistentVolumeClaim:
2026-01-07 10:13:09 -03:00
claimName: nextcloud-custom-apps-v2
2026-01-07 04:41:00 -03:00
- name: nextcloud-user-data
persistentVolumeClaim:
2026-01-07 10:13:09 -03:00
claimName: nextcloud-user-data-v2
2026-01-07 09:40:25 -03:00
- name: nextcloud-web
persistentVolumeClaim:
2026-01-07 10:13:09 -03:00
claimName: nextcloud-web-v2
2025-12-14 13:59:16 -03:00
- name: maintenance-script
configMap:
name: nextcloud-maintenance-script
2026-01-15 03:08:01 -03:00
defaultMode: 0755