feat: add forgejo with cnpg and longhorn

This commit is contained in:
2026-03-17 21:50:07 +01:00
parent c7d9bed167
commit a2f8890fc1
8 changed files with 148 additions and 0 deletions
+16
View File
@@ -0,0 +1,16 @@
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: forgejo
namespace: flux-system
spec:
interval: 10m0s
path: ./clusters/homelab/forgejo
prune: true
sourceRef:
kind: GitRepository
name: flux-system
decryption:
provider: sops
secretRef:
name: sops-age
@@ -0,0 +1,26 @@
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: forgejo-db
namespace: forgejo
spec:
instances: 3
storage:
size: 2Gi
storageClass: longhorn
backup:
barmanObjectStore:
destinationPath: s3://cnpg-backups/forgejo
endpointURL: https://minio.net-scope.org
s3Credentials:
accessKeyId:
name: minio-cnpg-credentials
key: ACCESS_KEY_ID
secretAccessKey:
name: minio-cnpg-credentials
key: ACCESS_SECRET_KEY
retentionPolicy: "30d"
bootstrap:
initdb:
database: forgejo
owner: forgejo
@@ -0,0 +1,10 @@
apiVersion: postgresql.cnpg.io/v1
kind: ScheduledBackup
metadata:
name: forgejo-db-backup
namespace: forgejo
spec:
schedule: "0 2 * * *"
backupOwnerReference: self
cluster:
name: forgejo-db
+51
View File
@@ -0,0 +1,51 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: forgejo
namespace: forgejo
spec:
replicas: 1
strategy:
type: Recreate
selector:
matchLabels:
app: forgejo
template:
metadata:
labels:
app: forgejo
spec:
containers:
- name: forgejo
image: codeberg.org/forgejo/forgejo:10
ports:
- containerPort: 3000
- containerPort: 22
env:
- name: FORGEJO__database__DB_TYPE
value: postgres
- name: FORGEJO__database__HOST
value: forgejo-db-rw:5432
- name: FORGEJO__database__NAME
value: forgejo
- name: FORGEJO__database__USER
value: forgejo
- name: FORGEJO__database__PASSWD
valueFrom:
secretKeyRef:
name: forgejo-db-app
key: password
volumeMounts:
- name: data
mountPath: /data
resources:
requests:
memory: "256Mi"
cpu: "100m"
limits:
memory: "512Mi"
cpu: "500m"
volumes:
- name: data
persistentVolumeClaim:
claimName: forgejo-data
@@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
- namespace.yaml
- minio-secret.sops.yaml
- cnpg-cluster.yaml
- cnpg-scheduledbackup.yaml
- pvc.yaml
- deployment.yaml
- service.yaml
+8
View File
@@ -0,0 +1,8 @@
apiVersion: v1
kind: Namespace
metadata:
name: forgejo
labels:
pod-security.kubernetes.io/enforce: privileged
pod-security.kubernetes.io/audit: privileged
pod-security.kubernetes.io/warn: privileged
+12
View File
@@ -0,0 +1,12 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: forgejo-data
namespace: forgejo
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn
resources:
requests:
storage: 5Gi
+15
View File
@@ -0,0 +1,15 @@
apiVersion: v1
kind: Service
metadata:
name: forgejo
namespace: forgejo
spec:
selector:
app: forgejo
ports:
- name: http
port: 3000
targetPort: 3000
- name: ssh
port: 22
targetPort: 22