EastCode meetup: https://www.meetup.com/eastcode-sessions/events/250451412/
Kubernetes is the leading technology in container orchestration space. During this talk, we will discuss how is Kubernetes used in ZOOM International platform and why it was chosen in fist place.
After this short introduction, we will demonstrate how to deploy Grafana and Prometheus behind ingress-nginx controller pod in order to use one Elastic Load Balancer (cost savings). Moreover, we will present how to use exposeDNS service which takes care about DNS records in Route53 on AWS to automatically create publicly accessible DNS (url) within few minutes.
Technologies: Kubernetes, Helm, Terraform, Prometheus, Grafana, nginx, AWS: EC2, Route 53, EBS, ELB
5. Cloud native - the challenge
• We need to support both on premise and cloud
deployments
• With the same code
• We need to scale down to single machine/node
• Do disaster recovery for customers with 2 DCs
• Handle big customers with tens of servers & private clouds
• Support our own big cloud offering
6. Why Kubernetes?
• Automation & standardization
• Infrastructure as a Code, Immutable deployments
• Standardized service management
o Both stateless and stateful apps
• Service discovery, load balancing, auto-scaling
• Low memory footprint
• Good tweakability - (anti)affinity, memory + cpu limits
• Custom networking
• De-facto container orchestration standard
7. Helm
• Package manager for Kubernetes
• yum for Kubernetes
• Helm Chart (deployment descriptor)
• Provides reasonable default setup of components
• Hides internal complexity from end user
• Handles dependencies between charts
• Many production-ready charts freely available
8. Prometheus
• Time series database (operational)
• Pull based
• On disk: 1.3B per series sample
• Down/Up scales extremely well
• One server can handle 100s of thousands samples per second
• 1st class citizen in Kubernetes
• Kubernetes exposes metrics in Prometheus format
• Prometheus has service discovery from K8s
• Many integrations (Postgres, Rabbit, Apache, AWS...)
10. Kops
• Kubernetes operations
• Makes easy HA K8s deployments in AWS
• Makes possible to easily modify running cluster
• Add new masters & workers
• Exchange keys
• Update cluster
• Creates resources (EC2s, security groups, ELB...)
• Generates Terraform files as a middle step
11. Terraform
• This step is not mandatory for all deployments
• Used for creation of infrastructure, which cannot be created by Kops
• Database servers (RDS)
• Collaboration with existing non-containerized infrastructure
o In transition period to containers
o Kops tf variables used in legacy deployments