<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Automation on Landry Zetam - Tech Blog</title><link>https://blog.landryzetam.net/tags/automation/</link><description>Recent content in Automation on Landry Zetam - Tech Blog</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Sat, 20 Dec 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://blog.landryzetam.net/tags/automation/index.xml" rel="self" type="application/rss+xml"/><item><title>From Transcripts to Summaries: Completing the Audio Pipeline</title><link>https://blog.landryzetam.net/posts/transcripts-to-summaries-audio-pipeline/</link><pubDate>Sat, 20 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/transcripts-to-summaries-audio-pipeline/</guid><description>&lt;p>Remember that audio transcription pipeline I built? Raw recordings flow in, get compressed, transcribed by Whisper, and stored as JSON. Great for archival, but 204 transcript files sitting on NFS storage aren&amp;rsquo;t exactly useful. Today I&amp;rsquo;ll show you how I completed the loop—automatically summarizing transcripts with an LLM and publishing everything to my Obsidian vault.&lt;/p>
&lt;hr>
&lt;h2 id="part-1-the-problem-with-raw-transcripts">Part 1: The Problem with Raw Transcripts&lt;/h2>
&lt;p>The original pipeline worked beautifully. Every morning, new transcripts appeared as JSON files:&lt;/p></description></item><item><title>Complete Kubernetes Security Pipeline - Kube-bench and Kubescape to Obsidian</title><link>https://blog.landryzetam.net/posts/kubernetes-security-pipeline-kubebench-kubescape/</link><pubDate>Fri, 19 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/kubernetes-security-pipeline-kubebench-kubescape/</guid><description>&lt;p>What if your Kubernetes cluster could write comprehensive security reports directly into your second brain every night? Not just one perspective, but two complementary views: infrastructure security &lt;em>and&lt;/em> workload security. I built exactly that—a pipeline combining kube-bench (CIS benchmarks) and kubescape (NSA/MITRE frameworks) that publishes human-readable reports to Obsidian automatically. Here&amp;rsquo;s how the complete system works.&lt;/p>
&lt;hr>
&lt;h2 id="part-1-why-you-need-both-tools">Part 1: Why You Need Both Tools&lt;/h2>
&lt;h3 id="the-security-visibility-gap">The Security Visibility Gap&lt;/h3>
&lt;p>Running a Kubernetes homelab means wearing many hats. Security scanning tools exist, but most people either:&lt;/p></description></item><item><title>Building a Kubernetes Security Reporter for Obsidian</title><link>https://blog.landryzetam.net/posts/kubernetes-security-reporter-obsidian/</link><pubDate>Wed, 17 Dec 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/kubernetes-security-reporter-obsidian/</guid><description>&lt;p>What if your Kubernetes cluster could automatically write security reports directly into your second brain? Today I built exactly that—a system that runs CIS benchmark scans against my K3s cluster and publishes the results as beautifully formatted Obsidian notes. No more checking dashboards or parsing JSON files; just open your vault and see your cluster&amp;rsquo;s security posture.&lt;/p>
&lt;hr>
&lt;h2 id="part-1-the-problem">Part 1: The Problem&lt;/h2>
&lt;h3 id="security-visibility-in-a-homelab">Security Visibility in a Homelab&lt;/h3>
&lt;p>Running a Kubernetes homelab means wearing many hats: developer, operator, and security engineer. Tools like &lt;a href="https://github.com/aquasecurity/kube-bench">kube-bench&lt;/a> exist to scan your cluster against CIS benchmarks, but they typically output JSON or text that sits in a PersistentVolume gathering dust.&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>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>Self-Hosting n8n on Kubernetes for AI Automation</title><link>https://blog.landryzetam.net/posts/n8n/</link><pubDate>Thu, 07 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/n8n/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>
&lt;p>N8N is an open-source workflow automation tool deployed in the Fako cluster. It provides a visual interface for creating complex automation workflows, integrating with hundreds of services and APIs. N8N allows you to automate repetitive tasks, connect different services, and build sophisticated data pipelines without extensive coding.&lt;/p>
&lt;h2 id="key-features">Key Features&lt;/h2>
&lt;ul>
&lt;li>&lt;strong>Visual Workflow Builder&lt;/strong>: Drag-and-drop interface for creating automations&lt;/li>
&lt;li>&lt;strong>200+ Integrations&lt;/strong>: Pre-built nodes for popular services&lt;/li>
&lt;li>&lt;strong>Self-Hosted&lt;/strong>: Full control over your data and workflows&lt;/li>
&lt;li>&lt;strong>PostgreSQL Backend&lt;/strong>: Reliable storage using the cluster&amp;rsquo;s PostgreSQL&lt;/li>
&lt;li>&lt;strong>Webhook Support&lt;/strong>: Trigger workflows via HTTP webhooks&lt;/li>
&lt;li>&lt;strong>Custom Functions&lt;/strong>: JavaScript code support for complex logic&lt;/li>
&lt;li>&lt;strong>Fair-Code License&lt;/strong>: Source available with sustainable business model&lt;/li>
&lt;/ul>
&lt;h2 id="architecture">Architecture&lt;/h2>
&lt;h3 id="components">Components&lt;/h3>
&lt;ol>
&lt;li>&lt;strong>Deployment&lt;/strong>: Single-replica deployment (stateful workflows)&lt;/li>
&lt;li>&lt;strong>Service&lt;/strong>: ClusterIP service on port 5678&lt;/li>
&lt;li>&lt;strong>Ingress&lt;/strong>: HTTPS access at &lt;code>n8n.landryzetam.net&lt;/code>&lt;/li>
&lt;li>&lt;strong>Storage&lt;/strong>: PersistentVolumeClaim for workflow data&lt;/li>
&lt;li>&lt;strong>Database&lt;/strong>: PostgreSQL for workflow definitions and execution data&lt;/li>
&lt;li>&lt;strong>External Secrets&lt;/strong>: Database credentials from AWS Secrets Manager&lt;/li>
&lt;/ol>
&lt;h3 id="resource-requirements">Resource Requirements&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Memory&lt;/strong>: 512Mi (request), 2Gi (limit)&lt;/li>
&lt;li>&lt;strong>CPU&lt;/strong>: 250m (request), 1000m (limit)&lt;/li>
&lt;li>&lt;strong>Storage&lt;/strong>: Persistent volume for N8N data and files&lt;/li>
&lt;li>&lt;strong>Database&lt;/strong>: Uses shared PostgreSQL cluster&lt;/li>
&lt;/ul>
&lt;h2 id="configuration">Configuration&lt;/h2>
&lt;h3 id="environment-settings">Environment Settings&lt;/h3>
&lt;table>
&lt;thead>
&lt;tr>
&lt;th>Parameter&lt;/th>
&lt;th>Value&lt;/th>
&lt;th>Description&lt;/th>
&lt;/tr>
&lt;/thead>
&lt;tbody>
&lt;tr>
&lt;td>&lt;code>N8N_HOST&lt;/code>&lt;/td>
&lt;td>&lt;code>n8n.landryzetam.net&lt;/code>&lt;/td>
&lt;td>External hostname&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>N8N_PORT&lt;/code>&lt;/td>
&lt;td>&lt;code>5678&lt;/code>&lt;/td>
&lt;td>Application port&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>N8N_PROTOCOL&lt;/code>&lt;/td>
&lt;td>&lt;code>https&lt;/code>&lt;/td>
&lt;td>External protocol&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>WEBHOOK_URL&lt;/code>&lt;/td>
&lt;td>&lt;code>https://n8n.landryzetam.net/&lt;/code>&lt;/td>
&lt;td>Webhook base URL&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>GENERIC_TIMEZONE&lt;/code>&lt;/td>
&lt;td>&lt;code>America/New_York&lt;/code>&lt;/td>
&lt;td>Timezone for scheduling&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>N8N_METRICS&lt;/code>&lt;/td>
&lt;td>&lt;code>true&lt;/code>&lt;/td>
&lt;td>Enable metrics endpoint&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td>&lt;code>N8N_TEMPLATES_ENABLED&lt;/code>&lt;/td>
&lt;td>&lt;code>true&lt;/code>&lt;/td>
&lt;td>Enable workflow templates&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3 id="database-configuration">Database Configuration&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Type&lt;/strong>: PostgreSQL&lt;/li>
&lt;li>&lt;strong>Host&lt;/strong>: &lt;code>postgres-cluster-rw.postgres.svc.cluster.local&lt;/code>&lt;/li>
&lt;li>&lt;strong>Database&lt;/strong>: &lt;code>app&lt;/code>&lt;/li>
&lt;li>&lt;strong>User&lt;/strong>: &lt;code>app&lt;/code>&lt;/li>
&lt;li>&lt;strong>Password&lt;/strong>: Managed via External Secrets&lt;/li>
&lt;/ul>
&lt;h2 id="usage">Usage&lt;/h2>
&lt;h3 id="accessing-n8n">Accessing N8N&lt;/h3>
&lt;p>External access:&lt;/p></description></item><item><title>GitOps in Practice: Managing k8s with FluxCD</title><link>https://blog.landryzetam.net/posts/gitops-with-fluxcd/</link><pubDate>Wed, 06 Aug 2025 00:00:00 +0000</pubDate><guid>https://blog.landryzetam.net/posts/gitops-with-fluxcd/</guid><description>&lt;p>After running the Fako Cluster for several months, I can confidently say that adopting GitOps with FluxCD has been one of the best decisions for managing my Kubernetes infrastructure. In this post, I&amp;rsquo;ll share practical insights and patterns that have proven invaluable.&lt;/p>
&lt;h2 id="what-is-gitops">What is GitOps?&lt;/h2>
&lt;p>GitOps is a way of implementing Continuous Deployment for cloud native applications.
FluxCD is designed to simplify that, making it easier than ever to manage your Kubernetes environments. Here’s why i leverage it in my workflow:&lt;/p></description></item></channel></rss>