Git Product home page Git Product logo

etcd3-terraform's Introduction

etcd3-terraform

A Terraform recipe for a robust etcd cluster on AWS. This is based on the setup we use internally at Monzo (which you can read more about in our blog post), but is self-contained and does not rely on Monzo's other core infrastructure.

โš ๏ธ Warning
This is an illustration of how we run etcd clusters. This should not be deployed to production without first securing the infrastructure. For example, for ease, all instances have public IP addresses with SSH open to the internet in these manifests, and you probably don't want that for production workloads.

Stack ๐ŸŽฎ

This will create a new VPC and a set of 9 Auto Scaling Groups each running a single CoreOS image. These ASGs are distributed over 3 Availability Zones which you can specify by editing variables.tf, or creating a terraform.tfvars with overrides.

This will also create a Route 53 zone for the domain you pick and bind it to the VPC so its records can be resolved. This domain does not need to be registered. An SRV record suitable for etcd discovery is also created as well as a Lambda function which monitors ASG events and creates A records for each member of the cluster.

An Elastic Load Balancer will be created for clients of the etcd cluster. It fronts all 9 ASGs on port 2379.

How to use ๐Ÿ•น

The file variables.tf declares the Terraform variables required to run this stack. It contains some defaults AWS (Region, AZ, etc). You will be asked to provide an SSH public key to launch the stack. Variables can all be overridden in a terraform.tfvars file.

AWS Limits ๐Ÿ‘ฎ

New AWS accounts have default limits in place which may prevent you from launching this stack. Those we ran into are:

  • EC2 Instances: There is a default limit of 5 instances. This will need to be raised to at least 9.

etcd3-terraform's People

Contributors

obeattie avatar fcvarela avatar jackkleeman avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.