33 Commits

Author SHA1 Message Date
claude-code b199b07a92 xslt-lab: chart 0.4.2 (backend resources) and a second backend replica
The chart now declares resources for the backend container, which runs three
JVMs adding up to 512 MB of heap: it had been living on a manual kubectl patch
of 256Mi and was OOMKilled five times a day. minReplicas goes to 2 for the same
reason the frontend did — a restarting pod should not be the whole service.
2026-08-19 19:31:08 +00:00
claude-code a21b4a1ff2 xslt-lab: real databaseUrl for saved fiddles (shared Postgres, LXC 121) 2026-08-14 11:40:49 +00:00
claude-code c2f8854a9e argocd: eliminar kyverno
Sin ninguna ClusterPolicy/Policy definida (0 CRs): no aportaba nada y consumia
4 pods + 22 CRDs. Ademas su sync fallaba de forma permanente porque los CRDs
superan el limite de 262144 bytes en metadata.annotations al aplicarse
client-side.
2026-07-25 13:38:34 +00:00
claude-code 6b367c237e argocd: xslt-lab ignoreDifferences /spec/replicas (HPA vs replicaCount) 2026-07-25 10:46:37 +00:00
claude-code 124758801f argocd: kyverno Replace=true (CRDs superan limite de annotations) 2026-07-25 10:37:51 +00:00
claude-code 7d877256f7 obs: kubeProxy.enabled=false (microk8s usa Calico)
KubeProxyDown llevaba firing desde 2026-06-09: el ServiceMonitor por defecto
busca kube-proxy standalone, que no existe en microk8s (usa calico-node).
2026-07-25 10:00:03 +00:00
claude-code ccbc1fb800 xslt-lab: pin frontend minReplicas to 2 (SPOF fix was drifting)
The 1->2 bump that fixed the 503 outage only ever existed as a manual edit
in-cluster, so it was reverted on the next ArgoCD sync.
2026-07-25 07:35:35 +00:00
claude-code 405233e53d xslt-lab: chart 0.4.1 (Prometheus errors dashboard) + direct chart repo URL
The blog subdomain now only 301-redirects to xsltplayground.com/blog after
the SEO migration; point the Helm repo at the destination directly.
2026-07-25 07:32:41 +00:00
claude-code 08a208dec4 obs: drop apiserver/etcd histogram buckets tambien en kubelet/controller/scheduler
En microk8s el binario monolitico (kubelite) expone apiserver_*/etcd_* por los
endpoints de kubelet/kube-controller-manager/kube-scheduler, no por el del
apiserver. El drop solo estaba en el SM apiserver -> no filtraba nada (364k
series). job=kubelet aportaba 35k+37k de esos buckets.
2026-07-24 14:23:44 +00:00
claude-code b305552913 obs: Prometheus limit 2560Mi->4Gi (OOM 22-jul); n8n: add requests/limits
Prometheus superaba 2560Mi en picos (WAL replay/compaction tras reinicio de
cluster) -> OOMKilled 2x. n8n no declaraba resources y era candidato a OOM-kill
bajo presion de memoria del nodo.
2026-07-24 10:44:33 +00:00
claude-code 2afe9b70d2 perf(observability): fijar Prometheus a craon (laphemot3) para descargar k8s01
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011mSH96vrGgdaxj5AKuEUAq
2026-07-22 20:29:39 +00:00
claude-code 4fc37ba0d5 fix(observability): subir limite Prometheus 1500Mi->2560Mi (OOM en replay WAL)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011mSH96vrGgdaxj5AKuEUAq
2026-07-22 20:24:10 +00:00
claude-code 9b993f0642 perf(observability): reducir RAM de Prometheus
- drop de etcd_* y workqueue_* buckets en el job apiserver (en microk8s
  llegan via apiserver, no via kubeEtcd que no tiene target) -> ~90k series menos
- retention 10d -> 5d
- anadir requests/limits (700Mi/1500Mi) para acotar el uso

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011mSH96vrGgdaxj5AKuEUAq
2026-07-22 20:15:45 +00:00
claude-code 9321c6e4e8 olallalab/oligo-tools: imagen -> :20260705-2 (optimización perf, PR #2)
Lookup O(1) + sin pd.concat cuadrático. Secuencias largas de ~1s a ms.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0152b5oYwKsQrzKPyTziHgqG
2026-07-05 11:13:35 +00:00
claude-code 3248270e5e olallalab/oligo-tools: imagen -> GHCR con los fixes (PR #1)
- image: ghcr.io/alexandrev/oligo-tools:20260705 (antes Docker Hub :20231223)
- imagePullSecrets: ghcr-pull-secret (creado en el namespace)

La nueva imagen incluye los fixes de seguridad/perf/bugs mergeados en main.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0152b5oYwKsQrzKPyTziHgqG
2026-07-05 10:03:59 +00:00
claude-code 09dc4b6746 olallalab/oligo-tools: fix probes, resources, replicas y DNS target
- startupProbe: tcpSocket period=240s (bloqueaba readiness hasta 4min) -> httpGet /:8080 period=5s failureThreshold=12
- liveness/readiness: timeoutSeconds 1 (defecto, falsos positivos) -> 5s/3s + failureThreshold 3
- resources: add requests 100m/128Mi (QoS BestEffort -> Burstable)
- replicas 1 -> 2 (HA, spec original)
- ingress .cloud: external-dns target 192.168.1.10 (NPM) para pasar por proxy con cert valido

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0152b5oYwKsQrzKPyTziHgqG
2026-07-05 09:27:05 +00:00
claude-code 6d37f53774 xslt-lab: bump chart to 0.4.0 (dashboard CM in observability ns) 2026-06-17 16:48:56 +02:00
claude-code 29478748cf xslt-lab: bump chart to 0.3.0 (fix ServiceMonitor target selection) 2026-06-17 15:50:10 +02:00
claude-code 705635b001 xslt-lab: bump chart to 0.2.0 (Prometheus metrics + Grafana dashboard) 2026-06-17 15:34:10 +02:00
alexandrev-tibco a10e2e174c feat(observability): grant GrafanaAdmin to Authentik admins group
Members of the 'admins' group in Authentik get GrafanaAdmin role.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 19:34:44 +02:00
alexandrev-tibco 8d023cd1be feat(observability): add Authentik OIDC login to Grafana
Configures generic_oauth in Grafana to authenticate via Authentik.
Client secret loaded from grafana-oidc K8s secret.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-13 17:17:57 +02:00
alexandrev-tibco 539df114a0 feat: add Radar K8s dashboard with Authentik OIDC 2026-05-12 15:40:34 +02:00
alexandrev-tibco 88fcce4962 feat(observability): add Alertmanager email alerts + disk usage PrometheusRules
- Configure Alertmanager SMTP via Mailcow (192.168.1.30:587)
- Route critical/warning alerts to alexandre.vazquez@gmail.com
- Add DiskUsageHigh (< 20% free), DiskUsageCritical (< 10%), DiskWillFillIn4Hours rules

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-11 11:53:30 +02:00
claude-code be51b842ff fix: add kyverno ignoreDifferences for webhook caBundles and SkipDryRunOnMissingResource 2026-04-29 15:25:24 +02:00
claude-code 312245ad87 fix: use existingClaim for calibre/portainer PVCs; fix kyverno chart version to 3.7.2 2026-04-29 15:05:09 +02:00
claude-code 44ee16960b feat: add calibre, portainer, egress-gateway, trivy-system, kyverno, olallalab 2026-04-29 15:02:13 +02:00
claude-code 86feb58574 feat: add observability stack to gitops (kube-prom-stack, loki, helm-dashboard, blackbox-exporter) 2026-04-29 13:33:35 +02:00
claude-code befea76e7e fix: add ignoreDifferences for n8n env duplicates; keep xslt-lab firebase disabled 2026-04-29 13:07:27 +02:00
claude-code 2b8775eb18 fix: add firebase.enabled=false to xslt-lab values 2026-04-29 13:04:16 +02:00
claude-code 24e9a653f3 feat: add GitOps structure for kubernetes-dashboard, n8n, xslt-lab
- apps/kubernetes-dashboard: raw manifests (namespace, rbac, deployment, service, ingress)
- apps/n8n: Helm values referencing existing n8n-postgresql secret (no password in git)
- apps/xslt-lab: Helm values for xslt-playground chart
- argocd/applications: ArgoCD Application CRDs for all three apps
2026-04-29 12:58:28 +02:00
Flux 666f430509 Add Flux sync manifests 2025-09-23 10:01:53 +02:00
Flux ba249c15d9 Add Flux v2.6.4 component manifests 2025-09-23 10:01:47 +02:00
alexandrev dba4dfbb83 Init 2025-09-23 09:59:25 +02:00