Currently I have an app (myapp
) that deploys as a Java web app running on top of a "raw" (Ubuntu) VM. In production there are essentially 5 - 10 VMs running at any given time, all load balanced behind an nginx load balancer. Each VM is managed by Chef, which injects the correct env vars and provides the app with runtime arguments that make sense for production. So again: load balancing via nginx and configuration via Chef.
I am now interested in containerizing my future workloads, and porting this app over to Docker/Kubernetes. I'm trying to see what features Kubernetes offers that could replace my app's dependency on nginx and Chef.
So my concerns:
- Does Kube-Proxy (or any other Kubernetes tools) provide subdomains or otherwise-loadbalanced URLs that could load balance to any number of pod replicas. In other words, if I "push" my newly-containerized app/image to Kubernetes API, is there a way for Kubernetes to make image available as, say, 10 pod replicas all load balanced behind
myapp.example.com
? If not what integration between Kubernetes and networking software (DNS/DHCP) is available? - Does Kubernetes (say, perhas via
etc
?) offer any sort of key-value basec configuration? It would be nice to send a command to Kubernetes API and give it labels likemyapp:nonprod
ormyapp:prod
and have Kubernetes "inject" the correct KV pairs into the running containers. For instance perhaps in the "nonprod" environment, the app connects to a MySQL database namedmydb-nonprod.example.com
, but in prod it connects to an RDS cluster. Or something. - Does Kubernetes offer service registry like features that could replace Consul/ZooKeeper?