diff --git a/manifests/_apps/focalboard.yaml b/manifests/_apps/focalboard.yaml new file mode 100644 index 0000000..a621fea --- /dev/null +++ b/manifests/_apps/focalboard.yaml @@ -0,0 +1,24 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: focalboard + namespace: argocd + finalizers: + - resources-finalizer.argocd.argoproj.io +spec: + project: cluster.fun + destination: + namespace: focalboard + name: cluster-fun (scaleway) + source: + path: manifests/focalboard + 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/focalboard/focalboard.yaml b/manifests/focalboard/focalboard.yaml new file mode 100644 index 0000000..ac50019 --- /dev/null +++ b/manifests/focalboard/focalboard.yaml @@ -0,0 +1,132 @@ +apiVersion: v1 +kind: Secret +metadata: + name: focalboard + namespace: focalboard + labels: + app.kubernetes.io/name: focalboard + annotations: + kube-1password: dpszqviipd5tkls5bajzeb56ui + kube-1password/vault: Kubernetes + kube-1password/secret-text-key: config.json +type: Opaque + +--- + +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: focalboard + namespace: focalboard + labels: + app.kubernetes.io/name: focalboard +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 2Gi + +--- + +apiVersion: v1 +kind: Service +metadata: + name: focalboard + namespace: focalboard + labels: + app.kubernetes.io/name: focalboard + annotations: + prometheus.io/scrape: "true" + prometheus.io/path: "/metrics" + prometheus.io/port: "9000" +spec: + type: ClusterIP + ports: + - port: 80 + targetPort: web + name: web + selector: + app.kubernetes.io/name: focalboard +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: focalboard + namespace: focalboard + labels: + app.kubernetes.io/name: focalboard + annotations: + secret.reloader.stakater.com/reload: "focalboard" +spec: + replicas: 1 + strategy: + type: Recreate + selector: + matchLabels: + app.kubernetes.io/name: focalboard + template: + metadata: + labels: + app.kubernetes.io/name: focalboard + spec: + containers: + - name: focalboard + image: mattermost/focalboard:7.2.0 + imagePullPolicy: IfNotPresent + ports: + - containerPort: 8000 + name: web + env: + - name: FOCALBOARD_PORT + value: "8000" + - name: VIRTUAL_HOST + value: "localhost" + - name: VIRTUAL_PORT + value: "8000" + - name: VIRTUAL_PROTO + value: "http" + volumeMounts: + - name: data + mountPath: /data + - name: config + mountPath: /opt/focalboard/config.json + subPath: config.json + volumes: + - name: data + persistentVolumeClaim: + claimName: focalboard + - name: config + secret: + secretName: focalboard + +--- + +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: focalboard + namespace: focalboard + labels: + app.kubernetes.io/name: focalboard + annotations: + cert-manager.io/cluster-issuer: letsencrypt + nginx.ingress.kubernetes.io/force-ssl-redirect: "true" + nginx.ingress.kubernetes.io/proxy-body-size: "0" +spec: + tls: + - hosts: + - focalboard.cluster.fun + secretName: focalboard-ingress + rules: + - host: focalboard.cluster.fun + http: + paths: + - path: / + pathType: Prefix + backend: + service: + name: focalboard + port: + number: 80