Uninstalling Porch

Guide for removing Porch from your Kubernetes cluster.

Uninstalling Porch Server

Navigate to the directory where you installed Porch:

cd porch-1.5.6

Remove Porch components using kpt:

kpt live destroy

This will delete all Porch resources from your cluster, including:

  • Porch server deployment
  • Function runner deployment
  • Porch controllers deployment
  • Services, ConfigMaps, and Secrets
  • Custom Resource Definitions (CRDs)

Verify Uninstallation

Check that Porch components are removed:

kubectl get all -n porch-system

You should see:

No resources found in porch-system namespace.

Verify Porch API resources are removed:

kubectl api-resources | grep porch

This should return no results.

Uninstalling porchctl CLI

Remove the porchctl binary from your system:

If installed to /usr/local/bin/ (requires root):

sudo rm /usr/local/bin/porchctl

If installed to ~/.local/bin/:

rm ~/.local/bin/porchctl

Remove autocompletion (if configured):

rm ~/.local/share/bash-completion/completions/porchctl

Verify CLI Removal

Check that porchctl is no longer available:

porchctl version

You should see:

bash: porchctl: command not found

Clean Up Installation Files

Remove the downloaded Porch package directory:

cd ..
rm -rf porch-1.5.6

Troubleshooting

Resources not deleting

If kpt live destroy hangs or fails:

  1. Check for finalizers blocking deletion:

    kubectl get packagerevisions -A -o yaml | grep finalizers
    
  2. Force delete stuck resources:

    kubectl delete packagerevisions --all -A --force --grace-period=0
    kubectl delete repositories --all -A --force --grace-period=0
    
  3. Manually delete the namespace:

    kubectl delete namespace porch-system --force --grace-period=0
    

CRDs remain after uninstall

If Porch CRDs are still present:

kubectl get crds | grep porch

Manually delete them:

kubectl delete crd packagerevisions.porch.kpt.dev
kubectl delete crd packagerevisionresources.porch.kpt.dev
kubectl delete crd repositories.config.porch.kpt.dev
kubectl delete crd functions.config.porch.kpt.dev
kubectl delete crd packagevariants.config.porch.kpt.dev
kubectl delete crd packagevariantsets.config.porch.kpt.dev

Complete Cluster Cleanup

If you’re using a local test cluster (kind/minikube) and want to start fresh:

kind:

kind delete cluster

minikube:

minikube delete

This removes the entire cluster, including Porch and all other resources.