[conductor log] : init

NOTE: this article was originally written on 2025-01-07 at harshitpdoshi.online.

Building a Mobile-Friendly Kubernetes Client with Expo and Next.js

As a developer managing infrastructure on Azure Kubernetes Service (AKS), I frequently need to interact with our clusters. We operate two primary environments: a staging/development cluster for testing and experimentation and a production cluster, which powers our live applications.

Often, I need to access logs, monitor resources, or perform quick actions on these clusters. While this is straightforward on a desktop, there have been several instances where I found myself traveling or remote, armed only with my iPhone.

This led me to search for a mobile Kubernetes client that was:

  • Affordable (or free).

  • Efficient in terms of performance.

  • Intuitive and beautifully designed for seamless use on a mobile interface.

To my disappointment, the available options were either outdated and no longer maintained, excessively priced, or fell short in terms of design and usability.

A Personal Goal: Building My Own Kubernetes Client

Frustrated by the lack of good options, I decided to take matters into my own hands and build the client I wished existed. This project also aligns perfectly with a long-standing goal of mine: diving into mobile application development. For years, I’ve been intrigued by the possibilities of the React-Native and Expo ecosystems, which allow developers to create cross-platform apps with a shared codebase.

Thus, I embarked on a journey to create a Kubernetes client that:

  • Works seamlessly on both mobile and web platforms.

  • Provides a clean, intuitive interface for managing clusters.

  • Is built with modern tools and frameworks for easy maintenance and scalability.

Technology Stack: Why Expo and Next.js?

To achieve this, I chose:

  • Expo: for building the mobile app, leveraging React Native’s flexibility while simplifying setup and development workflows.

  • Next.js: for the web version, ensuring server-side rendering, great performance, and a foundation I’m already comfortable with.

This combination allows me to share a significant portion of the codebase between platforms while also taking advantage of each platform's unique strengths.

Progress So Far

It’s been about a week since I started, and I’ve primarily focused on the web application. As someone well-versed in web development, this has given me a head-start and allowed me to:

  • Prototype core features like resource browsing and log retrieval.

  • Build reusable UI components that can later be adapted for mobile.

  • Establish a strong foundation for transitioning to React Native.

What’s Next?

With the web application progressing steadily, I’m excited to transition into mobile development soon. My next steps include:

  • Adapting the UI for mobile using Expo and React Native.

  • Adding offline support for quick cluster checks without reliable internet.

  • Implementing secure authentication for accessing Kubernetes clusters.

This project has been a thrilling opportunity to combine two passions: infrastructure management and exploring mobile app development. I look forward to sharing updates as the journey continues, and I hope this app can someday benefit others who find themselves in similar situations.