

The case we focus on in this book is a cloud-native or Kubernetes-native application that is fully aware it is running on Kubernetes and leverages Kubernetes APIs and resources to some extent. The same modus operandi as in the case of a COTS applies. Take a bespoke app, something you wrote from scratch, with or without having had Kubernetes as the runtime environment in mind, and run it on Kubernetes. Kubernetes controls the app’s lifecycle-find node to run, pull image, launch container(s), carry out health checks, mount volumes, and so on-and that is that. The app itself is not aware it runs on Kubernetes and usually doesn’t have to be. Take a COTS such as Rocket Chat and run it on Kubernetes. Different types of apps running on KubernetesĪs you can see, there are different styles at your disposal: Figure 1-1 might help you soak that in better.įigure 1-1. So, in a nutshell, this book is about developing genuinely cloud-native applications. Besides, in Chapter 7, we do not really focus too much on operational issues, but mainly look at the development and testing phase. We do not mean running off-the-shelf apps, such as WordPress or Rocket Chat or your favorite enterprise CRM system, oftentimes called commercially available off-the-shelf (COTS) apps. It may, going forward, contain a client in your favorite programming language.īy “programming Kubernetes” in the context of this book, we mean the following: you are about to develop a Kubernetes-native application that directly interacts with the API server, querying the state of resources and/or updating their state. Should you prefer other languages, keep an eye on the kubernetes-client GitHub organization. We believe that the majority of native applications will be Go-based and hence we focus on it in this book. Now, Kubernetes and many related cloud-native technologies, from container runtimes to monitoring such as Prometheus, are written in Go. Also, in order to extend and customize Unix-even if you were to use a language other than C-you would need to at least be able to read C. Why do we focus on programming Kubernetes in Go? Well, an analogy might be useful here: Unix was written in the C programming language, and if you wanted to write applications or tooling for Unix you would default to C. Kubernetes Cookbook by Sébastien Goasguen and Michael Hausenblas (O’Reilly) Managing Kubernetes by Brendan Burns and Craig Tracey (O’Reilly) (O’Reilly)Ĭloud Native DevOps with Kubernetes by John Arundel and Justin Domingus (O’Reilly)

Kubernetes: Up and Running, 2nd Edition by Kelsey Hightower et al. Kubernetes in Action by Marko Lukša (Manning) For Kubernetes, check out one or more of the following books: Kernighan (Addison-Wesley) and Concurrency in Go by Katherine Cox-Buday (O’Reilly). Now is a good time, if any of those assumptions do not apply to you, to train up: for Go, we recommend The Go Programming Language by Alan A. We also assume that you are a Go programmer-that is, you have experience or at least basic familiarity with the Go programming language. Depending on your operating system and other preferences you might choose one (or maybe even more) of the following solutions for running Kubernetes locally: kind, k3d, or Docker Desktop. When developing locally, you have a number of options available. You will spend a fair amount of time developing locally on your laptop or desktop environment that is, the Kubernetes cluster against which you’re developing is local, rather than in the cloud or in your datacenter.
