Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building a PaaS with CoreOS and etcd

Building a PaaS with CoreOS and etcd

Slides from my CoreOS Fest 2015 talk on our experiences at Yodlr building a SaaS using CoreOS, Docker, and etcd.

Ross Kukulinski

May 13, 2015
Tweet

More Decks by Ross Kukulinski

Other Decks in Technology

Transcript

  1. @RossKukulinski Our Goals • Reduce application complexity • A/B test

    multiple versions of apps • Consistent app from dev → test → staging → prod • Scalable • Fault tolerant • Minimize time spent doing ‘devops’
  2. @RossKukulinski Our Goals • Reduce application complexity • A/B test

    multiple versions of apps • Consistent app from dev → test → staging → prod • Scalable • Fault tolerant • Minimize time spent doing ‘devops’
  3. @RossKukulinski Goals • Reduce application complexity • Run multiple versions

    of the same app • Consistent app from dev → test → staging → prod • Scalable • Fault tolerant • Minimize time spent doing ‘devops’
  4. @RossKukulinski After further deliberation, we’re going big and switching to

    CoreOS/Docker entirely. We feel its the right direction long-term for us and application development in general. - Me, internal memo
 September 2014
  5. @RossKukulinski Service Availability REST API microservice Sidekick Sidekick Pattern: 1.

    Get ip:port of microservice (docker inspect) 2. Health checks (containerized integration tests) 3. Publish service instance details to etcd etcd 1 & 2 3
  6. @RossKukulinski Service Discovery haproxy confd Confd: 1. Query etcd for

    ip:port of upstream services 2. Update configuration from template 3. Reload load balancer process etcd github.com/kelseyhightower/confd 2 & 3 1
  7. @RossKukulinski Dynamic external services DNS & Cloud Load Balancers lb-config

    lb-config: 1. Query etcd for domain/ip:port of internal lbs 2. Update DNS & external load balancers etcd 1 2 github.com/yodlr/rax-lb-config
  8. @RossKukulinski 3. etcd is a database With super important data:

    Protect it! PSA: $private_ipv4 is probably not what you think it is
  9. @RossKukulinski 4. Sometimes you just need a GUI (Docker &

    CoreOS do have awesome CLI tools though)
  10. @RossKukulinski Closing thoughts • Containers are awesome • We <3

    CoreOS • You can get really far with fleet & etcd • Kubernetes is so close to primetime • Remember: etcd is a database, treat it like one