blumeops/argocd/manifests/miniflux
Erich Blume 21848a7919 P5.1: Migrate minikube from podman to QEMU2 driver (#38)
## Summary
- Migrate minikube from podman driver to qemu2 driver for proper NFS/SMB volume mount support
- Update ansible minikube role with qemu installation and containerd runtime
- Remove podman role dependency from indri.yml
- Add synology user creation steps and post-migration zot reconfiguration notes

## Why
Phase 6 (Kiwix/Transmission migration) was blocked because the podman driver lacks kernel capabilities for filesystem mounts. QEMU2 creates an actual VM with full mount support.

## Deployment and Testing
- [ ] Create k8s-storage user on Synology DSM
- [ ] Store credentials in 1Password (synology-k8s-storage)
- [ ] Export current k8s state
- [ ] Stop and delete podman-based minikube cluster
- [ ] Run ansible to create QEMU2 cluster
- [ ] Test NFS volume mount with test pod
- [ ] Redeploy ArgoCD and all apps
- [ ] Verify all services healthy
- [ ] Reconfigure zot registry mirrors for containerd (post-migration)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Reviewed-on: https://forge.tail8d86e.ts.net/eblume/blumeops/pulls/38
2026-01-21 16:03:37 -08:00
..
deployment.yaml P4: Miniflux migration + PostgreSQL consolidation (#33) 2026-01-20 09:04:47 -08:00
ingress-tailscale.yaml P5.1: Migrate minikube from podman to QEMU2 driver (#38) 2026-01-21 16:03:37 -08:00
kustomization.yaml P4: Miniflux migration + PostgreSQL consolidation (#33) 2026-01-20 09:04:47 -08:00
README.md P5.1: Migrate minikube from podman to QEMU2 driver (#38) 2026-01-21 16:03:37 -08:00
secret-db.yaml.tpl P4: Miniflux migration + PostgreSQL consolidation (#33) 2026-01-20 09:04:47 -08:00
service.yaml P4: Miniflux migration + PostgreSQL consolidation (#33) 2026-01-20 09:04:47 -08:00

Miniflux Kubernetes Deployment

RSS/Atom feed reader deployed via ArgoCD.

Prerequisites

  • CloudNativePG PostgreSQL cluster running in databases namespace
  • Miniflux database and user created in PostgreSQL (from Phase 3 migration)
  • Tailscale operator installed

Setup

  1. Create the namespace and database secret:
kubectl create namespace miniflux

# The miniflux user password is auto-generated by CNPG in blumeops-pg-app secret
kubectl create secret generic miniflux-db -n miniflux \
  --from-literal=url="$(kubectl -n databases get secret blumeops-pg-app -o jsonpath='{.data.uri}' | base64 -d)"
  1. Apply the ArgoCD application:
kubectl apply -f argocd/apps/miniflux.yaml
argocd app sync miniflux

Access

Configuration

Environment variables in deployment.yaml:

  • POLLING_FREQUENCY: How often to check feeds (minutes)
  • BATCH_SIZE: Number of feeds to refresh per interval
  • CLEANUP_ARCHIVE_UNREAD_DAYS: Days to keep unread entries
  • CLEANUP_ARCHIVE_READ_DAYS: Days to keep read entries

Management

# View logs
kubectl -n miniflux logs -f deployment/miniflux

# Restart deployment
kubectl -n miniflux rollout restart deployment/miniflux

# Check health
curl https://feed.tail8d86e.ts.net/healthcheck

Database Connection

Connects to PostgreSQL via internal k8s DNS: blumeops-pg-rw.databases.svc.cluster.local:5432

The database is also accessible externally via Tailscale at: pg.tail8d86e.ts.net:5432

Restore from Backup

If the database needs to be restored from a borgmatic backup:

  1. List archives: borgmatic list
  2. Extract dump from archive using borg extract to /tmp/restore
  3. Restore with pg_restore --clean --if-exists --no-owner --no-acl
  4. Fix ownership - ensure user miniflux owns all tables, sequences, and types in the public schema (restore runs as eblume)
  5. Restart miniflux deployment