Prepare Asciinema GitOps application

This commit is contained in:
2026-10-18 23:41:40 +02:00
parent bdf982c6de
commit 13fae792bc
5 changed files with 128 additions and 0 deletions
+17
View File
@@ -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.
@@ -0,0 +1,8 @@
apiVersion: ceph.rook.io/v1
kind: CephObjectStoreUser
metadata:
name: asciinema
namespace: rook-ceph
spec:
store: my-store
displayName: asciinema recordings
+40
View File
@@ -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
+32
View File
@@ -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
+31
View File
@@ -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