Thursday the 27th of June, 2019
Multi-Tenant*
Platform on EKS
info@container-solutions.com
container-solutions.com
Ian Crosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Agenda
■ Kubernetes Background
■ Introduce Project
■ Architecture
■ Multi Tenancy
■ AWS Integrations
■ Benefits
■ Challenges
■ Life Changing Conclusion
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Fast / Customer-Centric
SafeandReliable
LIMITS SPEED,
SAFETY AND
COMPLEXITY
ACHIEVE
QUALITY
THROUGH
SPEED
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Microservices
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Containers
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Virtual Machine vs Container
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Orchestration
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Container Orchestrators
■ Docker Swarm from Docker
■ Mesos from Apache
■ DC/OS from Mesosphere
■ Nomad from Hashicorp
■ CCP from Cisco
■ OpenShift by Red Hat
■ Fleet by CoreOS (Deprecated)
■ ...
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Kubernetes
Kubernetes
● Built by Google (Based on Borg)
● Donated to CNCF
● Fully Open Source
● Healthy and Robust Community and Ecosystem
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Flavors of Kubernetes
Self Hosted
■ Kubespray
■ Kubeadm
■ K3s
Managed
■ EKS (Amazon)
■ GKE (Google)
■ AKS (Microsoft)
■ IKS (IBM)
PaaS
■ OpenShift
■ Digital Ocean
■ Giant Swarm
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Mandate: Migration to EKS
■ Online Platform for Factories
■ Software as a Service
■ Small/medium applications
■ Low traffic volume
■ Lots of Clients (and customization)
■ Complete Environment per Customer
■ Entirely AWS Based
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
vs.
■ Proven Solution
■ Strong Integration
■ Uncertain Future
■ Vendor Specific
■ Cloud Agnostic
■ More Features
■ Supporting Tooling
■ Cost (?)
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Migration Path
■ Containerize Applications
■ Define Kubernetes Configuration
■ Integrate with AWS Services
■ Incremental Migration
■ Invisible to Dev Team
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
New Architecture
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Multitenancy
... architecture in which a single instance
of software runs on a server and serves
multiple tenants ... designed to provide
every tenant a dedicated share of the
instance - including its data, configuration
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Why do we want Multitenancy?
■ Efficiency
■ Simplicity
■ Cost
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
The Risks of Multitenancy
■ Security
■ “Noisy Neighbor”
■ Single Point of Failure
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Multi
Instance
Multi
Tenant
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Multitenancy on Kubernetes
Leverage native Kubernetes Features
■ Namespaces
■ Network Policies
■ Resource Limits
■ RBAC
■ Ingress
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
YAML
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Namespace: Client A Namespace: Client B
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Namespace A Namespace B
Worker Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Namespace A Namespace B
Worker Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Kubernetes Cluster
Namespace A Namespace B
Network Policy
Worker Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Namespace A Namespace B
Network Policy
Worker
Worker
Worker
Worker
Worker
Worker
Worker Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Limit RangeLimit Range
Namespace A Namespace B
Network Policy
Worker
Worker
Worker
Worker
Worker
Worker
Worker Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Resource Limits
Namespace: Client A
Resource Limits
Namespace: Client B
Network Policy
Client A
Ingress
Controller
Worker
Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
EKS Cluster
Resource Limits
Namespace: Client A
Resource Limits
Namespace: Client B
Network Policy
Client A
Ingress
Controller
Worker
Worker
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Kubernetes Cluster
Resource LimitsResource Limits
Namespace A Namespace B
App 1 App 2
Resource LimitsResource Limits
Namespace C Namespace D
App 3 App 4
Resource LimitsResource Limits
Namespace E Namespace F
App 5 App 6
Resource LimitsResource Limits
Namespace G Namespace H
App 7 App 8
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Multitenant-ish
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
AWS Integrations
ALB Ingress Controller
■ Dynamically spins up Application Load Balancer
■ Built-in Health Checks
■ TLS / Cert Management
■ Subnet and VPN integration
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
https://aws.amazon.com/blogs/op
ensource/kubernetes-ingress-aw
s-alb-ingress-controller/
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
AWS Integrations
External DNS
■ Integrates with Route53
■ Dynamically control DNS records
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
AWS Integrations
CloudWatch
■ Integration with Kubernetes Cluster
■ Application and Platform Metrics
■ Not ideal (yet)
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
AWS Integrations
Databases (RDS and Elasticache)
■ Don’t manage if you don’t have to
■ Create an abstraction layer
Amazon
Elasticache
Amazon
RDS
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Benefits
■ Lower Costs
■ Simpler Setup
■ Easier Client Onboarding
■ Poised for Growth
■ (Less) Vendor Lock-In
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Challenges
■ Load Balancing / Ingress
■ Tuning Resource Requests/Limits
■ Application Updates
■ Cluster Size
■ EKS new-ness
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Was it all Worth it?
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
container-solutions.com info@container-solutions.com Multi-Tenancy with Kubernetes @IanDCrosby
Was it Worth it?
■ Large investment with little *visible* benefit
■ Building for Scale
■ Cost savings + Potential
■ Ready for Further Improvements
Thank You
Questions?
Thanks to unsplash.com for all the pics

Multitenancy on EKS