cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit 297469742f29d8db90999f92e326b2e4d7e5cb97
parent bf47a20b755e592a45c9af34772b2314421ff391
Author: MTRNord <mtrnord1@gmail.com>
Date:   Thu, 17 Oct 2024 12:36:25 +0200

Add k8up with schedule

Diffstat:
Aapps/2024_cluster/namespaces/k8up.yaml | 4++++
Mapps/2024_cluster/namespaces/kustomization.yaml | 1+
Aapps/2024_cluster/secrets/backup-repo.yaml | 28++++++++++++++++++++++++++++
Mapps/2024_cluster/secrets/kustomization.yaml | 1+
Aapps/base/k8up/kustomization.yaml | 6++++++
Aapps/base/k8up/release.yaml | 77+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/base/k8up/repository.yaml | 8++++++++
7 files changed, 125 insertions(+), 0 deletions(-)

diff --git a/apps/2024_cluster/namespaces/k8up.yaml b/apps/2024_cluster/namespaces/k8up.yaml @@ -0,0 +1,4 @@ +apiVersion: v1 +kind: Namespace +metadata: + name: k8up diff --git a/apps/2024_cluster/namespaces/kustomization.yaml b/apps/2024_cluster/namespaces/kustomization.yaml @@ -17,3 +17,4 @@ resources: #- apisix.yaml - cachet.yaml - docuseal.yaml + - k8up.yaml diff --git a/apps/2024_cluster/secrets/backup-repo.yaml b/apps/2024_cluster/secrets/backup-repo.yaml @@ -0,0 +1,28 @@ +apiVersion: v1 +kind: Secret +metadata: + name: backup-repo + namespace: k8up +type: Opaque +stringData: + password: ENC[AES256_GCM,data:heaxWvpd3cwKclIDkI3qii8DWf8IPKefw3iXVR6WO44+KtcFguYRNiKlVTSfacuUIZH79wJ6Hgq4oMXdaaVkTw==,iv:4D+ln6mt1/4qr3lGtQAS8LNrPWBunCTx8yj1jemuK30=,tag:PHhrV8B2TGCpq4lAeKxoJg==,type:str] +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSA3ZFNranI1UzNJOGQ1bTlr + VFpocFpBTDFla1pXSzVud2Ivd0pTbTJjeVhRCjZWbzB0VFIxTks3aEhBejd5MjJ2 + aGI3KzJhS3FmSi9yYVhaWDhTRDlUWm8KLS0tIGQ5SHBNblJENUZsQ2tmUnFkMWxM + SXMxZ1d2STY2V0s1b0FxOExlNy9RYlUKzsXQhUeVtZyabr4aGXZBVi7QdbG5aHLo + XZE64tpTXJIl6H3iqZ3Bz0QBm/wripFCiZ/zPdt5p/cv5y31GV1MhQ== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2024-10-17T10:35:45Z" + mac: ENC[AES256_GCM,data:de1PoJqU/ShGTsMXAZz64Ltn0m+XLieTPpoOw6x/Uy8hcxiTM06hmUQHu7lF9sHhL7HvV4D8/rPgaZFiJMSRDzVV8PQUZmqihcD3WoNsw6gnPO2x5chuczLYCjNPFxT+67ttEOEwwetGc2BBZZXzDFhjxobbH8mbUn0t2Dvg9CQ=,iv:hMXwEJ9jn8ysSRSjjkvTPPBEqmN5MkWbNE5I3kxTXJI=,tag:pp839r/R1fbX1DYODa7z4Q==,type:str] + pgp: [] + encrypted_regex: ^(routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword)$ + version: 3.8.1 diff --git a/apps/2024_cluster/secrets/kustomization.yaml b/apps/2024_cluster/secrets/kustomization.yaml @@ -12,3 +12,4 @@ resources: - coder.yaml - mas_config.yaml - cachet_sync.yaml + - backup-repo.yaml diff --git a/apps/base/k8up/kustomization.yaml b/apps/base/k8up/kustomization.yaml @@ -0,0 +1,6 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: k8up +resources: + - repository.yaml + - release.yaml diff --git a/apps/base/k8up/release.yaml b/apps/base/k8up/release.yaml @@ -0,0 +1,77 @@ +apiVersion: helm.toolkit.fluxcd.io/v2beta2 +kind: HelmRelease +metadata: + name: k8up + namespace: k8up +spec: + releaseName: k8up + interval: 60m + chart: + spec: + chart: k8up + sourceRef: + kind: HelmRepository + name: k8up + values: + k8up: + timezone: Europe/Berlin + metrics: + serviceMonitor: + enabled: true + prometheusRule: + enabled: true + grafanaDashboard: + enabled: true +--- +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: storagebox-pvc + namespace: k8up +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 700Gi + storageClassName: smb-storagebox +--- +apiVersion: k8up.io/v1 +kind: Schedule +metadata: + name: backup-storagebox-schedule +spec: + resourceRequirementsTemplate: + requests: + memory: "64Mi" + cpu: "250m" + limits: {} + backend: + repoPasswordSecretRef: + name: backup-repo + key: password + local: + mountPoint: /mnt/storagebox + volumeMounts: + - name: storagebox-vol + mountPath: /mnt/storagebox + backup: + schedule: '@daily-random' + failedJobsHistoryLimit: 2 + successfulJobsHistoryLimit: 2 + resources: + requests: + memory: "64Mi" + cpu: "250m" + limits: {} + prune: + schedule: '@daily-random' + retention: + keepDaily: 7 + keepWeekly: 4 + keepMonthly: 3 + keepYearly: 1 + volumes: + - name: storagebox-vol + persistentVolumeClaim: + claimName: storagebox-pvc diff --git a/apps/base/k8up/repository.yaml b/apps/base/k8up/repository.yaml @@ -0,0 +1,8 @@ +apiVersion: source.toolkit.fluxcd.io/v1beta2 +kind: HelmRepository +metadata: + name: k8up + namespace: k8up +spec: + interval: 60m + url: https://k8up-io.github.io/k8up