CHAPTER 25 Image Builder Kubernetes is a general-purpose orchestration engine, suitable not only for running applications, but also for building container images. The  Image Builder  pattern explains why it makes sense to build the container images within the cluster and what techniques exist today for creating images within Kubernetes. All the patterns in this book so far have been about operating applications on Kuber‐ netes. We learned how we can develop and prepare our applications to be good cloud-native citizens. But what about  building  the application itself? The classic approach is to build container images outside the cluster, push them to a registry, and refer to them in the Kubernetes Deployment descriptors. However, building within the cluster has several advantages. If the company policies allow, having only one cluster for everything is advantageous. Building and running applications in one place can reduce maintenance costs consid‐ erably. It also simplifies capacity planning and reduces platform resource overhead. Typically, Continuous Integration (CI) systems like Jenkins are used to build images. Building with a CI system is a scheduling problem for efficiently finding free comput‐ ing resources for build jobs. At the heart of Kubernetes is a highly sophisticated scheduler that is a perfect fit for this kind of scheduling challenge. Once we move to Continuous Delivery (CD), where we transition from  building images to  running  containers, if the build happens within the same cluster, both pha‐ ses share the same infrastructure and ease transition. For example, let’s assume that a new security vulnerability is discovered in a base image used for all applications. As soon as your team has fixed this issue, you have to rebuild all the application images that depend on this base image and update your running applications with the new Problem 221