// the find
learning-cloud-native-go/myapp
🚀 Dockerized Go API application with DB migrations, GitOps and Kubernetes Kustomize based CD
A Go REST API template for a books CRUD app, but the real point is the surrounding infrastructure: distroless production images, Goose migrations, ArgoCD GitOps with Kustomize overlays for dev/stage/prod, and Istio ambient mesh. It's a learning scaffold, not a production application — the domain model (books) is just a vehicle for the toolchain.
The dev/prod image size gap (800MB vs 30MB) is handled properly with multi-stage builds and distroless base images, which is the correct approach and many templates skip this. The Kustomize overlay structure (base + three environment overlays) is clean and maps directly to how you'd actually run this. CloudNativePG for the database cluster with a connection pooler and scheduled backups included is more realistic than most tutorials that just throw a plain Postgres pod in. The fail-fast validation middleware using Go generics is a small but useful pattern — validation errors are collected and returned in one shot rather than one at a time.
It's a toy domain (CRUD on books) dressed up with serious infrastructure, which means the hard parts — auth, multi-tenancy, background jobs, event-driven patterns — are all absent. The GORM CLI code generation adds another layer of abstraction on top of GORM itself; if GORM already generates SQL you don't fully control, generated repositories on top of that doubles the magic and makes debugging harder. The ArgoCD bootstrap assumes you already have a cluster with Istio ambient mesh running, but getting to that starting point is non-trivial and isn't covered — the sample Kind cluster commands are a stub, not a real onboarding path. No secrets management strategy: the `.env` file is committed and there's no Vault, External Secrets Operator, or equivalent shown.