PaaSTA is a highly-available, distributed system for building, deploying, and running services using containers and Kubernetes. PaaSTA has been running production services at Yelp since 2016. It was originally designed to run on top of Apache Mesos but has subsequently been updated to use Kubernetes. Over time the features and functionality that PaaSTA provides have increased but the principal design remains the same. PaaSTA aims to take a declarative description of the services that teams need to run and then ensures that those services are deployed safely, efficiently, and in a manner that is easy for the teams to maintain. Rather than managing Kubernetes YAML files, PaaSTA provides a simplified schema to describe your service and in addition to configuring Kubernetes it can also configure other infrastructure tools to provide monitoring, logging, cost management etc.
Features
- Docker for code delivery and containment
- Kubernetes for code execution and scheduling (runs Docker containers)
- Tron for running things on a timer (nightly batches)
- We use Karpenter to autoscale pools of EC2 instances to run PaaSTA. Formerly we used our own autoscaler Clusterman
- We bake AMIs using Packer
- We collect logs from services and send them via Monk to Kafka
- Documentation available
- We use StatefulSets to run a few stateful PaaSTA services