Ken Muse
The Magic of Scaling and Auto-Scaling
Scaling systems is a process that is often counter-intuitive. It’s not just about adding more resources. It’s about understanding the bottlenecks and how to overcome them. After years spent troubleshooting highly scaled systems, I’ve learned a few things that can make the journey easier.

Read this article

Strategies for Upgrading ARC
What are the best practices best practices for upgrading your ARC cluster? Want to know whether you can safely run without taking the latest releases? In this post, we’ll explore the answers to both of these questions.

Read this article

Building Base Images for ARC

Building Base Images for ARC

If you’re using Actions Runner Controller, the provided base image may not be enough. In fact, it’s important to build your own to ensure that you have all the dependencies you need for your workflows.

Read this article

Building GitHub Runner Images With an Action Archive Cache
Minimizing network activity improves your build times, speeds up builds, and reduces costs. With ARC, you rely on multiple Actions steps in your workflow. What if you could avoid needing to download your most frequently used Actions? This post walks you through creating images with an Actions archive cache to eliminate those downloads.

Read this article

Building GitHub Actions Runner Images With A Tool Cache
If you’re going to build custom images for ARC or standalone VM runners, then you probably want to take some time to preload it with the tools that matter to your builds. If you want that process to work well for the GitHub-provided tools and actions/setup- Actions, then you’ll want to know how to prepopulate the runner’s tool cache.

Read this article

What Is ARC Doing & How Does It Interact With Kubernetes?
Understanding ARC begins with understanding what it does (and does not do) to create runners on Kubernetes. The process is surprisingly straight-forward, and understanding it is key to mastering ARC.

Read this article

The New DevContainer initializeCommand
The world of dev containers is constantly changing. Sometimes, even with community-driven specifications, there is a bit of room for interpretation. The initializeCommand lifecycle script is a great example of this, and the specification has been updated to align with the implementations. Learn how this affects your dev containers (and why your scripts should always be idempotent).

Read this article

Getting User Input When Starting a Dev Container
Sometimes you just need a little human interaction. And sometimes you need that to happen when you’re starting up a dev container so you can configure the environment. Thankfully, there is a way to get user input that works with most of the dev container implementations.

Read this article

Mounting Files as Volumes

Mounting Files as Volumes

Part of mastering Kubernetes or containers is understanding how they work and how they interact with the host system. You’ve probably seen how to mount drives or folders into a containerized system, but there is another approach – mounting a file like a drive. This post will explore how to do this using a loop device in Linux.

Read this article

Understanding Container Image Layers
Working with containers, one concept that seems to always confuse developers and administrators is layers. Despite the elegance and simplicity of the design, they are still a black box to most teams. In this post, I’ll explain how they work conceptually and the basis of their implementation.

Read this article