The presentation discusses production readiness in the context of Kubernetes and cloud-native technologies. It emphasizes the importance of reliability, stability, security, performance, adaptability, and observability in ensuring user satisfaction.
- Production readiness is the state of a system that is fully prepared and capable of running product workloads and providing the level of service and performance required by its users.
- Vanilla Kubernetes provides the basic framework for running and managing container workloads, but production readiness requires more than just putting an application in a container and writing some YAML files.
- There are various options for achieving production readiness, and the choice depends on factors such as the need for in-house skill, the desire for fast deployment, and the willingness to pay for managed solutions.
- Going with the highest abstraction possible and not trying to solve problems that others have already solved is generally recommended.
- Monitoring and observability are crucial for ensuring production readiness and enabling predictive analysis.
- The ultimate goal of production readiness is to make users happy by providing reliable, stable, secure, performant, adaptive, and observable services.
The presenters come from different backgrounds - one works for a company that provides a product for running Kubernetes production-ready, while the other is from a technology consultancy that helps people get their workloads onto the cloud and maintain them. They combine their experiences to provide advice on achieving production readiness.
One might naively think that to deploy a production app on Kubernetes, all one needs is a Kubernetes cluster. Indeed, before going to production, we'll need a Kubernetes cluster, and therefore, we'll need to make a few decisions: on premises or on cloud? Managed or self-hosted? But there is way more to it because our new cluster will almost always require a few additions before being truly production-ready. Even if we choose a state-of-the-art managed cluster from a leading cloud provider, we still need to add something to handle logging and metrics. Supporting Ingress resources or Network Policies can also require extra work; as does managing persistent volumes or inbound traffic when running on premises. Finally, while most of us used commands like "kubectl run" or "kubectl apply" to run our first Kubernetes containers and workloads, going to production requires a few extra tools to tailor our YAML manifests to various environments (e.g. kustomize, Helm, or Carvel), and automate its deployment (e.g. ArgoCD, Flux). The goal of this talk is to give us a production-readiness checklist. Without being exhaustive, this checklist will bring awareness to the gap that exists between Kubernetes "cluster" and "a *production* cluster", and give solid leads about how to bridge that gap.