diff --git a/clusters/homelab/forgejo.yaml b/clusters/homelab/forgejo.yaml new file mode 100644 index 0000000..f7fa856 --- /dev/null +++ b/clusters/homelab/forgejo.yaml @@ -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 diff --git a/clusters/homelab/forgejo/cnpg-cluster.yaml b/clusters/homelab/forgejo/cnpg-cluster.yaml new file mode 100644 index 0000000..313a501 --- /dev/null +++ b/clusters/homelab/forgejo/cnpg-cluster.yaml @@ -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 diff --git a/clusters/homelab/forgejo/cnpg-scheduledbackup.yaml b/clusters/homelab/forgejo/cnpg-scheduledbackup.yaml new file mode 100644 index 0000000..47011bf --- /dev/null +++ b/clusters/homelab/forgejo/cnpg-scheduledbackup.yaml @@ -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 diff --git a/clusters/homelab/forgejo/deployment.yaml b/clusters/homelab/forgejo/deployment.yaml new file mode 100644 index 0000000..6f5a4ff --- /dev/null +++ b/clusters/homelab/forgejo/deployment.yaml @@ -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 diff --git a/clusters/homelab/forgejo/kustomization.yaml b/clusters/homelab/forgejo/kustomization.yaml new file mode 100644 index 0000000..4b97cf6 --- /dev/null +++ b/clusters/homelab/forgejo/kustomization.yaml @@ -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 diff --git a/clusters/homelab/forgejo/namespace.yaml b/clusters/homelab/forgejo/namespace.yaml new file mode 100644 index 0000000..aa4a43a --- /dev/null +++ b/clusters/homelab/forgejo/namespace.yaml @@ -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 diff --git a/clusters/homelab/forgejo/pvc.yaml b/clusters/homelab/forgejo/pvc.yaml new file mode 100644 index 0000000..3fc13e9 --- /dev/null +++ b/clusters/homelab/forgejo/pvc.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: forgejo-data + namespace: forgejo +spec: + accessModes: + - ReadWriteOnce + storageClassName: longhorn + resources: + requests: + storage: 5Gi diff --git a/clusters/homelab/forgejo/service.yaml b/clusters/homelab/forgejo/service.yaml new file mode 100644 index 0000000..76700aa --- /dev/null +++ b/clusters/homelab/forgejo/service.yaml @@ -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