We sell travel services to more than 10 million customers worldwide in 15 languages across 35 countries, through hundreds of micro-services.
What happens if you challenge the way you deliver your products with a new infrastructure based on Kubernetes?
You’ll have to face classical developing, deploying and monitoring paradigms and bring everything to an entirely different level. It will also have to kept in mind that the business expects continuous delivery of new features without impact on the final customers experience.
In this presentation we will explore our one-year-long journey to move a full business flow from a well-known legacy platform to Kubernetes through a seamless migration.
We’ll dive into the full tech stack, from the services we give to our development teams to the way we provision servers, without forgetting the secret sauce we applied to make it happen.
We will not hide the failures, the problems and the wrong assumptions we made along the way, but we will celebrate lessons learnt and the goal we achieved; allowing us to boost time-to-market and reliability of our systems.
Right Money Management App For Your Financial Goals
Tales from Lastminute.com machine room: our journey towards a full on-premise kubernetes architecture in production (KubeCon Berlin 2017)
1. Tales from Lastminute.com machine room:
our journey towards a full on-premise
kubernetes architecture in production
michele.orsi@lastminute.com
manuel.ranieri@lastminute.com
KubeCon - Berlin, 29-30 March 2017
3. A tech company to the core
Tech department: 300+ people
Applications: ~100
Database: 4 TB of data
Servers: 1400 VMs, 300 physical machines
Locations: Chiasso, Milan, Madrid, London, Bengaluru
7. A lot of issues
● LONG provisioning time
● LACK OF alignment across environments
● LACK OF alignment across applications
● LACK OF awareness about ops
8. A year-long endeavour
● build a new, modern infrastructure
● migrate the search (flight/hotel) product there
... without:
● impacting the business
● throwing away our whole datacenter
12. ● CoreOS, the all-in-one choice
○ Cloudconfig configuration
○ Automatable in a shot
○ Really simple patch management
Engage
13. Our Kubernetes on CoreOS architecture is born
● The stack
○ ETCD
○ FLANNELD
○ DOCKER
● KUBERNETES (Google!)
K8S
DOCKER
FLANNELD
ETCD
CoreOS
Pod
Pod
Pod
Server
14. NODE 2
NODE 1
NODE 2
NODE 1
How to talk with pods
NGINX
NGINX
Pod
Pod
Pod
Pod
Pod
np
np
np
Pod
Pod
Pod
Proxy
np
np
Pod
Pod
Pod
np
Proxy
Proxy
Proxy
F5 F5
tcp http
NodePort Ingress
15. In the name of service
- host: awesomeservice.prd.mykubecluster.intra
http:
paths:
- path: /
backend:
serviceName: awesomeservice
servicePort: 8081
awesomeservice-ingress.yaml
16. In the name of service
*.[prd|qa|dev].mykubecluster.intra. IN CNAME kubef5ingress
17. The return of NodePort
np
np
Pod
Pod
Pod
np Proxy
NODE n
F5 TLS TLS
TLS
tcp
TLS
26. The final architecture (so far…)
K8S
DOCKER
FLANNELD
ETCD
Ubuntu
Pod
Pod
Pod
F5
OUTSIDE
KUBERNETES
INSIDE KUBERNETES:
3 different environments
7 MASTERS
2 REGISTRYs
+ 70 PHYSICAL NODES
+ 47 ETCDs
+ 7 DNS
+ 140 Namespaces
+ 1300 PODs
ingress
27. Our infrastructure and our architecture
https://www.pexels.com/photo/colorful-toothed-wheels-171198/
28. Our core axioms
● same architecture across environments
● a common framework to align software
● centralized monitoring/logging, with alerts
● zero downtime deployment
● automation everywhere
30. Kubernetes: our architecture and choices
APP1-PRODUCTION
deployment
replica-set
app1-production.prd.mykubecluster.intra
secret configmap
POD-3POD-2POD-1
production
31. "To ingress or not to ingress? .."
NODE 1
NODE 2
NODE 3
● easier DNS management
● customizable proxy server
● 3rd party tool
● requires external sync
● all requests go through it
● reload risks
F5
NGINX
NGINX
41. ● 20K req/sec in the new cluster
● 2M metrics/minute flows
● 10 minutes to create a new environment
● whole pipeline runs in 16 minutes
○ 4 minutes to release 100 instances of a new version
Give me the numbers .. again!