Getting Started with Docker & Kubernetes on Mac
MacStadium's Orka brings modern, orchestration and containerization solutions Kubernetes and Docker to Mac-specific CI. We understand that most native iOS and macOS developers have likely not had much exposure to these powerful tools, as they have historically not been able to run on Mac. But that has all changed with the introduction of Orka. Now, teams that focus on dev for iOS and macOS have access to this powerful tech.
Docker has emerged as the dominant containerization solution in the software world. It is so popular because it offers coherence between the respective development and production environments for a given project. This means that the same code will run regardless of where it is physically because Docker provides a constant environment across machines in which to run code. Historically, to achieve a similar outcome, teams have used VMs (virtual machines). However, while an excellent choice for many applications, VMs are inherently complex, and thus present a greater technical debt for the average team to overcome. Conversely, Docker containers are relatively simple to manage and require less overhead to run.
Kubernetes is the leading, open-source, orchestration engine for managing multiple containers, such as those that Docker provides. Kubernetes provides a framework to run distributed systems – i.e. those that are bundled up into a series of containers – resiliently. It isn't just for production, though. Kubernetes is an excellent tool for managing containerized code that needs to be run in concert with other containers. In short, it just makes life easier.
Containerization – the practice of isolating code in a known and preservable environment, so as to ensure it will run as intended anywhere it ends up.
Orchestration – the practice of coordinating multiple computational resources for a common high-level purpose, although they may not all be doing the same work, but rather sub-portions of the same whole.
Node – distributed systems work in different ways, but inevitably there is the concept of a series of computational resources that are doing the work, naturally enough these are called “nodes,” “workers,” and sometimes “slaves” as well. In Orka, a node is a single, physical Mac Pro within the greater cluster. Kubernetes then facilitates communication between the various nodes, and further, the various Docker containers housed within a given node.
Image file (*.img) – a configuration file that defines a VM, complete with its own operating system. These are commonly used to re-make a given environment time and again for the sake of consistency during continuous integration (CI).
Orka Docs – Kubernetes Reference is a nice overview of Kubernetes features and functionality. Particularly helpful in sussing out the nuances of using Kubernetes on a Mac.
The Children’s Illustrated Guide to Kubernetes – a fun, easy, informative introduction to guiding principles of Kubernetes.
An Introduction to Kubernetes, by Justin Ellingwood, is a great bet if you’re ready to get started with Kubernetes in earnest, and you are looking for a stepping off point.
The Kubernetes Docs – the ultimate source of truth for all things Kubernetes.