Uswitch

Uswitch

41 Followers
Compare and switch gas and electricity suppliers, also compare broadband deals, mobile phone deals, car & home insurance ... more
@uSwitchEng
uswitch.com
The Cooperage, 5 Coo...

Decisions 3

Joseph Irving

DevOps Engineer at uSwitch

At uSwitch we use Vault to generate short lived database credentials for our applications running in Kubernetes. We wanted to move from an environment where we had 100 dbs with a variety of static passwords being shared around to a place where each pod would have credentials that only last for its lifetime.

We chose vault because:

  • It had built in Kubernetes support so we could use service accounts to permission which pods could access which database.

  • A terraform provider so that we could configure both our RDS instances and their vault configuration in one place.

  • A variety of database providers including MySQL/PostgreSQL (our most common dbs).

  • A good api/Go -sdk so that we could build tooling around it to simplify development worfklow.

  • It had other features we would utilise such as PKI

8 10.2K

Joseph Irving

DevOps Engineer at uSwitch

At uSwitch we wanted a way to load balance between our multiple Kubernetes clusters in AWS to give us added redundancy. We already had ingresses defined for all our applications so we wanted to build on top of that, instead of creating a new system that would require our various teams to change code/config etc.

Envoy seemed to tick a lot of boxes:

  • Loadbalancing capabilities right out of the box: health checks, circuit breaking, retries etc.
  • Tracing and prometheus metrics support
  • Lightweight
  • Good community support

This was all good but what really sold us was the api that supported dynamic configuration. This would allow us to dynamically configure envoy to route to ingresses and clusters as they were created or destroyed.

To do this we built a tool called Yggdrasil using their Go sdk. Yggdrasil effectively just creates envoy configuration from Kubernetes ingress objects, so you point Yggdrasil at your kube clusters, it generates config from the ingresses and then envoy can loadbalance between your clusters for you. This is all done dynamically so as soon as new ingress is created the envoy nodes get updated with the new config. Importantly this all worked with what we already had, no need to create new config for every application, we just put this on top of it.

7 16.8K

Joseph Irving

DevOps Engineer at uSwitch

We recently implemented Thanos alongside Prometheus into our Kubernetes clusters, we had previously used a variety of different metrics systems and we wanted to make life simpler for everyone by just picking one.

Prometheus seemed like an obvious choice due to its powerful querying language, native Kubernetes support and great community. However we found it somewhat lacking when it came to being highly available, something that would be very important if we wanted this to be the single source of all our metrics.

Thanos came along and solved a lot of these problems. It allowed us to run multiple Prometheis without duplicating metrics, query multiple Prometheus clusters at once, and easily back up data and then query it. Now we have a single place to go if you want to view metrics across all our clusters, with many layers of redundancy to make sure this monitoring solution is as reliable and resilient as we could reasonably make it.

If you're interested in a bit more detail feel free to check out the blog I wrote on the subject that's linked.

5 39.9K

Followers 41

luca6247
Mario Iordanov
bram darras
Saurav Singh
Abanoub Essam
Shamsunnahar Afifa
Noura Au
태화 정
Thuy Tran
Oyede Oluwafunbi
Elyor Latipov
Sajjad vafaie
Ali Cicek
alilah
Muhammet Dilek
Mike Mooney
Brendan Weinstein
VANNINA MI
Angga Pratama
Jamie Allen
akarsh3007
Jignesh Suvariya
José Daniel Pereira
Yosef Benny Widyokarsono
Ahmed Atef
Brendon Boshell
Chris Howe-Jones