cluster

Infrastructure files for Nordgedanken and Midnightthoughts.
git clone git://archive.git.mtrnord.blog/MTRNord/cluster.git
Log | Files | Refs | README

commit a20b5e24981b3e950fed379411cd07fd3517a543
parent 6ebdc8cff0f1cfac53b31a81aaaca00eb42905c5
Author: MTRNord <MTRNord@users.noreply.github.com>
Date:   Mon,  9 Feb 2026 17:30:33 +0100

deploy persephone

Signed-off-by: MTRNord <MTRNord@users.noreply.github.com>

Diffstat:
Aapps/talos_cluster/persephone/config.yaml | 32++++++++++++++++++++++++++++++++
Aapps/talos_cluster/persephone/deployment.yaml | 101+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Aapps/talos_cluster/persephone/kustomization.yaml | 10++++++++++
Aapps/talos_cluster/persephone/pvc.yaml | 13+++++++++++++
4 files changed, 156 insertions(+), 0 deletions(-)

diff --git a/apps/talos_cluster/persephone/config.yaml b/apps/talos_cluster/persephone/config.yaml @@ -0,0 +1,32 @@ +database: + host: pg-cluster-v2-rw.postgres-cluster.svc.cluster.local + port: 5432 + database_name: persephone + user: persephone + password: ENC[AES256_GCM,data:YJVt0q0FjyJzVij1CnTPoC3k6CecWRroL4l9YqBGzVQmNRpBVXnv0U6LzENAddwH+lX4tjk//d54TssGsiAu,iv:3ziRBrooxGIF9fsLgU3PeRiYIPXUvQTi0CRDqy4nnX8=,tag:0fSZeGHIyJZpitVTTVrv+Q==,type:str] +matrix: + server_name: persephone.midnightthoughts.space + server_key_location: /data/server_key.key +webserver: + ssl: true +log_level: debug +sops: + kms: [] + gcp_kms: [] + azure_kv: [] + hc_vault: [] + age: + - recipient: age1esjyg2qfy49awv0ptkzvpk425adczjr38m37w2mmcahzc4p8n54sll2nzh + enc: | + -----BEGIN AGE ENCRYPTED FILE----- + YWdlLWVuY3J5cHRpb24ub3JnL3YxCi0+IFgyNTUxOSAyYS9oYllEVHY1SDBWZkFz + TVBNcDk3SHNITWhTbDEvUkhuUlpHeDNPNjFzCmZxWGZkUnFoWUhkUEFyMktsbFlm + MUJlNjR6aThqL2Nla2N3UkU3Y1FjVjgKLS0tIFhaWFNqWkNpQ2ZzVVZKYmt3czVa + c1VPS0lrckpsbDNJdml0bE8zK1R1djgKa8BtErRDofdS4Q2SmZSVNdnM9tbMXN9a + t6Vg42BPDzyuyeityiXWZk5wPLQErm4cclKMZJuUlYZp9Hr1esSyVA== + -----END AGE ENCRYPTED FILE----- + lastmodified: "2026-02-09T16:11:25Z" + mac: ENC[AES256_GCM,data:zy/QFjrh4SAleKbWiCa5k884M8+SIPsoXo3AV8wUMhY7wqrqMXy32CjbSPWhrjzSsrPM4TSoeD9UMwo+b/zcLS8s3rTR2seE7YAMC1oy6tTrj0fnvV7Jhp3al9yZmuRfCaG6GUhJOgvUxgYtfoYgkMFcQMmMJX0cj1tMWho2cg8=,iv:GRCqeXzPqGTj15bAcGbavTCss8TiqFXZNIx73ExgHv0=,tag:jVyhsSciW9/4KKxkVeeXlA==,type:str] + pgp: [] + encrypted_regex: ^(apiKey|appUserPassword|otelUserPassword|harborAdminPassword|totpVaultKey|kimaiAppSecret|kimaiAdminPassword|GITHUB_CLIENT_ID|GITHUB_CLIENT_SECRET|GITHUB_PRIVATE_KEY|woosh|root_password|rspamd_password|pgdb_password|matrix_access_token|pgdb_remote_url|hmac_secret_key|adminPassword|adminEmail|jenkinsAdminEmail|securityRealm|gerrit.config|routing_key|DATABASE_URL|SMTP_PASSWORD|SECRET_KEY_BASE|admin_password|extraCommands|key|clickhouseDatabaseURL|databaseURL|client_id|client_secret|secret_key_base|otp_secret|private_key|public_key|primaryKey|deterministicKey|keyDerivationSalt|token|clientId|secretKey|installationId|installationKey|uriOverride|adminToken.value|password.value|sql_password|erlangCookie|AUTHENTICATION_PASSWORD|ROOM_API_SECRET_KEY|adminPassword|configPassword|adminUser|configUser|MAIL_PASSWORD|APP_KEY|api_key|api_secret|keys|livekit_key|livekit_secret|secret_key|admin_pass|admin_email|mariadbPassword|mariadbRootPassword|privateKey|data|stringData|PASSWD|password|pass|postgresPassword|postgresqlPassword|redminePassword|smtpPassword|registration_shared_secret|shared_secret|secret|admin_token|integrationKey|rootPassword|adminPassword|adminUser|adminEmail|emailPassword|secretKey|appId|clientSecret|webhookSecret)$ + version: 3.9.1 diff --git a/apps/talos_cluster/persephone/deployment.yaml b/apps/talos_cluster/persephone/deployment.yaml @@ -0,0 +1,101 @@ +apiVersion: apps/v1 +kind: Deployment +metadata: + name: persephone + namespace: persephone +spec: + progressDeadlineSeconds: 120 + strategy: + rollingUpdate: + maxUnavailable: 0 + type: RollingUpdate + selector: + matchLabels: + app: persephone + template: + metadata: + labels: + app: persephone + spec: + containers: + - name: persephone + image: ghcr.io/mtrnord/persephone:main + imagePullPolicy: Always + env: + - name: PERSEPHONE_CONFIG + value: /data + resources: + limits: {} + requests: + memory: "344Mi" + cpu: "252m" + ports: + - containerPort: 8008 + name: web + protocol: TCP + volumeMounts: + - name: config + mountPath: /data + subPath: config.yaml + - name: data + mountPath: "/data" + - mountPath: /tmp + name: tmp + livenessProbe: + httpGet: + path: / + port: web + scheme: HTTP + readinessProbe: + httpGet: + path: / + port: web + scheme: HTTP + startupProbe: + httpGet: + path: / + port: web + volumes: + - name: tmp + emptyDir: + sizeLimit: 2048Mi + - name: data + persistentVolumeClaim: + claimName: persephone-data + - name: config + configMap: + name: persephone-config + items: + - key: config.yaml + path: config.yaml +--- +apiVersion: v1 +kind: Service +metadata: + name: persephone +spec: + selector: + app: persephone + ports: + - name: web + port: 8008 + targetPort: 8008 +--- +apiVersion: gateway.networking.k8s.io/v1 +kind: HTTPRoute +metadata: + name: persephone + namespace: persephone +spec: + parentRefs: + - name: envoy-gateway + namespace: envoy-gateway + hostnames: + - persephone.midnightthoughts.space + rules: + - backendRefs: + - name: persephone + port: 8008 + timeouts: + request: 240s + backendRequest: 0s diff --git a/apps/talos_cluster/persephone/kustomization.yaml b/apps/talos_cluster/persephone/kustomization.yaml @@ -0,0 +1,10 @@ +apiVersion: kustomize.config.k8s.io/v1beta1 +kind: Kustomization +namespace: persephone +resources: + - pvc.yaml + - deployment.yaml +configMapGenerator: + - name: persephone-config + files: + - config.yaml diff --git a/apps/talos_cluster/persephone/pvc.yaml b/apps/talos_cluster/persephone/pvc.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: persephone-data + namespace: persephone +spec: + resources: + requests: + storage: 128Mi + storageClassName: persephone + volumeMode: Filesystem + accessModes: + - ReadWriteMany