<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Porch API Server on Porch Documentation</title><link>/v1.5/docs/5_architecture_and_components/porch-apiserver/</link><description>Recent content in Porch API Server on Porch Documentation</description><generator>Hugo</generator><language>en-us</language><atom:link href="/v1.5/docs/5_architecture_and_components/porch-apiserver/index.xml" rel="self" type="application/rss+xml"/><item><title>Design</title><link>/v1.5/docs/5_architecture_and_components/porch-apiserver/design/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/porch-apiserver/design/</guid><description>&lt;h2 id="rest-storage-interface">REST Storage Interface&lt;/h2>&lt;p>See 
&lt;a href="/v1.5/docs/5_architecture_and_components/porch-apiserver/functionality/#rest-storage-implementation">Functionality&lt;/a> for detailed CRUD operations and storage implementations.&lt;/p>
&lt;p>The Porch API Server implements Kubernetes&amp;rsquo; REST storage interface to provide custom storage backends for Porch resources. Unlike standard Kubernetes resources that store data in etcd, Porch resources delegate to the Engine which manages package data in Git repositories through the Cache.&lt;/p>
&lt;p>&lt;strong>Storage interface characteristics:&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>Implements standard Kubernetes storage.Interface&lt;/li>
&lt;li>Provides CRUD operations (Create, Get, List, Update, Delete)&lt;/li>
&lt;li>Supports Watch for real-time change notifications&lt;/li>
&lt;li>Delegates all operations to CaD Engine&lt;/li>
&lt;li>No direct etcd storage - packages stored in Git&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>Storage implementations:&lt;/strong>&lt;/p></description></item><item><title>Functionality</title><link>/v1.5/docs/5_architecture_and_components/porch-apiserver/functionality/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/porch-apiserver/functionality/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>&lt;p>The Porch API Server provides the Kubernetes API interface for Porch resources. It implements custom REST storage backends that delegate to the Engine, enforces validation and admission policies through strategies, and manages real-time watch streams for clients.&lt;/p>
&lt;h3 id="high-level-architecture">High-Level 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">│ API Server Functionality │
&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">│ │ REST Storage │ │ Strategies │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ ───&amp;gt; │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • CRUD Ops │ │ • Validation │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Watch Streams │ │ • Admission │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Engine Deleg │ │ • Table Conv │ │
&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">│ ┌──────────────────┐ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Background │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Operations │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Repo Sync │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ • Cleanup │ │
&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;/code>&lt;/pre>&lt;/div>&lt;h2 id="rest-storage-implementation">REST Storage Implementation&lt;/h2>&lt;p>See 
&lt;a href="/v1.5/docs/5_architecture_and_components/porch-apiserver/design/#rest-storage-interface">Design&lt;/a> for the design rationale behind custom REST storage.&lt;/p></description></item><item><title>Interactions</title><link>/v1.5/docs/5_architecture_and_components/porch-apiserver/interactions/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>/v1.5/docs/5_architecture_and_components/porch-apiserver/interactions/</guid><description>&lt;h2 id="overview">Overview&lt;/h2>&lt;p>The Porch API Server acts as the integration point between Kubernetes clients and Porch&amp;rsquo;s internal components. It translates Kubernetes API requests into Engine operations, manages watch streams, and coordinates background synchronization tasks.&lt;/p>
&lt;h3 id="high-level-architecture">High-Level 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">│ Porch API Server │
&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">│ │ Clients │ ───&amp;gt; │ REST │ ───&amp;gt; │Engine│ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ (kubectl, │ │ Storage │ │ │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ kpt, etc) │ │ │ │ │ │
&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">│ └──────────────│ Watcher │ │Cache │ │
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="cl">│ │ Manager │ │ │ │
&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;/code>&lt;/pre>&lt;/div>&lt;h2 id="engine-integration">Engine Integration&lt;/h2>&lt;p>The API Server delegates all package operations to the CaD Engine:&lt;/p></description></item></channel></rss>