On Github mmcc / bluster-talk
Adventures with dead simple cluster management
Just to get a few things straight
It's made our development life a lot easier
We're holding out for bigger and better things
(Tectonic)
Let's go ahead and start talking about how we started using CoreOS and what led us to building Bluster in the first placeIncredibly easy to spin up / tear down a quick test cluster.
Didn't need to do it all up front, but we wanted the option
Needing to configuration per provider was fine
But it all needed to be human readable
We didn't require anything crazy in terms of auto scaling
We didn't require anything crazy for auto scaling, but we did need to be able to easily manually spin up new instances. When we did bring up those new instances, we wanted to be able to use the same configuration as the other machines and just specify the current CoreOS image.Wanted a cluster per environment
Might seem like a CoreOS anti-pattern, but we were the internal stepping stone.Prepending FLEETCTL_TUNNEL gets old fast
Once we had multiple tunnels set up, needed to be able to quickly and easily switch between them.Didn't mind using Etcd and Fleet directly
Lastly...Specifying everything in the command itself was ok for about...never. Almost immediately switched to exclusively using --config.
Generated a custom cloud config for us based on the config used.
{ "vpc": "vpc-1234abcd", "securityGroup": "sg-1234abcd", "quay": "your-cool-quay-token", "iam": "paperboy-qa", "key": "some-keyfile", "advertised": "private", "current_machines": [ "10.96.3.110", "10.96.4.184", "10.96.0.238" ], "complimentary_services": [ "datadog.service", "redis.service", "smoke-qa.service", "sumologic-qa.service", "paperboy-qa-presence@.service" ], "primary_services": { "paperboy-qa@.service": 3 }, "discovery": "https://discovery.etcd.io/80af233780f9a5c66b772ccdb4772f7b" }
$ bluster add-instance -c ops/foobar.json -n 1 talk-example ami-d2033bbaIn the interest of time, I didn't record the terminal output. I think you can use your imagination on this one.
Tunnels into the cluster and runs etcd commands.
Seriously. That's it. That's all we needed and it's been *immensely* useful.TL;DR: Prepends FLEETCTL_TUNNEL to commands
Literally prepends FLEETCTL_TUNNEL to commands
¯\_(ツ)_/¯
Basically stops and starts service files (but waits for previous to start again)
We also rely on etcd for watching deployment and triggering registering / deregistering from load balancers.Generally feel more comfortable manually deploying
Talk about small scope of deploys, canary deploys, rollbacks, etc.Submits complimentary services, starts them, then deploys primary services
{ "complimentary_services": [ "datadog.service", "redis.service", "smoke-qa.service", "sumologic-qa.service" ], "primary_services": { "paperboy-qa@.service": 3 } }
But when it doesn't, it's a bit of a bluster
Get it?If you're interested in this, get in touch.
Questions? Comments? Ping me!