<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Repository Controller on Porch Documentation</title><link>/docs/5_architecture_and_components/controllers/repository-controller/</link><description>Recent content in Repository Controller on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/docs/5_architecture_and_components/controllers/repository-controller/index.xml" rel="self" type="application/rss+xml"/><item><title>Design Decisions</title><link>/docs/5_architecture_and_components/controllers/repository-controller/design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/5_architecture_and_components/controllers/repository-controller/design/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>&lt;p>This page explains the key architectural decisions that shaped the Repository Controller, focusing on the &amp;ldquo;why&amp;rdquo; rather than the &amp;ldquo;what.&amp;rdquo; Each decision represents a deliberate trade-off made to balance competing concerns like performance, reliability, and operational simplicity.&lt;/p>
&lt;p>These decisions address fundamental challenges in distributed systems: how to detect failures quickly without wasting resources, how to handle errors intelligently, and how to provide clear operational visibility. Understanding the rationale helps when troubleshooting issues or considering configuration changes.&lt;/p></description></item><item><title>Component Interactions</title><link>/docs/5_architecture_and_components/controllers/repository-controller/interactions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/docs/5_architecture_and_components/controllers/repository-controller/interactions/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>&lt;p>The Repository Controller operates within the Porch ecosystem by watching Repository custom resources and interacting with the cache layer to keep package metadata synchronized. This page describes how the controller integrates with other Porch components.&lt;/p>
&lt;h3 id="architecture">Architecture&lt;/h3>&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-fallback" data-lang="fallback">&lt;span class="line">&lt;span class="cl">┌────────────────────────────────────────────────────────┐
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ Repository Controller │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ┌─────────────────────────────────────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Reconcile Loop │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Watch Repository CRs │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Sync Decision Logic │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Async Workers │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Status Updates │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └─────────────────────────────────────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ↓ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ ┌──────────────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Cache Interface │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • OpenRepository│ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Refresh │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • List Packages │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ └──────────────────┘ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">└────────────────────────────────────────────────────────┘
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Kubernetes API
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Repository CRs
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> ↓
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> Cache Layer
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl"> (CR/DB Cache)
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h2 id="kubernetes-api-interactions">Kubernetes API Interactions&lt;/h2>&lt;p>The controller watches Repository custom resources using standard Kubernetes controller patterns. When repositories are created, updated, or deleted, the controller receives events and reconciles the desired state with actual state.&lt;/p></description></item></channel></rss>