Each release renders the Timoni module to plain manifests and pushes
them to oci://git.eagraiclainne.ie/eagraiclainne/manifests (tags
vX.Y.Z and latest), pinned to that release's
server image. Flux pulls the artifact and reconciles it. This page is the
complete stack — with the SQLite default there is no database service to
run.
Prerequisites
- A Kubernetes cluster with Flux
installed (
flux checkpasses) kubectlpointed at it
Namespace
The registry is public — Flux pulls the manifest artifact and the pods pull the server image without credentials:
kubectl create namespace eagraiclainne
Storage
There is no database step. The rendered manifests carry the SQLite
default: a 1Gi PVC (eagraiclainne-data) mounted at
/data, the server owning /data/eagraiclainne.db
and applying its schema on boot. Single replica,
Recreate rollouts — one writer, by design. If you want the
PostgreSQL backend instead, deploy via
Timoni, whose values expose the
storage engine.
OCIRepository & Kustomization
# eagraiclainne-flux.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: OCIRepository
metadata:
name: eagraiclainne
namespace: eagraiclainne
spec:
interval: 10m
url: oci://git.eagraiclainne.ie/eagraiclainne/manifests
ref:
tag: v2.2.0 # or semver: ">=1.0.0" to track releases
---
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: eagraiclainne
namespace: eagraiclainne
spec:
interval: 10m
retryInterval: 30s
timeout: 5m
targetNamespace: eagraiclainne
sourceRef:
kind: OCIRepository
name: eagraiclainne
path: "./"
prune: true
wait: true
patches:
# Since v0.6.0 the rendered manifests ship with telemetry off (stdout
# exporters). To export to your own collector, add the env on the
# container — an explicit env entry outranks the envFrom ConfigMap.
# Drop this block entirely if stdout logs are all you want.
- target:
kind: Deployment
name: eagraiclainne
patch: |
apiVersion: apps/v1
kind: Deployment
metadata:
name: eagraiclainne
spec:
template:
spec:
containers:
- name: server
env:
- name: EAG_OTLP_ENDPOINT
value: "lgtm.observability:4317"
- name: EAG_OTLP_INSECURE
value: "true"
kubectl apply -f eagraiclainne-flux.yaml
patches block is the lever for
any other tweak to the rendered manifests — replicas, resources, extra
EAG_* env. If you find yourself patching much, deploy via
Timoni instead and set real values.Verify
flux -n eagraiclainne get sources oci
flux -n eagraiclainne get kustomizations
kubectl -n eagraiclainne rollout status deployment/eagraiclainne
kubectl -n eagraiclainne port-forward svc/eagraiclainne 8080:8080 &
curl -sS http://localhost:8080/ | head -c 200
Then expose the Service through your ingress of choice and open it —
first sign-in takes it from
there. Upgrades are a tag edit (or automatic under a
semver range). Schema changes apply themselves when the new
pod boots. After the upgrade, the web app greets each member with a
what's-new sheet, and Admin → System shows the release notes beside
the version check.