[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.