Chapter 22. Organizing Your Application
Throughout this book we have described various components of an application built on top of Kubernetes. We have described how to wrap programs up as containers, place those containers in Pods, replicate those Pods with ReplicaSets, and roll them out with Deployments. We have even described how to deploy stateful and real-world applications that collect these objects into a single distributed system. But we have not covered how to actually work with such an application in a practical way. How can you lay out, share, manage, and update the various configurations that make up your application? That is the topic of this chapter.
Principles to Guide Us
Before digging into the concrete details of how to structure your application, it’s worth considering the goals that drive this structure. Obviously, reliability and agility are the general goals of developing a cloud native application in Kubernetes, but how does this relate to how you design your application’s maintenance and deployment? The following sections describe three principles that can guide you in designing a structure that best suits these goals. The principles are:
-
Treat filesystems as the source of truth
-
Conduct code review to ensure the quality of changes
-
Use feature flags to stage rollouts and rollbacks
Filesystems as the Source of Truth
When you first begin to explore Kubernetes, as we did in the beginning of this book, you generally interact with it imperatively. You ...
Get Kubernetes: Up and Running, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.