diff --git a/app-of-apps/faircampbuilder.yaml b/app-of-apps/faircampbuilder.yaml new file mode 100644 index 0000000..a7c1efe --- /dev/null +++ b/app-of-apps/faircampbuilder.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/configmap.yaml b/apps-kustomized/faircampbuilder/configmap.yaml new file mode 100644 index 0000000..87ef534 --- /dev/null +++ b/apps-kustomized/faircampbuilder/configmap.yaml @@ -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" diff --git a/apps-kustomized/faircampbuilder/cronjob.yaml b/apps-kustomized/faircampbuilder/cronjob.yaml new file mode 100644 index 0000000..eb44a87 --- /dev/null +++ b/apps-kustomized/faircampbuilder/cronjob.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/deploy.yaml b/apps-kustomized/faircampbuilder/deploy.yaml new file mode 100644 index 0000000..68dee66 --- /dev/null +++ b/apps-kustomized/faircampbuilder/deploy.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/ing-lycansong.yaml b/apps-kustomized/faircampbuilder/ing-lycansong.yaml new file mode 100644 index 0000000..c93fe7a --- /dev/null +++ b/apps-kustomized/faircampbuilder/ing-lycansong.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/ing-wordgarage.yaml b/apps-kustomized/faircampbuilder/ing-wordgarage.yaml new file mode 100644 index 0000000..a9dab42 --- /dev/null +++ b/apps-kustomized/faircampbuilder/ing-wordgarage.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/pv-buckets.yaml b/apps-kustomized/faircampbuilder/pv-buckets.yaml new file mode 100644 index 0000000..6d12285 --- /dev/null +++ b/apps-kustomized/faircampbuilder/pv-buckets.yaml @@ -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 diff --git a/apps-kustomized/faircampbuilder/pvc-buckets.yaml b/apps-kustomized/faircampbuilder/pvc-buckets.yaml new file mode 100644 index 0000000..dc8f7d2 --- /dev/null +++ b/apps-kustomized/faircampbuilder/pvc-buckets.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: seaweedfs-buckets +spec: + accessModes: + - ReadWriteMany + resources: + requests: + storage: 1Gi + volumeName: seaweedfs-buckets diff --git a/apps-kustomized/faircampbuilder/pvc-data.yaml b/apps-kustomized/faircampbuilder/pvc-data.yaml new file mode 100644 index 0000000..46e89a5 --- /dev/null +++ b/apps-kustomized/faircampbuilder/pvc-data.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: faircamp-data +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 10Gi + storageClassName: longhorn-fast diff --git a/apps-kustomized/faircampbuilder/rclone.conf b/apps-kustomized/faircampbuilder/rclone.conf new file mode 100644 index 0000000..5c96496 --- /dev/null +++ b/apps-kustomized/faircampbuilder/rclone.conf @@ -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 diff --git a/apps-kustomized/faircampbuilder/svc-s3.yaml b/apps-kustomized/faircampbuilder/svc-s3.yaml new file mode 100644 index 0000000..d1ddeb4 --- /dev/null +++ b/apps-kustomized/faircampbuilder/svc-s3.yaml @@ -0,0 +1,7 @@ +apiVersion: v1 +kind: Service +metadata: + name: s3 +spec: + externalName: hp40l.lan + type: ExternalName