jmound / dhh-system-engineering

Delivery Hero Group System Engineering

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Delivery Hero System Engineering

This repository contains Terraform modules, Kubernetes configuration and other best practice examples to give a head start when building a new environment on AWS or Kubernetes.

The intended audience is teams or projects that are starting with AWS or Kubernetes and want to begin with a good design.

Pull requests welcome!

Guides

  • terraform-kubernetes-getting-started: A guide to getting started with Kubernetes on AWS using Terraform. Includes AWS and Kubernetes configuration and running an example application.

Terraform modules

Examples

  • base: A good starting point with a VPC and related resources, SSH bastion, some default security groups and S3 bucket for Terraform state.
  • kubernetes: Same as base example but with shared kubernetes resources and 2 kubernetes clusters added.

Kubernetes Examples

Other useful tools

Keymaker

Lightweight SSH key management on AWS EC2. Add public SSH keys to IAM users and then they can log into EC2 hosts.

https://github.com/kislyuk/keymaker

Elasticsearch on Kubernetes

https://github.com/pires/kubernetes-elasticsearch-cluster

Invokust

Run Locust load tests on AWS Lambda.

https://github.com/FutureSharks/invokust

Helm

Helm is a powerful tool for creating templates for Kubernetes resources, creating reproducible builds or for packaging and installing predefined configurations for services.

Dos and Don'ts

  • Do make pull requests to this repository.
  • Don't bother using a NAT gateway unless you specifically need a fixed source IP address for outgoing traffic.
  • Do enable MFA for your IAM accounts.
  • Do store your Terraform state in a bucket.
  • Do use an internal Route53 zone to hold records for RDS endpoints, ES endpoints, Elasticache endpoints etc.
  • Do terminate SSL on ELBs and forward as HTTP in VPC. This means you never need to deal with SSL or certificates on instances.
  • Do use a SSH bastion for all SSH connections and restrict SSH access by IP ranges.
  • Consider registering an external domain in Route53. It only costs a few dollars and you can have a free SSL certificate. Then use this domain and certificate for all external ELBs.
  • Don't have instances that are not part of an Austoscaling Group.
  • Do write Terraform modules to reduce duplicated code.

About

Delivery Hero Group System Engineering

License:GNU General Public License v3.0


Languages

Language:HCL 73.6%Language:Go 6.8%Language:JavaScript 6.1%Language:Shell 6.0%Language:Python 5.8%Language:Smarty 1.7%