Homelab Kubernetes with Kubespray, Part 5: ECK Stack (Elastic Cloud on Kubernetes)
One-line summary: Deploy the Elastic Stack on a Kubespray cluster using ECK, with a clean namespace layout, storage class choices, and a minimal observability baseline.
Goals
- Install ECK and deploy a small Elastic Stack (Elasticsearch + Kibana + Beats/Agent).
- Define storage, resource requests, and retention that fit a homelab.
- Validate logs and basic dashboards.
Series outline (current)
- Part 1 — Architecture and bootstrap
- Part 2 — Cilium, Istio, and ExternalDNS baseline
- Part 3 — Storage with Rook (Ceph) and Local Path Provisioner
- Part 4 — Tooling: Velero, Hubble UI, Jaeger, Kiali, Tailscale, K9s
- Part 5 — ECK Stack (Elastic Cloud on Kubernetes)
Planned next (optional):
- Monitoring Stack (Prometheus/Grafana)
- GitOps with Argo CD
- Security, backup, and upgrades
Prerequisites
- Parts 1–4 completed (cluster is healthy, Cilium L2LB + Istio ready).
- A default StorageClass or a dedicated class for Elastic data.
- Sufficient disk (Elastic logs grow fast).
- Check the ECK compatibility matrix and align operator + stack versions before you apply.
Sizing and storage choices (small lab baseline)
For a single-node homelab, start conservative and grow only when you see pressure:
- ES node: 2 vCPU, 4-6 Gi memory, 100-200 Gi disk
- Kibana: 1 vCPU, 1-2 Gi memory
- Storage: a stable SSD-backed StorageClass beats a large but slow HDD pool
Rule of thumb:
- 1 day logs from 3-5 hosts often fits in 5-15 Gi
- triple it for safety and for shard overhead



