<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Erik Karlsson</title><description>Software engineering manager. Kubernetes homelab managed as code, AI agent tooling, and writing about building infrastructure with AI as a co-pilot.</description><link>https://edkarlsson.github.io/</link><item><title>Posts 11-16: The Hard Parts, and What They Revealed</title><link>https://edkarlsson.github.io/blog/recap-posts-11-16/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/recap-posts-11-16/</guid><description>What the final six posts of Homelab as Production are actually about</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Lessons Learned and Future Work</title><link>https://edkarlsson.github.io/blog/16-lessons-and-future-work/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/16-lessons-and-future-work/</guid><description>What 43 sessions taught me, and what comes next</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><category>lessons</category><category>retrospective</category><category>roadmap</category><category>future</category><category>homelab</category><category>kubernetes</category></item><item><title>Executive Summary: AI-Assisted Infrastructure Engineering</title><link>https://edkarlsson.github.io/blog/15b-executive-summary/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/15b-executive-summary/</guid><description>A methodology for applying AI assistance safely in engineering teams</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate><category>executive-summary</category><category>ai-assisted-engineering</category><category>engineering-leadership</category><category>methodology</category></item><item><title>AI-Assisted Infrastructure for Your Team</title><link>https://edkarlsson.github.io/blog/15-team-adoption/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/15-team-adoption/</guid><description>Translating the homelab methodology to an engineering innovation team</description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><category>ai-assisted-engineering</category><category>team-adoption</category><category>engineering-leadership</category><category>claude</category><category>methodology</category><category>devops</category><category>platform-engineering</category></item><item><title>What Claude Got Wrong (And Right)</title><link>https://edkarlsson.github.io/blog/14-retrospective/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/14-retrospective/</guid><description>An honest retrospective on 43 sessions of AI-assisted infrastructure work</description><pubDate>Wed, 11 Mar 2026 00:00:00 GMT</pubDate><category>ai-assisted</category><category>claude</category><category>retrospective</category><category>devops</category><category>gitops</category><category>infrastructure</category><category>lessons-learned</category></item><item><title>Three Sessions to Fix OIDC SSO — A Debugging Arc</title><link>https://edkarlsson.github.io/blog/13-oidc-debugging-arc/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/13-oidc-debugging-arc/</guid><description>How a &apos;simple&apos; SSO integration turned into a JVM truststore, CORS, and a Jetty runtime discovery</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><category>dependency-track</category><category>oidc</category><category>keycloak</category><category>pkce</category><category>jvm</category><category>jetty</category><category>kubernetes</category><category>debugging</category><category>sso</category><category>security</category></item><item><title>GitLab on Kubernetes — 10 PRs to Make It Work</title><link>https://edkarlsson.github.io/blog/12-gitlab-kubernetes/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/12-gitlab-kubernetes/</guid><description>Self-hosted GitLab with Keycloak OIDC, homelab CA TLS, and a K8s runner — and the PR review that caught the mistakes</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><category>gitlab</category><category>kubernetes</category><category>keycloak</category><category>oidc</category><category>ansible</category><category>ci-cd</category><category>gitops</category><category>github</category><category>nexus</category></item><item><title>Posts 6-10: The Trustworthy Arc</title><link>https://edkarlsson.github.io/blog/recap-posts-06-10/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/recap-posts-06-10/</guid><description>What the second five posts of Homelab as Production are actually about</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate></item><item><title>CI/CD — Validating Infrastructure as Code</title><link>https://edkarlsson.github.io/blog/11-cicd-validation/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/11-cicd-validation/</guid><description>Every PR goes through a pipeline. Here&apos;s what that pipeline checks.</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate><category>ci-cd</category><category>github-actions</category><category>terraform</category><category>ansible</category><category>kubernetes</category><category>kubeconform</category><category>kustomize</category><category>shellcheck</category><category>tflint</category><category>policy-enforcement</category></item><item><title>Day-2 Operations — HA, Backup, and Rolling Upgrades</title><link>https://edkarlsson.github.io/blog/10-day2-operations/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/10-day2-operations/</guid><description>The unglamorous work that makes infrastructure actually reliable</description><pubDate>Mon, 09 Mar 2026 00:00:00 GMT</pubDate><category>postgresql</category><category>high-availability</category><category>keepalived</category><category>k3s</category><category>ansible</category><category>backup</category><category>operations</category></item><item><title>Nexus — Building Your Own Software Supply Chain</title><link>https://edkarlsson.github.io/blog/09-nexus-supply-chain/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/09-nexus-supply-chain/</guid><description>Why your homelab needs a repository manager, and how to build one</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><category>homelab</category><category>kubernetes</category><category>nexus</category><category>sonatype</category><category>docker</category><category>registry</category><category>supply-chain</category><category>gitops</category><category>k3s</category><category>containerd</category></item><item><title>The Application Deployment Pattern</title><link>https://edkarlsson.github.io/blog/08-app-deployment-pattern/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/08-app-deployment-pattern/</guid><description>A repeatable 7-manifest pattern (plus kustomization.yaml) that scales to 20+ applications</description><pubDate>Fri, 06 Mar 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>gitops</category><category>flux</category><category>ingress-nginx</category><category>tailscale</category><category>external-secrets</category><category>kustomize</category><category>patterns</category></item><item><title>Five Posts In: The Foundation Arc</title><link>https://edkarlsson.github.io/blog/recap-posts-01-05/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/recap-posts-01-05/</guid><description>What the first five posts of Homelab as Production are actually about</description><pubDate>Tue, 03 Mar 2026 00:00:00 GMT</pubDate></item><item><title>The GPU Passthrough That Wasn&apos;t: A Hardware Limitation Story</title><link>https://edkarlsson.github.io/blog/18-gpu-passthrough-failure/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/18-gpu-passthrough-failure/</guid><description>Sometimes the right answer is that the answer doesn&apos;t exist</description><pubDate>Mon, 02 Mar 2026 00:00:00 GMT</pubDate><category>homelab</category><category>proxmox</category><category>gpu</category><category>vfio</category><category>nvidia</category><category>kubernetes</category><category>debugging</category></item><item><title>I Spent 2-3 Weeks Talking to AI Agents and Getting Nowhere. Then I Built a Production Platform in 2.5 Weeks.</title><link>https://edkarlsson.github.io/blog/homelab-as-production-launch/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/homelab-as-production-launch/</guid><description>The story behind Homelab as Production — and what I actually learned about working with AI.</description><pubDate>Sun, 01 Mar 2026 00:00:00 GMT</pubDate></item><item><title>Secrets Without Secrets: 1Password Connect and External Secrets Operator</title><link>https://edkarlsson.github.io/blog/07-secrets-1password-eso/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/07-secrets-1password-eso/</guid><description>Never commit a secret. Ever. The production secrets pattern at homelab scale.</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>homelab</category><category>kubernetes</category><category>secrets</category><category>1password</category><category>external-secrets-operator</category><category>gitops</category><category>security</category></item><item><title>SSO for Everything: Keycloak and OAuth2 Proxy</title><link>https://edkarlsson.github.io/blog/06-sso-keycloak-oauth2proxy/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/06-sso-keycloak-oauth2proxy/</guid><description>Centralizing authentication before you have more than two apps</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>keycloak</category><category>oauth2-proxy</category><category>sso</category><category>oidc</category><category>kubernetes</category><category>security</category><category>gitops</category></item><item><title>Observability Before Applications</title><link>https://edkarlsson.github.io/blog/05-observability-first/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/05-observability-first/</guid><description>Why you instrument the cluster before deploying anything else</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>homelab</category><category>kubernetes</category><category>observability</category><category>prometheus</category><category>grafana</category><category>loki</category><category>monitoring</category><category>gitops</category></item><item><title>The Platform Layer Nobody Talks About</title><link>https://edkarlsson.github.io/blog/04-platform-layer/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/04-platform-layer/</guid><description>MetalLB, ingress-nginx, cert-manager, NFS: the boring infrastructure every app depends on</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate></item><item><title>GitOps from Day One: Bootstrapping FluxCD</title><link>https://edkarlsson.github.io/blog/03-gitops-fluxcd/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/03-gitops-fluxcd/</guid><description>Why you set up GitOps before deploying any applications</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>gitops</category><category>fluxcd</category><category>kubernetes</category><category>terraform</category><category>k3s</category></item><item><title>Provisioning Hardware with Terraform and an AI That Made Mistakes</title><link>https://edkarlsson.github.io/blog/02-terraform-provisioning/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/02-terraform-provisioning/</guid><description>The bpg/proxmox provider, cloud-init, PostgreSQL HA — and the SSH username bug</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>terraform</category><category>proxmox</category><category>cloud-init</category><category>postgresql</category><category>infrastructure-as-code</category><category>ai-assisted</category></item><item><title>The Production Homelab Thesis</title><link>https://edkarlsson.github.io/blog/01-production-homelab-thesis/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/01-production-homelab-thesis/</guid><description>Why apply enterprise patterns at home, and why AI makes it viable now</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>homelab</category><category>kubernetes</category><category>iac</category><category>ai</category><category>claude</category><category>devops</category><category>gitops</category></item><item><title>Preface: Before the Method</title><link>https://edkarlsson.github.io/blog/00-preface/</link><guid isPermaLink="true">https://edkarlsson.github.io/blog/00-preface/</guid><description>Where this project started, and why the tools almost got in the way</description><pubDate>Thu, 26 Feb 2026 00:00:00 GMT</pubDate><category>ai-tools</category><category>cline</category><category>claude</category><category>learning</category><category>workflow</category><category>meta</category></item></channel></rss>