(Google now has a L3 internal load balancer, but not a L7 LB. It's fair to say that this will be made much easier this year.)
you could try linkerd. It is built with precisely this usecase in mind
Also, it was not just a question of number of files. The size of my docker-compose.yml is about 30-40 lines or so.
Helm "charts" are templates that generate Kubernetes manifests. To install a chart, you provide values (for which there are defaults). For example, here [2] is the chart for PostgreSQL. The default values are in values.yaml, and the templates for each manifest are in the templates folder.
Conceptually, this even cleaner than Docker Compose, because there's zero data that isn't specific to your install: Everything else defaults to a pre-defined default.
So in the same way that the official PostgreSQL Docker image is general-purpose, you can define a completely general-purpose chart that can be used by anyone. You customize it by providing overrides.
The only downside is that you still end up with Kubernetes manifests. It's not an abstraction, it's an automation tool.
[1] https://helm.sh
[2] https://github.com/kubernetes/charts/tree/master/stable/post...
You don't need to split your manifests into multiple files. You can use a list:
Edit: Or YAML's "multiple document" syntax: Then you just use "kubectl apply -f myapp.yml" to create or update.Re ingress, I agree that it's probably the weakest point of Kubernetes at this point. It's particularly weak when it comes to internal load balancing. When you have lots of services that should only need to be available internally, you'll want to have an internal ingress; I don't know about AWS, but Google Cloud Platform's internal load balancer doesn't support pointing at Kubernetes [1]. I haven't found a better option than to run Traefik as a DaemonSet and rely on round-robin DNS (aka poor man's HA).
[1] https://github.com/kubernetes/ingress/issues/112