adding faircampbuilder

This commit is contained in:
Martyn 2026-01-27 21:41:39 +01:00
parent 9722988eba
commit 9a2a274baa
11 changed files with 236 additions and 0 deletions

View file

@ -0,0 +1,17 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: faircampbuilder
namespace: argocd
spec:
destination:
namespace: faircampbuilder
server: https://kubernetes.default.svc
project: default
source:
path: apps-kustomized/faircampbuilder
repoURL: http://forgejo.git.svc.cluster.local/martyn/infra4talos.git
targetRevision: HEAD
syncPolicy:
automated:
selfHeal: true

View file

@ -0,0 +1,7 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: faircamp-sites
data:
# property-like keys; each key maps to a simple value
faircamp_sites: "word-garage lycansong"

View file

@ -0,0 +1,41 @@
apiVersion: batch/v1
kind: CronJob
metadata:
name: faircampbuilder
spec:
schedule: "*/15 * * * *"
jobTemplate:
metadata:
labels:
app: faircampbuilder
spec:
concurrencyPolicy: Forbid
template:
metadata:
labels:
app: faircampbuilder
spec:
containers:
- command:
- /faircampbuilder.bash
env:
- name: FAIRCAMP_SITES
valueFrom:
configMapKeyRef:
name: faircamp-sites
key: faircamp_sites
image: git.martyn.berlin/martyn/rclone-faircamp:latest
name: shell
volumeMounts:
- mountPath: /rclone-output
name: faircamp-data
- mountPath: /root/.config/rclone
name: rclone-config
volumes:
- name: faircamp-data
persistentVolumeClaim:
claimName: faircamp-data
- name: rclone-config
secret:
secretName: rclone-config
restartPolicy: Never

View file

@ -0,0 +1,38 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: tester
spec:
replicas: 0
selector:
matchLabels:
app: tester
template:
metadata:
labels:
app: tester
spec:
containers:
- command:
- sleep
- "1000000"
env:
- name: FAIRCAMP_SITES
valueFrom:
configMapKeyRef:
name: faircamp-sites
key: faircamp_sites
image: git.martyn.berlin/martyn/rclone-faircamp:latest
name: shell
volumeMounts:
- mountPath: /rclone-output
name: faircamp-data
- mountPath: /root/.config/rclone
name: rclone-config
volumes:
- name: faircamp-data
persistentVolumeClaim:
claimName: faircamp-data
- name: rclone-config
secret:
secretName: rclone-config

View file

@ -0,0 +1,36 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
external-dns.alpha.kubernetes.io/target: armnleg.martyn.berlin
nginx.ingress.kubernetes.io/rewrite-target: "/lycansong/.faircamp_build/$1"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($uri ~ "^/(.*)/$") {
rewrite ^(.+)/$ $1 last;
}
if ($uri ~ "^\/$") {
rewrite ^ /lycansong/.faircamp_build/index.html break;
}
if ($uri !~ "^(.*)\.(.*)$") {
rewrite ^ /lycansong/.faircamp_build$uri/index.html break;
}
name: lycansong
spec:
ingressClassName: nginx
rules:
- host: lycansong.martyn.berlin
http:
paths:
- backend:
service:
name: s3
port:
number: 8333
path: /(.*)
pathType: ImplementationSpecific
tls:
- hosts:
- lycansong.martyn.berlin

View file

@ -0,0 +1,36 @@
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
annotations:
cert-manager.io/cluster-issuer: letsencrypt
external-dns.alpha.kubernetes.io/target: armnleg.martyn.berlin
nginx.ingress.kubernetes.io/rewrite-target: "/word-garage/.faircamp_build/$1"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
nginx.ingress.kubernetes.io/configuration-snippet: |
if ($uri ~ "^/(.*)/$") {
rewrite ^(.+)/$ $1 last;
}
if ($uri ~ "^\/$") {
rewrite ^ /word-garage/.faircamp_build/index.html break;
}
if ($uri !~ "^(.*)\.(.*)$") {
rewrite ^ /word-garage/.faircamp_build$uri/index.html break;
}
name: word-garage
spec:
ingressClassName: nginx
rules:
- host: word-garage.martyn.berlin
http:
paths:
- backend:
service:
name: s3
port:
number: 8333
path: /(.*)
pathType: ImplementationSpecific
tls:
- hosts:
- word-garage.martyn.berlin

View file

@ -0,0 +1,17 @@
apiVersion: v1
kind: PersistentVolume
metadata:
name: seaweedfs-buckets
spec:
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
csi:
driver: seaweedfs-csi-driver
volumeAttributes:
collection: default
diskType: spinny
path: /buckets/
replication: "000"
volumeHandle: dfs-test

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: seaweedfs-buckets
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
volumeName: seaweedfs-buckets

View file

@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: faircamp-data
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
storageClassName: longhorn-fast

View file

@ -0,0 +1,15 @@
[word-garage]
type = s3
provider = SeaweedFS
access_key_id = T0UXLIN7NA775DO2B01O
secret_access_key = 2AW/8N3Wdsf3iIebdZKZTsGKHHiBWdM9kJyM+czB
endpoint = http://hp40l.lan:8333
acl = public-read
[lycansong]
type = s3
provider = SeaweedFS
access_key_id = T0UXLIN7NA775DO2B01O
secret_access_key = 2AW/8N3Wdsf3iIebdZKZTsGKHHiBWdM9kJyM+czB
endpoint = http://hp40l.lan:8333
acl = public-read

View file

@ -0,0 +1,7 @@
apiVersion: v1
kind: Service
metadata:
name: s3
spec:
externalName: hp40l.lan
type: ExternalName