Porch Server

Configure the Porch API server component

The Porch server is the main API server component that handles package operations and Git repository interactions.

Configuration Options

Command Line Arguments

Core Server Arguments

args:
- --cache-directory=/cache/porch              # Directory for repository and package caches
- --cache-type=CR                             # Cache type: CR (Custom Resource) or DB (Database)
- --function-runner=function-runner:9445      # Function runner gRPC service address
- --max-request-body-size=6291456             # Max request body size in bytes (6MB)
- --standalone-debug-mode=false               # Local debugging mode (dev only)

Repository Management Arguments

args:
- --repo-sync-frequency=10m                  # Repository sync frequency
- --repo-operation-retry-attempts=3          # Retry attempts for repo operations
- --retryable-git-errors=pattern1,pattern2   # Additional retryable git error patterns
- --list-timeout-per-repo=20s                # Timeout per repository list request
- --max-parallel-repo-lists=10               # Max concurrent repository lists
- --use-user-cabundle=false                  # Enable custom CA bundle for Git TLS

Database Cache Arguments

args:
- --db-cache-driver=pgx                      # Database driver (pgx, mysql)
- --db-cache-data-source=connection-string   # Database connection string

Function Runtime Arguments

args:
- --default-image-prefix=ghcr.io/kptdev/krm-functions-catalog  # Default function image prefix

Environment Variables

Database Configuration (when using DB cache)

env:
- name: DB_DRIVER
  value: "pgx"                    # Database driver
- name: DB_HOST
  value: "postgresql.example.com" # Database host
- name: DB_PORT
  value: "5432"                   # Database port
- name: DB_NAME
  value: "porch"                  # Database name
- name: DB_USER
  value: "porch_user"             # Database user
- name: DB_PASSWORD
  value: "your_password"          # Database password
- name: DB_SSL_MODE
  value: "disable"                # SSL mode (optional)

Git Repository Authentication

For detailed Git repository authentication configuration, see Git Authentication subsection.

Webhook Certificate Management

For cert-manager integration with Porch webhooks, see Cert Manager Webhooks subsection.

Distributed Tracing

For Jaeger tracing configuration, see Jaeger Tracing subsection.

Resource Limits

resources:
  requests:
    memory: "256Mi"
    cpu: "100m"
  limits:
    memory: "512Mi"
    cpu: "500m"

Health Checks

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 30
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /readyz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 5

Git Authentication

Configure Git repository authentication for Porch Server

Cert Manager Webhooks

Configure cert-manager for automatic TLS certificate management in Porch webhooks

Jaeger Tracing

Configure distributed tracing with Jaeger for debugging and monitoring Porch Server operations