diff --git a/apps/asciinema/README.md b/apps/asciinema/README.md new file mode 100644 index 0000000..acc49af --- /dev/null +++ b/apps/asciinema/README.md @@ -0,0 +1,17 @@ +# Asciinema homelab values + +The published `asciinema` chart owns the application Deployment, PostgreSQL +StatefulSet, Services, Ingress, probes, and optional bucket-bootstrap Job. +This directory supplies the homelab hostname, Traefik integration, local RGW +endpoint, sizing/storage selection, and the existing Secret name. + +`asciinema-secrets` remains cluster-managed because it contains the PostgreSQL, +Phoenix, and Rook object-user credentials. Restore it before synchronizing a +new cluster, then ensure its Rook access keys match the generated +`rook-ceph-object-user-my-store-asciinema` Secret. The existing +`data-postgresql-0` claim is deliberately preserved by the chart's +StatefulSet volume-claim template; do not delete it during recovery. + +The CephObjectStoreUser is a cluster-specific Rook integration. Its bucket is +already initialized. The chart's optional bucket-bootstrap hook remains off so +routine Argo synchronization never recreates a completed Job. diff --git a/apps/asciinema/resources/ceph-object-user.yaml b/apps/asciinema/resources/ceph-object-user.yaml new file mode 100644 index 0000000..fc082bd --- /dev/null +++ b/apps/asciinema/resources/ceph-object-user.yaml @@ -0,0 +1,8 @@ +apiVersion: ceph.rook.io/v1 +kind: CephObjectStoreUser +metadata: + name: asciinema + namespace: rook-ceph +spec: + store: my-store + displayName: asciinema recordings diff --git a/apps/asciinema/values.yaml b/apps/asciinema/values.yaml new file mode 100644 index 0000000..d721be6 --- /dev/null +++ b/apps/asciinema/values.yaml @@ -0,0 +1,40 @@ +fullnameOverride: asciinema + +secret: + existingSecret: asciinema-secrets + +config: + urlHost: asciinema.brunner.ninja + urlScheme: https + timezone: Europe/Vienna + dbPoolSize: "5" + s3: + bucket: asciinema + endpoint: http://rook-ceph-rgw-my-store.rook-ceph.svc.cluster.local + region: keller + smtp: + host: smtp-relay.gmail.com + port: "587" + tls: if_available + fromAddress: asciinema@brunner.ninja + replyToAddress: daniel@brunner.ninja + contactEmailAddress: daniel@brunner.ninja + adminPanelOnMainEndpoint: true + adminBindAll: false + uploadAuthRequired: true + unregisteredUploadCountLimit: "0" + defaultRecordingVisibility: unlisted + defaultStreamVisibility: unlisted + signUpDisabled: false + +ingress: + enabled: true + className: traefik + annotations: + traefik.ingress.kubernetes.io/router.entrypoints: websecure + host: asciinema.brunner.ninja + +postgresql: + persistence: + storageClass: rook-ceph-block-ec + size: 8Gi diff --git a/bootstrap/asciinema-project.yaml b/bootstrap/asciinema-project.yaml new file mode 100644 index 0000000..54be19e --- /dev/null +++ b/bootstrap/asciinema-project.yaml @@ -0,0 +1,32 @@ +apiVersion: argoproj.io/v1alpha1 +kind: AppProject +metadata: + name: asciinema + namespace: argocd +spec: + description: Asciinema server and its homelab Rook integration + sourceRepos: + - https://brunner.ninja/charts + - https://code.brunner.ninja/feedc0de/homelab-gitops.git + destinations: + - namespace: asciinema + server: https://kubernetes.default.svc + - namespace: rook-ceph + server: https://kubernetes.default.svc + namespaceResourceWhitelist: + - group: "" + kind: ConfigMap + - group: "" + kind: PersistentVolumeClaim + - group: "" + kind: Service + - group: apps + kind: Deployment + - group: apps + kind: StatefulSet + - group: batch + kind: Job + - group: ceph.rook.io + kind: CephObjectStoreUser + - group: networking.k8s.io + kind: Ingress diff --git a/bootstrap/asciinema.yaml b/bootstrap/asciinema.yaml new file mode 100644 index 0000000..b9e3fb9 --- /dev/null +++ b/bootstrap/asciinema.yaml @@ -0,0 +1,31 @@ +apiVersion: argoproj.io/v1alpha1 +kind: Application +metadata: + name: asciinema + namespace: argocd +spec: + project: asciinema + sources: + - repoURL: https://brunner.ninja/charts + chart: asciinema + targetRevision: 1.0.0 + helm: + releaseName: asciinema + valueFiles: + - $values/apps/asciinema/values.yaml + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + ref: values + - repoURL: https://code.brunner.ninja/feedc0de/homelab-gitops.git + targetRevision: main + path: apps/asciinema/resources + destination: + server: https://kubernetes.default.svc + namespace: asciinema + syncPolicy: + automated: + enabled: true + prune: false + selfHeal: true + syncOptions: + - CreateNamespace=true