5 ms·
That's the thing, we use k8s in production and I just used docker-compose for testing in my device environment for the sake of simplicity. Though over time it b
by pacavaca 9y ago
That's the thing, we use k8s in production and I just used docker-compose for testing in my device environment for the sake of simplicity. Though over time it became not so simple to maintain two parallel config as the system grown up.
- sandGorgon 9y agothat's one of the reason we decided to jump on swarm. And seeing how Swarm has matured and added features, we are very happy. Azure also comes with a Swarm-mode deployment template which is pretty great (https://github.com/Azure/acs-engine/blob/master/docs/swarmmode.md https://github.com/Azure/acs-engine/blob/master/docs/swarmmo...). However, setting up and running Swarm has been a pleasure.
- StavrosK 9y agoThis is very interesting. I've been looking for middle ground between Dokku and Kubernetes, I'll give swarm a try. Does it handle ingress at all? vhosts, TLS certificates, etc?
- sz4kerto 9y agoIf you're paying for EE, then UCP can do a lot for you. We're using the HRM heavily, and it's very handy.
- StavrosK 9y agoI don't know what any of those mean :(
- zenlikethat 9y agoEE = Enterprise Edition UCP = Universal Control Plane (web app to manage clusters and containers) HRM = Host routing mesh (I think). If I recall correctly, it’s used to control ingress to the cluster via virtual host routing, etc. They are paid Docker Inc. products. I worked for Docker once upon a time so I’m happy to hear there are happy customers :)
- StavrosK 9y agoAh I see, thank you for clarifying! I'm not familiar with the products, but I'll research them.
- sandGorgon 9y agoDocker has added ingress routing in 17.06 that works at a lower level than HTTP Routing Mesh. You should try that now. Other than that, how have you found EE ? We have considered paying for it, but after seeing Docker Cloud at 15$ per node per month, we are considering switching to it.
- sandGorgon 9y agoingress is the most beautiful part of Swarm - it is built in. however, it does not do termination. You should trivially include a haproxy/nginx pod/service/vm to do the termination for you. One of the cool new infrastructure features is Docker Cloud - which allows you to "bring your own nodes" for 15$/node/month and setup Swarm. https://docs.docker.com/docker-cloud/cloud-swarm/using-swarm-mode/#already-a-docker-cloud-user https://docs.docker.com/docker-cloud/cloud-swarm/using-swarm...
- amq 9y agoI'm using https://github.com/containous/traefik https://github.com/containous/traefik with Swarm for termination, Let's Encrypt and routing with success. Configuration is handled with service labels.
- lugg 9y ago+1. Traefik is leaps and bounds more ergonomic than haproxy etc. I believe it benched a bit worse than the comp but for most cases you're not going to run into issues.
- StavrosK 9y agoThanks for the shoutout. Would you happen to have a writeup on how to do that, or a few lines on whether it's Swarm-aware somehow? I guess it can't be too hard to figure out, but if there's something that will speed that up, that's better.
- sandGorgon 9y agoNo - you don't need it to be swarm aware at all. All you need to do is create a docker service out if traefik/nginx/haproxy/whatever and bind the ports of the service to type "ingress". From then on, all traffic is internal - and you deal with it normally from one docker service to another.
- StavrosK 9y ago
- linkmotif 9y agoHelm makes this easy. It’s great, just use the templating features and not the package management stuff.
- shaftoe 9y agoWe found the same thing after the package management stuff caused issues in prod. We rolled our own go program that just does go tpl substitution in yaml with overrides like helm. Works on charts out of the box, but instead of talking to a service, it outputs a yaml manifest ready to kubectl apply. We've thought about open sourcing it. It took us literally a day to put together and had worked without flaw for 8 months in production.
- linkmotif 9y agoCool! I just don't use the package management stuff. My workflow also has local manifest template rendering, but I use helm-template[0]. My chart is just a local directory, not a package or anything. Then, to release: * Render the chart and run it through kube-cloud-build[1] to make sure my containers are all built before I deploy: `helm template /path/to/chart | kube-cloud-build -r repo` * Deploy with helm: `helm upgrade RELEASE_NAME /path/to/chart` Has been working really well for me. [0] https://github.com/technosophos/helm-template https://github.com/technosophos/helm-template [1] https://github.com/dminkovsky/kube-cloud-build https://github.com/dminkovsky/kube-cloud-build