<?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"&gt;REST Storage Interface&lt;/h2&gt;&lt;p&gt;See 
&lt;a href="/v1.5/docs/5_architecture_and_components/porch-apiserver/functionality/#rest-storage-implementation"&gt;Functionality&lt;/a&gt; for detailed CRUD operations and storage implementations.&lt;/p&gt;
&lt;p&gt;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&gt;
&lt;p&gt;&lt;strong&gt;Storage interface characteristics:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Implements standard Kubernetes storage.Interface&lt;/li&gt;
&lt;li&gt;Provides CRUD operations (Create, Get, List, Update, Delete)&lt;/li&gt;
&lt;li&gt;Supports Watch for real-time change notifications&lt;/li&gt;
&lt;li&gt;Delegates all operations to CaD Engine&lt;/li&gt;
&lt;li&gt;No direct etcd storage - packages stored in Git&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Storage implementations:&lt;/strong&gt;&lt;/p&gt;</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"&gt;Overview&lt;/h2&gt;&lt;p&gt;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&gt;
&lt;h3 id="high-level-architecture"&gt;High-Level Architecture&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ API Server Functionality │
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ REST Storage │ │ Strategies │ │
│ │ │ ───&amp;gt; │ │ │
│ │ • CRUD Ops │ │ • Validation │ │
│ │ • Watch Streams │ │ • Admission │ │
│ │ • Engine Deleg │ │ • Table Conv │ │
│ └──────────────────┘ └──────────────────┘ │
│ │ │ │
│ └────────┬────────────────┘ │
│ ↓ │
│ ┌──────────────────┐ │
│ │ Background │ │
│ │ Operations │ │
│ │ │ │
│ │ • Repo Sync │ │
│ │ • Cleanup │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="rest-storage-implementation"&gt;REST Storage Implementation&lt;/h2&gt;&lt;p&gt;See 
&lt;a href="/v1.5/docs/5_architecture_and_components/porch-apiserver/design/#rest-storage-interface"&gt;Design&lt;/a&gt; for the design rationale behind custom REST storage.&lt;/p&gt;</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"&gt;Overview&lt;/h2&gt;&lt;p&gt;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&gt;
&lt;h3 id="high-level-architecture"&gt;High-Level Architecture&lt;/h3&gt;&lt;pre tabindex="0"&gt;&lt;code&gt;┌─────────────────────────────────────────────────────────┐
│ Porch API Server │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────┐ │
│ │ Clients │ ───&amp;gt; │ REST │ ───&amp;gt; │Engine│ │
│ │ (kubectl, │ │ Storage │ │ │ │
│ │ kpt, etc) │ │ │ │ │ │
│ └──────────────┘ └──────────────┘ └──────┘ │
│ ↑ │ │ │
│ │ ↓ ↓ │
│ │ ┌──────────────┐ ┌──────┐ │
│ └──────────────│ Watcher │ │Cache │ │
│ │ Manager │ │ │ │
│ └──────────────┘ └──────┘ │
└─────────────────────────────────────────────────────────┘
&lt;/code&gt;&lt;/pre&gt;&lt;h2 id="engine-integration"&gt;Engine Integration&lt;/h2&gt;&lt;p&gt;The API Server delegates all package operations to the CaD Engine:&lt;/p&gt;</description></item></channel></rss>