Porch Controllers

Kubernetes controllers that automate Porch operations.

Overview

Porch controllers are Kubernetes controllers that automate repository synchronization and package variant management. They run as a single deployment and can be individually enabled or disabled based on your needs.

Architecture

All Porch controllers typically run together in a single pod and share the controller-runtime framework. They use standard Kubernetes controller patterns - watching resources, reconciling state, and requeuing when needed. You can enable or disable individual controllers using the --reconcilers flag, and they all act as clients of the Porch API server rather than being part of it.

While controllers share a pod by default, each controller can run in its own deployment if needed for scaling or isolation purposes, though this configuration is not covered in the documentation. See the configuration guide for standard deployment details.

Available Controllers

Repository Controller

Synchronizes Repository custom resources with their backing Git repositories. The controller performs health checks and full syncs to keep package metadata current in Porch’s cache layer.

PackageRevision Controller

Manages the full lifecycle of PackageRevisions as native Kubernetes CRDs. Handles package creation (init, clone, copy, upgrade), KRM function rendering, and lifecycle transitions. This is the core controller for the CRD-based architecture.

PackageVariant Controllers

Automate creation and management of package variants through declarative configuration. Two controllers work together:

  • PackageVariant Controller: Manages individual package variants with one-to-one upstream-to-downstream relationships
  • PackageVariantSet Controller: Generates multiple PackageVariant resources based on target selectors for bulk operations

PackageRevision Controller

Kubernetes controller for package revision lifecycle management (CRD-based architecture).

PackageVariant Controllers

PackageVariant and PackageVariantSet controllers for package automation.

Repository Controller

Kubernetes controller for repository synchronization and lifecycle management.

Last modified July 1, 2026: Rewrite and restructuring (f5d243d)