From b29a34008f2fa704270f64273d4665e84f6eadbe Mon Sep 17 00:00:00 2001 From: Marcus Noble Date: Sun, 5 Jul 2026 11:15:16 +0100 Subject: [PATCH] Added airtrail Signed-off-by: Marcus Noble --- manifests/_apps/airtrail.yaml | 25 ++++++ manifests/airtrail/airtrail.yaml | 141 +++++++++++++++++++++++++++++++ manifests/airtrail/pvs.yaml | 13 +++ 3 files changed, 179 insertions(+) create mode 100644 manifests/_apps/airtrail.yaml create mode 100644 manifests/airtrail/airtrail.yaml create mode 100644 manifests/airtrail/pvs.yaml diff --git a/manifests/_apps/airtrail.yaml b/manifests/_apps/airtrail.yaml new file mode 100644 index 0000000..2b23de4 --- /dev/null +++ b/manifests/_apps/airtrail.yaml @@ -0,0 +1,25 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: airtrail + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: cluster.fun + destination: + namespace: airtrail + name: cluster-fun (v2) + source: + path: manifests/airtrail + repoURL: "https://git.cluster.fun/AverageMarcus/cluster.fun.git" + targetRevision: HEAD + syncPolicy: + automated: {} + syncOptions: + - CreateNamespace=true + ignoreDifferences: + - kind: Secret + jsonPointers: + - /data + diff --git a/manifests/airtrail/airtrail.yaml b/manifests/airtrail/airtrail.yaml new file mode 100644 index 0000000..252d0f6 --- /dev/null +++ b/manifests/airtrail/airtrail.yaml @@ -0,0 +1,141 @@ +apiVersion: v1 +kind: Secret +metadata: + name: airtrail + namespace: airtrail + labels: + app: airtrail + app.kubernetes.io/name: airtrail + annotations: + kube-1password: 2322tcm3p5v6ql7oy2efrn4jse + kube-1password/vault: Kubernetes + kube-1password/secret-text-parse: "true" +type: Opaque +--- +apiVersion: v1 +kind: ConfigMap +metadata: + name: airtrail + namespace: airtrail + labels: + app: airtrail + app.kubernetes.io/name: airtrail + annotations: + reloader.stakater.com/match: "true" +data: + ORIGIN=https://airtrail.cluster.fun + UPLOAD_LOCATION=/app/uploads +--- +apiVersion: apps/v1 +kind: Deployment +metadata: + name: airtrail + namespace: airtrail + labels: + app: airtrail + app.kubernetes.io/name: airtrail +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app: airtrail + template: + metadata: + labels: + app: airtrail + app.kubernetes.io/name: airtrail + spec: + containers: + - name: airtrail + image: johly/airtrail:v3.11.1 + imagePullPolicy: IfNotPresent + envFrom: + - configMapRef: + name: airtrail + - secretRef: + name: airtrail + ports: + - containerPort: 3000 + name: web + volumeMounts: + - mountPath: /app/uploads + name: uploads + # livenessProbe: + # httpGet: + # path: /api/health + # port: 3000 + # initialDelaySeconds: 5 + # periodSeconds: 30 + # readinessProbe: + # httpGet: + # path: /api/health + # port: 3000 + # initialDelaySeconds: 5 + # periodSeconds: 10 + # resources: + # requests: + # cpu: 300m + # memory: 400Mi + # limits: + # cpu: 700m + # memory: 800Mi + volumes: + - name: uploads + persistentVolumeClaim: + claimName: airtrail-uploads +--- +apiVersion: v1 +kind: Service +metadata: + name: airtrail + namespace: airtrail + labels: + app: airtrail + app.kubernetes.io/name: airtrail +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: web + name: web + selector: + app: airtrail +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: airtrail + namespace: airtrail + labels: + app: airtrail + app.kubernetes.io/name: airtrail + annotations: + cert-manager.io/cluster-issuer: letsencrypt + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" + nginx.ingress.kubernetes.io/proxy-body-size: "0" + nginx.ingress.kubernetes.io/client-body-buffer-size: 25m + nginx.ingress.kubernetes.io/proxy-connect-timeout: "300" + nginx.ingress.kubernetes.io/proxy-send-timeout: "300" + nginx.ingress.kubernetes.io/proxy-read-timeout: "300" + nginx.ingress.kubernetes.io/proxy-next-upstream: "300" + nginx.ingress.kubernetes.io/proxy-next-upstream-timeout: "300" +spec: + ingressClassName: nginx + tls: + - hosts: + - airtrail.cluster.fun + secretName: airtrail-ingress + rules: + - host: airtrail.cluster.fun + http: + paths: + - path: / + pathType: ImplementationSpecific + backend: + service: + name: airtrail + port: + name: web diff --git a/manifests/airtrail/pvs.yaml b/manifests/airtrail/pvs.yaml new file mode 100644 index 0000000..7094aae --- /dev/null +++ b/manifests/airtrail/pvs.yaml @@ -0,0 +1,13 @@ +kind: PersistentVolumeClaim +apiVersion: v1 +metadata: + name: airtrail-uploads + namespace: airtrail +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 1Gi + storageClassName: sbs-default-retain +---