Documents
catalog-deployment
catalog-deployment
Type
External
Status
Published
Created
Mar 5, 2026
Updated
Mar 20, 2026
Updated by
Dosu Bot
Source
View

This guide covers deploying Porch in production environments using the Nephio catalog.

Configuration Planning#

Before deploying Porch, determine which features you need.

Cache Mode Selection#

Choose your cache backend based on deployment scale and requirements:

  • CR Cache (default): Development and small deployments (<100 repositories)
  • DB Cache: Production deployments requiring scale and reliability

{{% alert title="Important" color="warning" %}}
If using DB Cache, you must configure database settings for both Porch Server and Repository Controller before deployment. See [Cache Configuration]({{% relref "/docs/6_configuration_and_deployments/configurations/cache" %}}) for complete setup instructions including database initialization.
{{% /alert %}}

Optional Pre-deployment Configuration#

These optional features must be configured before deployment if you need them:

Porch Server#

  • [Cert-Manager Webhooks]({{% relref "../configurations/components/porch-server-config/cert-manager-webhooks" %}}) - Enable cert-manager webhook integration (requires deployment env vars)
  • [Jaeger Tracing]({{% relref "../configurations/components/porch-server-config/jaeger-tracing" %}}) - Enable distributed tracing (requires deployment env vars)
  • [Git Custom TLS]({{% relref "../configurations/components/porch-server-config/git-authentication#3-httpstls-configuration" %}}) - Enable custom TLS certificates for Git repositories (requires --use-git-cabundle=true arg)

Function Runner#

  • [Private Registries]({{% relref "../configurations/components/function-runner-config/private-registries-config" %}}) - Configure private container registries (requires deployment args and volume mounts)

Post-deployment Configuration#

These features can be configured after deployment:

  • [Git Authentication]({{% relref "../configurations/components/porch-server-config/git-authentication" %}}) - Configure Porch Server authentication for private Git repositories

{{% alert title="Note" color="primary" %}}
[Repository Sync]({{% relref "../configurations/repository-sync" %}}) configuration is currently located in the system configuration section but should be moved to a more logical location as it's about configuring individual Repository resources, not system-wide settings.
{{% /alert %}}

Prerequisites#

  • Kubernetes cluster (v1.25+)
  • kubectl configured for your cluster
  • kpt CLI tool
  • Cluster admin permissions

Installation Steps#

1. Get the Porch Package#

kpt pkg get https://github.com/nephio-project/catalog/tree/main/nephio/core/porch

2. Customize Configuration (Optional)#

If you need any pre-deployment features from the Configuration Planning section above, modify the package now:

cd porch/

# Example: Configure database cache for Porch Server
kpt fn eval --image gcr.io/kpt-fn/set-annotations:v0.1 -- \
  annotations='cache-type=DB'

# Review your changes
kpt pkg tree

3. Render and Apply#

# Render the package with any customizations
kpt fn render porch

# Initialize the package for lifecycle management
kpt live init porch

# Apply to your cluster
kpt live apply porch

Verification#

Check Pod Status#

Verify all Porch components are running:

kubectl get pods -n porch-system

Expected output:

NAME READY STATUS RESTARTS AGE
function-runner-xxx-xxx 1/1 Running 0 2m
function-runner-xxx-xxx 1/1 Running 0 2m
porch-controllers-xxx-xxx 1/1 Running 0 2m
porch-server-xxx-xxx 1/1 Running 0 2m

Verify API Resources#

Confirm Porch CRDs are registered:

kubectl api-resources | grep porch

Troubleshooting#

Common Issues#

Pods not starting:

kubectl describe pods -n porch-system
kubectl logs -n porch-system -l app=porch-server

CRDs not registered:

kubectl get crd | grep porch

Getting Help#

For additional support: