add feat sparkyfitness via helm
This commit is contained in:
@@ -0,0 +1,19 @@
|
|||||||
|
apiVersion: kustomize.toolkit.fluxcd.io/v1
|
||||||
|
kind: Kustomization
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness
|
||||||
|
namespace: flux-system
|
||||||
|
spec:
|
||||||
|
interval: 10m
|
||||||
|
path: ./clusters/homelab/apps/sparkyfitness
|
||||||
|
prune: true
|
||||||
|
sourceRef:
|
||||||
|
kind: GitRepository
|
||||||
|
name: flux-system
|
||||||
|
decryption:
|
||||||
|
provider: sops
|
||||||
|
secretRef:
|
||||||
|
name: sops-age
|
||||||
|
dependsOn:
|
||||||
|
- name: cnpg
|
||||||
|
- name: infrastructure
|
||||||
@@ -0,0 +1,35 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: Cluster
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness-db
|
||||||
|
namespace: sparkyfitness
|
||||||
|
spec:
|
||||||
|
instances: 1
|
||||||
|
postgresql:
|
||||||
|
parameters:
|
||||||
|
shared_preload_libraries: "pg_stat_statements"
|
||||||
|
storage:
|
||||||
|
size: 8Gi
|
||||||
|
storageClass: longhorn
|
||||||
|
backup:
|
||||||
|
barmanObjectStore:
|
||||||
|
destinationPath: s3://cnpg-backups/sparkyfitness
|
||||||
|
endpointURL: http://192.168.2.107:9010
|
||||||
|
s3Credentials:
|
||||||
|
accessKeyId:
|
||||||
|
name: minio-cnpg-credentials
|
||||||
|
key: ACCESS_KEY_ID
|
||||||
|
secretAccessKey:
|
||||||
|
name: minio-cnpg-credentials
|
||||||
|
key: ACCESS_SECRET_KEY
|
||||||
|
retentionPolicy: "30d"
|
||||||
|
bootstrap:
|
||||||
|
initdb:
|
||||||
|
database: sparkyfitness
|
||||||
|
owner: sparky
|
||||||
|
postInitSQL:
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "uuid-ossp"
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "pgcrypto"
|
||||||
|
- CREATE EXTENSION IF NOT EXISTS "pg_stat_statements"
|
||||||
|
- ALTER USER sparky CREATEROLE
|
||||||
|
- GRANT EXECUTE ON ALL FUNCTIONS IN SCHEMA public TO sparky WITH GRANT OPTION
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: postgresql.cnpg.io/v1
|
||||||
|
kind: ScheduledBackup
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness-db-backup
|
||||||
|
namespace: sparkyfitness
|
||||||
|
spec:
|
||||||
|
schedule: "0 3 * * *"
|
||||||
|
backupOwnerReference: self
|
||||||
|
cluster:
|
||||||
|
name: sparkyfitness-db
|
||||||
@@ -0,0 +1,76 @@
|
|||||||
|
apiVersion: helm.toolkit.fluxcd.io/v2
|
||||||
|
kind: HelmRelease
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness
|
||||||
|
namespace: sparkyfitness
|
||||||
|
spec:
|
||||||
|
interval: 1h
|
||||||
|
chart:
|
||||||
|
spec:
|
||||||
|
chart: sparkyfitness
|
||||||
|
version: ">=0.1.0"
|
||||||
|
sourceRef:
|
||||||
|
kind: HelmRepository
|
||||||
|
name: sparkyfitness
|
||||||
|
namespace: sparkyfitness
|
||||||
|
interval: 12h
|
||||||
|
install:
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
upgrade:
|
||||||
|
cleanupOnFail: true
|
||||||
|
remediation:
|
||||||
|
retries: 3
|
||||||
|
values:
|
||||||
|
postgresql:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
externalDatabase:
|
||||||
|
host: sparkyfitness-db-rw.sparkyfitness.svc.cluster.local
|
||||||
|
port: 5432
|
||||||
|
database: sparkyfitness
|
||||||
|
auth:
|
||||||
|
existingSecret: sparkyfitness-db-secret
|
||||||
|
# keys: username, password
|
||||||
|
|
||||||
|
server:
|
||||||
|
secrets:
|
||||||
|
existingSecret: sparkyfitness-app-secret
|
||||||
|
# keys: api_encryption_key, better_auth_secret
|
||||||
|
appDatabase:
|
||||||
|
existingSecret: sparkyfitness-appdb-secret
|
||||||
|
# keys: username, password
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 100m
|
||||||
|
memory: 256Mi
|
||||||
|
limits:
|
||||||
|
cpu: 500m
|
||||||
|
memory: 512Mi
|
||||||
|
|
||||||
|
frontend:
|
||||||
|
resources:
|
||||||
|
requests:
|
||||||
|
cpu: 50m
|
||||||
|
memory: 64Mi
|
||||||
|
limits:
|
||||||
|
cpu: 200m
|
||||||
|
memory: 128Mi
|
||||||
|
|
||||||
|
config:
|
||||||
|
garmin:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
httpRoute:
|
||||||
|
enabled: true
|
||||||
|
hostname: sparkyfitness.net-scope.org # <-- anpassen
|
||||||
|
parentRef:
|
||||||
|
name: homelab-gateway # <-- ggf. anpassen
|
||||||
|
namespace: gateway
|
||||||
|
sectionName: https
|
||||||
|
|
||||||
|
ingress:
|
||||||
|
enabled: false
|
||||||
|
|
||||||
|
networkPolicy:
|
||||||
|
enabled: true
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
apiVersion: source.toolkit.fluxcd.io/v1beta2
|
||||||
|
kind: HelmRepository
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness
|
||||||
|
namespace: sparkyfitness
|
||||||
|
spec:
|
||||||
|
type: oci
|
||||||
|
url: oci://ghcr.io/codewithcj/charts
|
||||||
|
interval: 12h
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
apiVersion: kustomize.config.k8s.io/v1beta1
|
||||||
|
kind: Kustomization
|
||||||
|
resources:
|
||||||
|
- namespace.yaml
|
||||||
|
- minio-secret.sops.yaml
|
||||||
|
- secret.sops.yaml
|
||||||
|
- cnpg-cluster.yaml
|
||||||
|
- cnpg-scheduledbackup.yaml
|
||||||
|
- helmrepository.yaml
|
||||||
|
- helmrelease.yaml
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: minio-cnpg-credentials
|
||||||
|
namespace: sparkyfitness
|
||||||
|
stringData:
|
||||||
|
ACCESS_KEY_ID: ENC[AES256_GCM,data:QTyLZleYbt4hi/2ACqe4zmzJ6qw=,iv:9CI7SEsiT/dhvtOFj4e98W/v1cF8emHKdM3aY9RyoaU=,tag:EAba86iYBS3grwwMhdDkEw==,type:str]
|
||||||
|
ACCESS_SECRET_KEY: ENC[AES256_GCM,data:MovnfHfBplTEDZpaCzkiChQLkJV5w7+GqhcTUvARvwzQlEXeBtCnkQ==,iv:AogRUGsM93KNEO+pN6nzdAug7jsfojjXXbML6C5/LrM=,tag:6Pns/29t8/JemQVZVHYB/A==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSBQV3hYdm5DR0h1SjFBeGZR
|
||||||
|
RjhVdFFKTURBZkg2dW1JY2R4Zmw1Y2Q0SlM4Ck5EWWlRZkR4N3k5TGFvYXRZNTR5
|
||||||
|
SFZnQ3BFOWsxSDFvVGpJQThZZ3BTYjgKLS0tIHoxVXM3dXFGbFFQSVZTVEpRaDNr
|
||||||
|
b29kUGo0Q2VwbTd6NkxPU2xoSStxWjgKO8ItEv2t2Zh/JHv0Nu4bR0EcpH2mErAq
|
||||||
|
7E01pJzc5e8B4oHJofZ5QP7MiPbDVx4KCgD0LREmG+MSIwwP0yfZVA==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-05-26T09:50:43Z"
|
||||||
|
mac: ENC[AES256_GCM,data:6oq9Y591KNzrrlaysijDtubKmUoHzVIGitFnzHAVcYq7e7BN6zNY5NhfST9YhJmMKVdrla5TqrgGDOBJQg2zQroGBbP4yD/gokenR+f1yPwVGdbcceEgN1TV8vzi1G3unREvhmV0QQWHQhIZPBIIYiUd/cI55ARAhx231NTbLXw=,iv:r7sjLEcJIZk2gCxEB5Q11LT37tw2ABuFbbmOY+ai938=,tag:Q1ZBhjmuskM2j8l/G76xUQ==,type:str]
|
||||||
|
pgp: []
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.9.4
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Namespace
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness
|
||||||
@@ -0,0 +1,99 @@
|
|||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness-db-secret
|
||||||
|
namespace: sparkyfitness
|
||||||
|
stringData:
|
||||||
|
username: ENC[AES256_GCM,data:s5+BtLM=,iv:dTKvQbdYNNN4UlgJ7qDdooXGNWzBcrE6722LQR4S4b8=,tag:0HrGT2vIaY4GaQyNsSQSRA==,type:str]
|
||||||
|
password: ENC[AES256_GCM,data:0f8Q/Y/4DXc=,iv:QqQVUoOlNA+DtyrdkRrchvxgLH79CAAGVDcDRXJnYLY=,tag:eft8ZcpVGCRkD7qkN0fQEg==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4aFJlM09ESFZSdmQyWHZN
|
||||||
|
NzlhVE80eDg3cFZJbzRJajAzOGtiNWhqeUVZCjAvaWh0ekZtcWNEcHZ5aHhnODRV
|
||||||
|
T3JPSFJxL3JKNk9oeDlGQnhQNFZrbzAKLS0tIHF2Rm9LVnhzYzRkVHRhd08zREdL
|
||||||
|
eEw0NzNiQWVhSXF1Q2xkZGRTOGhLalEKRu8XUE7qmaoyKOx/y+2h3/B4xzx2+toD
|
||||||
|
2y3ZVV5YDb266EfDQ/TyH0JyuNczw9F4nzWCHHP0NeCFQVJMSfl0og==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-05-26T09:47:34Z"
|
||||||
|
mac: ENC[AES256_GCM,data:igQwMXuNacNSeVlsy1GmFA//a9s+fa+qBdwlLvdbw2U1lcw2akgTGhjxolg4ACKU+K9RpM3hOxvwp8DOdLwRk/duHwlvVranOlLq7+lky8D3Ec4z/YBHAnLnF5F7pyEtEA7/vKf2q47yoUkxvoZfPn4XEIV+zVUUTt8jdJzHuY4=,iv:UR3NYMFO5LmI4gqwe6QhL1EPlavp5N14Tk6ggWEDTKI=,tag:V9zOZlt64NXdce86PAfDRA==,type:str]
|
||||||
|
pgp: []
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.9.4
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness-appdb-secret
|
||||||
|
namespace: sparkyfitness
|
||||||
|
stringData:
|
||||||
|
username: ENC[AES256_GCM,data:onGgewc=,iv:Nlf05QgJ3a3WiBbhz8RzYEs4J5SGGo6OXhZMq5+eFks=,tag:WHaCk2rS78ekJTXf4M7R0A==,type:str]
|
||||||
|
password: ENC[AES256_GCM,data:TnZcBesc7gI=,iv:YgDJ0LMgUgPgcXRagfMLdaeQIR7g7jy5pIS00fRUICM=,tag:hqkfmvev8UVOn8fBy0ocUA==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4aFJlM09ESFZSdmQyWHZN
|
||||||
|
NzlhVE80eDg3cFZJbzRJajAzOGtiNWhqeUVZCjAvaWh0ekZtcWNEcHZ5aHhnODRV
|
||||||
|
T3JPSFJxL3JKNk9oeDlGQnhQNFZrbzAKLS0tIHF2Rm9LVnhzYzRkVHRhd08zREdL
|
||||||
|
eEw0NzNiQWVhSXF1Q2xkZGRTOGhLalEKRu8XUE7qmaoyKOx/y+2h3/B4xzx2+toD
|
||||||
|
2y3ZVV5YDb266EfDQ/TyH0JyuNczw9F4nzWCHHP0NeCFQVJMSfl0og==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-05-26T09:47:34Z"
|
||||||
|
mac: ENC[AES256_GCM,data:igQwMXuNacNSeVlsy1GmFA//a9s+fa+qBdwlLvdbw2U1lcw2akgTGhjxolg4ACKU+K9RpM3hOxvwp8DOdLwRk/duHwlvVranOlLq7+lky8D3Ec4z/YBHAnLnF5F7pyEtEA7/vKf2q47yoUkxvoZfPn4XEIV+zVUUTt8jdJzHuY4=,iv:UR3NYMFO5LmI4gqwe6QhL1EPlavp5N14Tk6ggWEDTKI=,tag:V9zOZlt64NXdce86PAfDRA==,type:str]
|
||||||
|
pgp: []
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.9.4
|
||||||
|
---
|
||||||
|
apiVersion: v1
|
||||||
|
kind: Secret
|
||||||
|
metadata:
|
||||||
|
name: sparkyfitness-app-secret
|
||||||
|
namespace: sparkyfitness
|
||||||
|
stringData:
|
||||||
|
api_encryption_key: ENC[AES256_GCM,data:Nu27yu/HVORcKHBaRGZ/f3TrliDDySrjKF7RiZHw9ruGebnV8Smtg8cpv570LDilcYr0zG3rXkgy7YHedQ6LkA==,iv:w482arFwsfqy99VxhaYn8FmL1/r5W41hQw7yfS41sas=,tag:oCGTkVohckPhXPvViEzoaA==,type:str]
|
||||||
|
better_auth_secret: ENC[AES256_GCM,data:YqFpjv+QMsEYtyDZQHEx4/cGPP5V1k2r9iynJqzeCMpnYeClMgUHUphlfUNumXJBBtDzMiG/uleViyXdka2qFQ==,iv:HP/zjHSjsx/i9SodTvTxtQP1t7u1sEyHlyVcn/RlVpY=,tag:fTAjB0JOj52/cHK8eLRnew==,type:str]
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
pgp: []
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.9.4
|
||||||
|
sops:
|
||||||
|
kms: []
|
||||||
|
gcp_kms: []
|
||||||
|
azure_kv: []
|
||||||
|
hc_vault: []
|
||||||
|
age:
|
||||||
|
- recipient: age1rydfcalt7pu4jnmh298lgjlasxyjldyaz3xyssk7v54lpu30fv0qna96ea
|
||||||
|
enc: |
|
||||||
|
-----BEGIN AGE ENCRYPTED FILE-----
|
||||||
|
YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSB4aFJlM09ESFZSdmQyWHZN
|
||||||
|
NzlhVE80eDg3cFZJbzRJajAzOGtiNWhqeUVZCjAvaWh0ekZtcWNEcHZ5aHhnODRV
|
||||||
|
T3JPSFJxL3JKNk9oeDlGQnhQNFZrbzAKLS0tIHF2Rm9LVnhzYzRkVHRhd08zREdL
|
||||||
|
eEw0NzNiQWVhSXF1Q2xkZGRTOGhLalEKRu8XUE7qmaoyKOx/y+2h3/B4xzx2+toD
|
||||||
|
2y3ZVV5YDb266EfDQ/TyH0JyuNczw9F4nzWCHHP0NeCFQVJMSfl0og==
|
||||||
|
-----END AGE ENCRYPTED FILE-----
|
||||||
|
lastmodified: "2026-05-26T09:47:34Z"
|
||||||
|
mac: ENC[AES256_GCM,data:igQwMXuNacNSeVlsy1GmFA//a9s+fa+qBdwlLvdbw2U1lcw2akgTGhjxolg4ACKU+K9RpM3hOxvwp8DOdLwRk/duHwlvVranOlLq7+lky8D3Ec4z/YBHAnLnF5F7pyEtEA7/vKf2q47yoUkxvoZfPn4XEIV+zVUUTt8jdJzHuY4=,iv:UR3NYMFO5LmI4gqwe6QhL1EPlavp5N14Tk6ggWEDTKI=,tag:V9zOZlt64NXdce86PAfDRA==,type:str]
|
||||||
|
pgp: []
|
||||||
|
encrypted_regex: ^(data|stringData)$
|
||||||
|
version: 3.9.4
|
||||||
Reference in New Issue
Block a user