Porch Documentation Restructure
⚠️ Outdated Notice: The most up to date version of this restructure guide can be found
here.
The Kubernetes documentation follows a table of contents detailed in the below section. taking this template and adapting it to the porch code base/documentation we get the following.
- The different sections required to be covered following the Kubernetes documentation.
- The currently available documentation relating to this section available now on
https://docs.nephio.org/docs/porch/.
- The gaps/missing sections not found in the current documentation but required in the rework.
Sections marked as [Section in Green] means they have been reviewed and marked as necessary to be included in the new documentation.
Sections marked as [Section in Red] means they have not been reviewed but could still be placed in the docs in the given location once they are. TLDR its a topic of interest to be looked at just not signed off on yet as as a mandatory addition.
Table of Contents
- Overview
- Concepts
- Getting Started
- Tutorials & How‑tos
- Architecture & Components
- Configuration & Deployment
- CLI / API / Reference
- Best Practices & Patterns
- Troubleshooting & FAQ
- Security & Compliance
- Glossary
- Contributing
- Release Notes / Changelog
1. Overview
Section Must Contain:
- What is Porch
• Short description (“Porch = package orchestration, opinionated package management …”) (Porch already has this under Overview). (
https://docs.nephio.org/docs/porch/)
- Goals & scope (what Porch intends to do, what it does not do)
- Audiences: which users should care (operators, GitOps engineers, developers, integrators, etc.)
- Prerequisites / compatibility (Kubernetes versions, environments, permissions, dependencies)
Currently Available Resources:
Gaps / additions Required:
- Statement of goals & scope (what Porch intends to do / NOT do).
- Target audiences (operators, developers, integrators).
- Supported environments / prerequisites summary.
More Detail on concepts requiring explination
2. Concepts
Section Must Contain:
- Key terminology (package, variant, mutation pipeline, function runner, etc.)
- Core models/entities: what Porch works with (packages, modules, variants, pipelines).
- High‑level flow / lifecycle: how a package moves through Porch (creation → mutation → deployment or consumption)
- Relationships to other Nephio components / external systems (Git repos, registries, etc.)
Currently Available Resources:
Gaps / additions Required:
- Central glossary of key terms
- Visual lifecycle diagram of a package
- Mapping of Porch functions vs Nephio components
More Detail on concepts requiring explination
- [PACKAGE-ORCHESTRATION]
https://docs.nephio.org/docs/porch/package-orchestration/ ← A LOT OF GREAT REUSABLE CONTENT HERE FOR THIS SECTION. THIS SECTION CAN BE OUR HIGH LEVEL INTRODUCTION OF THE ENTIRE PROJECT BEFORE DIVING DEEPER INTO THE DETAILS IN THE LATER SECTIONS BELOW.
- [MODIFYING-PORCH-PACKAGES] MUTATORS VS VALIDATORS
- [REVISION/VERSION] Explain what the revision of a package revision is.
- [LIFECYCLE] DRAFT PROPOSED PUBLISHED PROPOSED-DELETE Explain what the lifecycle of a package is.
- [LATEST] Explain the “latest” field works, and how it relates to the “latest” annotation
- [REPOSITORIES] GIT repo short hand explanation.
[WORKSPACE/(REVISION IDENTIFIER)] Explain what a workspace is****, see
https://github.com/nephio-project/nephio/issues/831
- [PACKAGE-RELATIONSHIPS] UPSTREAM VS DOWNSTREAM VS Explain the behavior of packages which contain embedded packages
https://github.com/nephio-project/nephio/discussions/917
- [EXPLAIN UPSTREAM AT A HIGH LEVEL HERE BEFORE GOING IN DETAIL]
3. Getting Started
Section Must Contain:
- Install Porch: requirements, supported platforms/environments, step‑by‑step install. Porch already has Installing Porch.
- Environment preparation: what users need locally, or on a cluster. (Porch has Preparing the Environment.)
- First example / quick start: minimal working example (e.g. a package, mutate, deploy)
- Using the Porch CLI / basic commands. Porch has Using the Porch CLI tool.
Currently Available Resources:
-
Installing Porch needs quick version e.g. script containing (./scripts/setup-dev-env.sh + make run-in-kind)
- Preparing the Environment
- Using the Porch CLI tool
Gaps / additions Required:
- End-to-end quickstart walkthrough
- Output examples (logs/screenshots)
- Supported platforms/environment matrix
4. Tutorials & How‑to’s
Section Must Contain:
- Common tasks with step‑by‑step instructions:
- Authenticating with remote Git repositories.
- Using private registries.
- Running Porch in different environments (cloud, on‑prem, VMs). E.g. Running Porch on GKE.
- Advanced how‑tos: customizing the mutation pipeline, variant selection, function runner templating, etc.
Currently Available Resources:
- Authenticating with remote Git
- Using authenticated private registries
- Running Porch on GKE
- Mutation pipeline & function runner content (under Concepts)
Gaps / additions Required:
- Complete end-to-end sample with full mutation + deployment
- Real-world examples (multi-repo setups)
- CI/CD testing integration
More Detail on concepts requiring explination
- [EXPECT EXAMPLE SCRIPT HAVING DEPLOYED PORCH FOR THEM AS A FIRST TIME USER]
- [STEP 1: SETUP PORCH REPOSITORIES RESOURCE] LIKELY FIRST STEP FROM A DEPLOYMENT OF PORCH TO USE IT
- [FLOWCHART EXPLAINING FLOW E2E] init → pull → locally do changes → push → proposed → approved/rejected → if rejected changes required then re proposed → if approved → becomes published/latest →
- [CREATING FIRST PACKAGE] INIT HOLLOW PKG -> PULL PKG LOCALLY FROM REPO -> MODIFY LOCALLY -> PUSH TO UPSTREAM -> PROPOSE FOR APPROVAL -> APPROVE TO UPSTREAM REPO E.G. SAMPLE
- [UPGRADE EXAMPLES] [ALL THE DIFF SCENARIOS] [THIS IS THE MOST COMPLEX PART] [IT NEEDS TO BE VERY SPECIFIC ON WHAT DO/DONT WE SUPPORT]
- [CREATE A GENERIC PACKAGE AND RUN IT THROUGH THE DIFFERENT UPGRADES TO SHOW HOW THEY WORK AND CHANGE]
- in upgrade scenario we expect that we have NEW BLUEPRINT IS PUBLISHED → DEPLOYMENT PACKAGE CAN BE UPGRADED IF IT WAS BASED ON THAT BLUEPRINT (AKA THE UPSTREAM OF THIS PACKAGE POINTS AT THAT BLUEPRINT). assuming 2 repositories
- [RESOURCE MERGE] IS A STRUCTURAL 3 WAY MERGE → HAS CONTEXT OF THE STRUCTURE OF THE FILES ->
- [COPY MERGE] IS A FILE REPLACEMENT STRATEGY → USEFUL WHEN YOU DONT NEED PORCH TO BE AWARE OF THE CONTENT OF THE FILES ESPECIALLY IF THERE IS CONTENT INSIDE THE FILES THAT DO NOT COMPLY WITH KUSTOMIZE.
5. Architecture & Components
Section Must Contain:
- Overall architecture diagram
- Main components/modules of Porch (controllers, function runner, variant controller, etc.)
- Data flow and interaction: how packages move through system, lifecycle events, error paths, etc.
- Dependencies: e.g. what external services Porch relies on (Git, registry, Kubernetes APIs)
Currently Available Resources:
- Porch in the Nephio Architecture
- Individual component pages: Function Runner, Variant Controller, etc.
Gaps / additions Required:
- Single consolidated diagram of Porch system
- Component interaction maps
- Package lifecycle description and flow diagram
More Detail on concepts requiring explination
- [PORCH-SERVER] PORCH SERVER SPECIFIC MAIN CHUNK FOR DETAIL HERE
- [AGGREGATED API SERVER] HOW CERTAIN PORCH RESOURCES ARE SERVED AND HANDLED AKA NOT THROUGH CRDS BUT AGGR API
- [REPO SYNC] ENSURES LOCAL DB/CR CACHE AND UPSTREAM REPO’S ARE KEPT IN SYNC
- [ENGINE] MAIN BRAIN/LOGIC USED IN PROCESSING PACKAGES
- [CACHE SYSTEM]
- [DB-CACHE] EXPLAIN DIFFERENCE IN OPERATION COMPARED TO OTHER (E.G. DB DOESNT PUSH TO REPO UNTIL APPROVED)
- [CR-CACHE] EXPLAIN DIFFERENCE IN OPERATION COMPARED TO OTHER
- [FUNCTION-RUNNER] MAIN CHUNK OF DETAIL REGARDING THIS HERE
- [CONTROLLERS] MAIN CHUNK OF DETAIL REGARDING THIS HERE
- [GIT-REPO] MAIN CHUNK OF DETAIL REGARDING THIS HERE
- [DEPLOYMENT VS NON DEPLOYMENT REPO] EXPLAIN
- [4 WAYS PKG REV COMES INTO EXISTENCE], [UPSTREAM IS THE SOURCE OF THE CLONE]
- [CREATED USING RPKG INIT/API] , [IN THE CASE THERE IS NO UPSTREAM]
- [COPY FROM ANOTHER REV IN THE SAME PKG] ,[NO UPSTREAM?]
- [CAN BE CLONED FROM ANOTHER PKG REV A NEW ] [HAS UPSTREAM]
- [CAN BE LOADED FROM GIT] [DEPENDS ON WEATHER IT HAD A HAD A CLONE SOURCE OR NOT AT THE TIME]
- [UPSTREAM] EXPLAIN PORCH INTERACTION WITH UPSTREAM REPO’S
- [DOWNSTREAM] EXPLAIN PORCH INTERACTION WITH DOWNSTREAM REPO’S
- [PORCH-SPECIFIC-RESOURCES] SUMMARY OF MAIN RESOURCES E.G. PACKAGE-REVISIONS.
- [PACKAGE-REVISION] MORE DETAIL HERE
- [PACKAGE-REVISION-RESOURCES] MORE DETAIL HERE
- [PACKAGE-REV] MORE DETAIL HERE
- [REPOSITORIES] MORE DETAIL HERE
- [GIT VS OCI] PORCH SUPPORTS THE CONCEPT OF MULTIPLE REPOS OCI IS EXPERIMENTAL. AN EXERNAL REPO IS AN IMPLEMENTATION OF PORCH REPOSTIORY INTERFACE WHICH STORES PKG REVISION ON AN EXTERNAL SYSTEM. TODAY THERE ARE 2 EXTERNAL REPO IMPLEMENTATIONS. THEY ARE GIT(FULLY SUPPORTED) & OCI(EXPERIMENTALLY). DEVELOPERS ARE FREE TO DESIGN AND IMPLEMENT NEW EXTERNAL REPOS TYPES IF THEY WISH E.G. DB INTERFACE
- [PACKAGE-VARIANTS/-SETS] MORE DETAIL HERE
- [PACKAGES] UNSURE IF THIS IS STILL USED?
6. Configuration & Deployment
Section Must Contain:
- Configuration options (config as data, configuration schema) — key settings, environment variables, flags. Porch has Configuration as Data.
- Deployment modes: how Porch can be deployed (cluster, single VM, etc.)
- Versioning and upgrades
- Authentication, authorization configuration (connecting to Git, registries)
Currently Available Resources:
- Configuration as Data
- Git & Registry Auth (under How-Tos)
- GKE Deployment Guide
Gaps / additions Required:
- Config file schema and field definitions
- Supported deployment topologies
- Upgrade instructions / versioning policy
More Detail on concepts requiring explination
- [DEPLOYMENTS] HOW DO DEPLOY/INSTALL PORCH ON DIFFERENT ENV’S
- [CONFIGURATION] DIFFERENT WAYS TO CONFIGURE PORCH
7. CLI / API / Reference
Section Must Contain:
- CLI tool reference: all commands, flags, examples
- APIs / CRDs / Resources: full spec for Porch‑specific Kubernetes resources, with fields, validation, defaulting
- Schema definitions or API versioning
- Configuration schema reference, file formats etc.
Currently Available Resources:
Gaps / additions Required:
- Full CLI command reference (flags, subcommands)
- CRD reference (e.g., PackageVariant, Repository)
- YAML schema definitions and validation docs
More Detail on concepts requiring explination
8. Best Practices & Patterns
Section Must Contain:
- Recommendations for structuring packages, versions & variants
- How to design reusable templates/functions
- Performance / scaling tips (e.g. for large numbers of packages or functions)
- Operational guidance: monitoring, logging, health checks
Currently Available Resources:
Gaps / additions Required:
- Package/variant organization patterns
- Best practices for reusable mutations/functions
- Monitoring/logging guides
More Detail on concepts requiring explination
9. Troubleshooting & FAQ
Section Must Contain:
- Common problems & their solutions
- Error messages & diagnostic steps
- Debugging tips / tools
- FAQ: questions new users often ask
Currently Available Resources:
Gaps / additions Required:
- FAQ page
- Error resolution page
- CLI diagnostic/debugging guide
More Detail on concepts requiring explination
10. Security & Compliance
Section Must Contain:
- Authentication & authorization: how Porch ensures secure access
- Secrets / credentials handling (for Git, registries, etc.)
- Security considerations for function runner / templates / untrusted code
- TLS, encryption in transit / at rest if applicable
Currently Available Resources:
- Git & Registry authentication (under How-Tos)
Gaps / additions Required:
- Security model for untrusted functions
- Secrets handling / rotation model
- RBAC requirements and guidance
More Detail on concepts requiring explination
[TLS IN CONTAINER REG’S]
[GIT REG AUTH IN PORCH REPOSITORIES RESOUCES]
[SELF SIGNED TLS IN PORCH SERVER]
[WEBHOOKS AND RBAC]
11. Glossary
Section Must Contain:
- Define domain‑specific or technical terms used throughout the docs (variant, package orchestration, mutation, etc.)
Currently Available Resources:
Gaps / additions Required:
- Term definitions + cross-links
More Detail on concepts requiring explination
12. Contributing
Section Must Contain:
- How to contribute (code, documentation)
- Developer setup (how to build and run Porch locally) — Porch has Setting up a local environment.
- Process for submitting changes, code review, governance
Currently Available Resources:
Gaps / additions Required:
- CONTRIBUTING.md page with PR process
- Code style conventions
- Maintainer guide / governance model
More Detail on concepts requiring explination
- [SIGNING CLA GUIDE/OTHER REQUIREMENTS ETC]
- [DEPLOY DEV ENV GUIDE]
- [LOCAL PORCH SERVER]
- [OPTIONS] CAN BASICALLY DESCRIBE THE settings in launch.json & settings.json
- [DBCACHE] …
- [CRCACHE] …
- [IN POD DEPLOYMENT]
- [RUN TESTS LOCALLY]
- [CREATE PR PROCEDURE]
- [COMMON PR GOTCHA’S] COULD BE COVERED BY A TEMPLATE
13. Release Notes / Changelog
Section Must Contain:
- What’s new in each release
- Breaking changes, deprecations
- Migration guides if necessary
Currently Available Resources:
- None found in public docs
Gaps / additions Required:
- Changelog per version
- Migration instructions
- Release tagging structure
More Detail on concepts requiring explination
Getting Started with Porch
Porch Architecture and its underlying components
Configuring porch deployments
Reference to the underlying porch cli and api
Best practices to follow when using porch
Trouble & FAQ Description
Security & Compliance Description