<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Infrastructure on Landry Zetam - Tech Blog</title><link>https://blog.landryzetam.net/categories/infrastructure/</link><description>Recent content in Infrastructure on Landry Zetam - Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sun, 21 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.landryzetam.net/categories/infrastructure/index.xml" rel="self" type="application/rss+xml"/><item><title>GitOps Framework: How the Fako Cluster Repository is Organized</title><link>https://blog.landryzetam.net/posts/gitops-framework/</link><pubDate>Sun, 21 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/gitops-framework/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>The Fako Cluster uses a GitOps approach where &lt;strong>Git is the single source of truth&lt;/strong> for all cluster state. Every deployment, configuration change, and infrastructure update flows through Git commits. FluxCD watches the repository and automatically reconciles the cluster to match the desired state defined in code.&lt;/p>
&lt;p>This post explains the repository structure, the reasoning behind each directory, and how the pieces work together.&lt;/p>
&lt;h2 id="repository-structure">Repository Structure&lt;/h2>
&lt;pre tabindex="0">&lt;code>fako-cluster/
├── apps/ # Application deployments
│ ├── base/ # Base Kustomize configurations
│ └── staging/ # Environment overlay (what actually deploys)
├── clusters/ # Cluster bootstrap and Flux config
│ └── staging/ # Flux Kustomizations that orchestrate everything
├── infrastructure/ # Platform components
│ ├── controllers/ # Operators (Cert-Manager, CloudNative-PG, etc.)
│ └── configs/ # Configuration for controllers
├── monitoring/ # Observability stack
│ ├── controllers/ # Prometheus, Loki, Grafana, etc.
│ └── configs/ # Dashboards, alerting rules
├── scripts/ # Deployment and maintenance scripts
└── notes/ # Documentation and troubleshooting
&lt;/code>&lt;/pre>&lt;h2 id="the-basestaging-pattern">The Base/Staging Pattern&lt;/h2>
&lt;p>The most important concept to understand is the &lt;strong>base/staging pattern&lt;/strong> used throughout the repository.&lt;/p></description></item><item><title>Building an Automated Audio Transcription Pipeline on Kubernetes</title><link>https://blog.landryzetam.net/posts/audio-transcription-pipeline/</link><pubDate>Fri, 12 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/audio-transcription-pipeline/</guid><description>&lt;p>Every day, raw audio recordings land on an SFTP server. By morning, they&amp;rsquo;re compressed, transcribed, and stored as searchable JSON - all without human intervention. Here&amp;rsquo;s how I built this pipeline on my homelab Kubernetes cluster.&lt;/p>
&lt;h2 id="the-problem">The Problem&lt;/h2>
&lt;p>I had a growing collection of audio recordings that needed transcription. Manual processing wasn&amp;rsquo;t sustainable: download files, compress them, run through a transcription service, organize the output. This needed automation.&lt;/p>
&lt;p>The requirements were straightforward:&lt;/p></description></item><item><title>How I Clustered Three Mac Studios for Local AI Processing with GPUStack</title><link>https://blog.landryzetam.net/posts/gpustack-mac-clustering/</link><pubDate>Mon, 11 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/gpustack-mac-clustering/</guid><description>&lt;h2 id="opening-hook">Opening Hook&lt;/h2>
&lt;p>I&amp;rsquo;ve always loved the idea of running powerful AI workloads without relying on expensive cloud GPUs. Recently, I turned that idea into reality by transforming three Mac Studios into a fully functioning local AI cluster using &lt;strong>GPUStack&lt;/strong>. This setup lets me run distributed inference workloads across multiple Macs with Apple Metal acceleration — and it&amp;rsquo;s a lot more affordable and energy-efficient than most people think.&lt;/p>
&lt;blockquote>
&lt;p>&lt;strong>Related:&lt;/strong> See &lt;a href="https://blog.landryzetam.net/posts/mac-ai-cluster/">Mac AI Cluster: From EXO Vision to GPUStack Reality&lt;/a> for the philosophical journey that led to this technical implementation.&lt;/p></description></item><item><title>Building a Local AI Cluster with Mac Hardware: From Vision to Reality</title><link>https://blog.landryzetam.net/posts/mac-ai-cluster/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/mac-ai-cluster/</guid><description>&lt;h2 id="the-mission-that-started-it-all">The Mission That Started It All&lt;/h2>
&lt;blockquote>
&lt;p>&lt;strong>Note:&lt;/strong> This post combines the journeys documented in my &lt;a href="https://blog.landryzetam.net/posts/mac-ai-cluster/">Mac AI Cluster Project&lt;/a> and &lt;a href="https://blog.landryzetam.net/posts/gpustack-mac-clustering/">GPUStack Mac Clustering Tutorial&lt;/a>. For deep technical details, see those project pages.&lt;/p>&lt;/blockquote>
&lt;p>When I first discovered &lt;strong>EXO Labs&lt;/strong>, their mission resonated deeply with me.&lt;/p>
&lt;blockquote>
&lt;p>Humanity is headed toward a world controlled by a handful of companies that will dictate the AI models everyone uses.
The real threat isn&amp;rsquo;t AI destroying us — it&amp;rsquo;s losing sovereignty over our own minds.&lt;/p></description></item><item><title>Powering Open WebUI and Cline with GPUStack: My AI Infrastructure Journey</title><link>https://blog.landryzetam.net/posts/local-ai-open-webui-cline/</link><pubDate>Fri, 08 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/local-ai-open-webui-cline/</guid><description>&lt;p>After building my Mac AI cluster, I needed a way to make it accessible to all my tools. The journey took me through several frameworks before landing on the perfect solution: GPUStack providing an OpenAI-compatible API that seamlessly integrates with everything.&lt;/p>
&lt;h2 id="the-evolution-finding-the-right-framework">The Evolution: Finding the Right Framework&lt;/h2>
&lt;h3 id="the-journey">The Journey&lt;/h3>
&lt;p>My path to the current setup wasn&amp;rsquo;t straightforward:&lt;/p>
&lt;ol>
&lt;li>&lt;strong>MLX Distributed Computing&lt;/strong>: Started here for model training and local inference on Apple Silicon&lt;/li>
&lt;li>&lt;strong>Exo Labs&lt;/strong>: Experimented with this promising framework, but pivoted when the community began a redesign&lt;/li>
&lt;li>&lt;strong>GPUStack&lt;/strong>: The solution that finally clicked - providing OpenAI-compatible endpoints that work with everything&lt;/li>
&lt;/ol>
&lt;h2 id="the-current-architecture">The Current Architecture&lt;/h2>
&lt;p>Here&amp;rsquo;s how my AI infrastructure actually works:&lt;/p></description></item><item><title>From GitHub Notes to Production Blog</title><link>https://blog.landryzetam.net/posts/hugo-blogging/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/hugo-blogging/</guid><description>&lt;h2 id="why-this-guide-exists">Why This Guide Exists&lt;/h2>
&lt;p>I&amp;rsquo;ve been doing a lot of dev work, research and hadn&amp;rsquo;t really thought about sharing the knowledge without having to learn frontend development or maintain complex code. I knew I had a bunch of markdown GitHub notes and thought they could be used as a baseline to catch up on all my lack of documentation. Then I found Hugo.&lt;/p>
&lt;p>This guide covers the entire workflow of creating a Hugo blog, containerizing it, and deploying it to Kubernetes - all without writing a single line of frontend code (html, css, js).&lt;/p></description></item><item><title>Powering My Voice Assistant with Ollama: Local AI for Home Automation</title><link>https://blog.landryzetam.net/posts/local-ai-with-ollama/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/local-ai-with-ollama/</guid><description>&lt;p>Ollama has become the AI brain of my home automation infrastructure, powering my voice assistant pipeline and Home Assistant integrations. Running entirely on-premises on my NVIDIA GPU node, it enables natural language understanding and intelligent responses while maintaining complete privacy and control.&lt;/p>
&lt;h2 id="the-home-automation-ai-hub">The Home Automation AI Hub&lt;/h2>
&lt;p>My Ollama deployment serves as the AI intelligence layer for home automation:&lt;/p>
&lt;p>&lt;img src="https://blog.landryzetam.net/posts/local-ai-with-ollama/img/homeassistantvoice_hu_25571ad08280435f.webp" alt="Home Automation AI Hub" width="1200" height="994" loading="lazy" decoding="async" />
&lt;em>Ollama serves as the AI brain for voice pipeline and Home Assistant automations&lt;/em>&lt;/p></description></item><item><title>Running 184 Pods on a 6-Node K3s Homelab Cluster</title><link>https://blog.landryzetam.net/posts/k8s/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/k8s/</guid><description>&lt;h2 id="project-overview">Project Overview&lt;/h2>
&lt;p>The Fako Cluster is my production Kubernetes environment that serves as the foundation for all other projects. It&amp;rsquo;s a self-hosted, production-grade K8s cluster that demonstrates enterprise-level practices while running on homelab hardware.&lt;/p>
&lt;h3 id="why-fako">Why &amp;ldquo;Fako&amp;rdquo;?&lt;/h3>
&lt;p>The name &amp;ldquo;Fako&amp;rdquo; holds special significance - it&amp;rsquo;s named after Mount Fako (Mount Cameroon), the highest peak in West and Central Africa. Just as Mount Fako stands as a towering landmark visible from miles away, this Kubernetes cluster serves as the foundational infrastructure that all other services can rely on.&lt;/p></description></item></channel></rss>