A Minimal MLOps Path on Kubernetes
You do not need a full Kubeflow farm to serve a model. Train wherever the GPUs are cheapest. Serve as a container with probes, a pinned image, and a version in Git.
The smallest path
- Package inference as a container. One process. A /healthz that actually loads the model.
- Pin the image digest. The model file is either baked in or mounted from object storage with a version prefix.
- Deploy with Helm/Argo like any other API. GPU node pool if you need it; CPU is fine for small models.
- Log request id, model version, and latency. That is your first “ML observability.”
What to skip until you hurt
- A feature store for a single model with a static schema.
- Canary on day one if you cannot even rollback the Deployment.
- A training operator in-cluster because a notebook in CI already works.
Treat the model like config: changing it is a Git commit. If a scientist can swap weights without a review, you do not have MLOps. You have a shared disk.