Documents
uninstalling-porch
uninstalling-porch
Type
External
Status
Published
Created
Mar 5, 2026
Updated
Mar 5, 2026
Source
View

Uninstalling Porch Server#

Navigate to the directory where you installed Porch:

cd porch-{{% params "latestTag" %}}

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)

{{% alert color="warning" title="Warning" %}}
Destroying Porch will not delete your Git repositories or the packages stored in them. However, PackageRevision and Repository resources in your cluster will be removed.
{{% /alert %}}

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-{{% params "latestTag" %}}

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.