- flux/monitoring/prometheusrule-apis.yaml: extend all 5 SLO alert
rules to include vin-decoder in the job regex filter
- flux/monitoring/grafana-dashboard-apis.yaml: update all PromQL
expressions to include vin-decoder in the api regex filter;
update dashboard description
- flux/monitoring/vin-decoder-dashboard.yaml: new dedicated Grafana
dashboard for VIN Decoder showing request rate by route, 5xx error
rate, P50/P95/P99 latency by route, and data freshness gauge
- flux/monitoring/kustomization.yaml: add vin-decoder-dashboard.yaml
- flux/vin-decoder/servicemonitor.yaml: Prometheus ServiceMonitor
for auto-discovery of /metrics on the vin-decoder service
- flux/vin-decoder/kustomization.yaml: add servicemonitor.yaml
Closesleeworks-agents/api-company#129
Create flux/vin-decoder/ with namespace, HelmRelease, ExternalSecret, and
kustomization files mirroring the existing API Flux manifest structure.
Register vin-decoder in the root flux/kustomization.yaml so Flux picks it up.
Image automation is handled by existing flux/image-automation/ manifests
(ImageRepository and ImagePolicy for vin-decoder already present).
kustomize build flux/ passes with no errors.
Closesleeworks-agents/api-company#140
Closes leeworks-agents/api-company#133
Closes leeworks-agents/api-company#134
Closes leeworks-agents/api-company#135
Closes leeworks-agents/api-company#136
- flux/image-automation/imagerepositories.yaml: add vin-decoder ImageRepository
pointing at registry.leeworks.dev/vin-decoder/api (#133)
- flux/image-automation/imagepolicies.yaml: add vin-decoder ImagePolicy
with semver range >=0.1.0 (#133)
- flux/monitoring/gatus-helmrelease.yaml: add VIN Decoder API endpoint check
targeting https://vin.leeworks.dev/v1/health with Slack alert (#134)
- docs/pre-launch-checklist.md: add vin-decoder to Infrastructure, DNS & TLS,
Functional Verification, and Legal sections; update status page line to
reference all four APIs (#135)
- docs/secrets-checklist.md: add items #11-13 for vin-decoder GITEA_TOKEN,
gitea-registry, and rapidapi-proxy-secret; add detail sections for each (#136)
kustomize build flux/ passes with zero errors.
Add flux/{zip-enrichment,holidays,air-quality}/servicemonitor.yaml so
Prometheus (kube-prometheus-stack) can auto-discover and scrape each
API service once deployed.
Each ServiceMonitor:
- Selects pods via app.kubernetes.io/name label
- Scrapes /metrics on the http port every 30s
- Uses release: kube-prometheus-stack label to match Prometheus selector
- Lives in the same namespace as the API service
Add each servicemonitor.yaml to its kustomization.yaml resources list.
kustomize build flux/ passes with no errors.
Closesleeworks-agents/api-company#110
Adds postBuild.substituteFrom to the Flux Kustomization reference manifest
so that ${GRAFANA_ADMIN_PASSWORD} in flux/monitoring/helmrelease.yaml is
substituted from the grafana-admin secret at reconcile time.
Without this block Flux passes the literal string to the Helm chart, causing
Grafana to start with a broken admin password.
The live copy in 0xWheatyz/Talos at
testing1/first-cluster/cluster/flux/api-company-source/kustomization.yaml
must also be updated with the same block (companion to issue #90).
Closesleeworks-agents/api-company#97
- Fix APIDataStale 'for' duration from 5m to 30m (issue spec requires 30m)
- Add APIDataCriticallyStale alert at 60-day threshold (5184000s) with for: 1h
and severity: critical
Both alerts fire on api_data_freshness_seconds metric for all three API jobs.
Existing APIHighErrorRate and APIHighLatency alerts are unmodified.
kustomize build flux/ passes.
Closesleeworks-agents/api-company#88
The bedag HelmRepository was only declared inside flux/docs-site/, causing
a race condition where zip-enrichment, holidays, and air-quality HelmReleases
would fail with 'HelmRepository not found' if they reconciled before docs-site.
Move flux/docs-site/helmrepository.yaml -> flux/bedag-helmrepository.yaml and
add it as a top-level resource in flux/kustomization.yaml so it is always
available before any HelmRelease that depends on the bedag chart.
Closesleeworks-agents/api-company#87
- Item 8: gitea-registry imagePullSecret in zip-enrichment, holidays,
air-quality, docs-site namespaces (closesleeworks-agents/api-company#58)
- Item 9: gitea-image-automation-token in flux-system with write:repository
scope for Flux ImageUpdateAutomation (closesleeworks-agents/api-company#57)
- Wire gitea-image-automation-token as push.secretRef in imageupdateautomation.yaml
- Update dependency order and item count from seven to nine
Closesleeworks-agents/api-company#46
Add flux/ directories for all three API services, each containing:
- namespace.yaml — Kubernetes Namespace
- helmrelease.yaml — HelmRelease using bedag/raw chart with Deployment,
Service, and Ingress (TLS via cert-manager letsencrypt-prod)
- externalsecret.yaml — placeholder/comment for RapidAPI proxy-secret;
includes kubectl manual-create instructions until ESO is deployed
- kustomization.yaml — per-directory Kustomize resources list
Services and subdomains:
zip-enrichment → zip.leeworks.dev
holidays → holidays.leeworks.dev
air-quality → aqi.leeworks.dev
Images:
registry.leeworks.dev/zip-enrichment/server:latest
registry.leeworks.dev/holidays/server:latest
registry.leeworks.dev/air-quality/server:latest
Update root flux/kustomization.yaml to include all three new directories.
kustomize build flux/ passes with zero errors.