Skip to main content
This page covers troubleshooting Pangolin Kubernetes deployments across Helm, Kustomize, Argo CD, and Flux workflows. Start with the core checks, then use the section that matches the symptom.

Core diagnostics

Set the namespace and release name used by your installation:

Helm diagnostics

Check the release:
Render the chart locally with your values file:
Preview an upgrade:
helm lint charts/pangolin is only useful when you are working inside the Helm chart repository. For normal installs, use helm template and helm upgrade --dry-run.

Kubernetes diagnostics

Check workloads and events:
Inspect a pod:
Check services, PVCs, and policies:

Traefik diagnostics

In controller mode, the chart uses Traefik CRDs such as IngressRoute. Check whether Traefik CRDs are installed:
Check rendered or applied Traefik resources:
Depending on your Traefik setup, also check:
kubectl get ingress is only useful if your selected deployment mode renders standard Kubernetes Ingress resources. In controller mode, use IngressRoute.

Database diagnostics

If you use CloudNativePG, first check that the CRD exists:
Then check CNPG resources:
If you use external PostgreSQL, verify the connection Secret:
Do not decode and paste database credentials into logs, screenshots, or issue reports.

Common issues and solutions

Symptoms
  • Gerbil pod crashes during a fresh install.
  • Logs mention missing setup data, missing exit node, or tunnel configuration not being ready.
  • Pangolin itself is not initialized yet.
CauseOn first install, Gerbil may start before Pangolin has completed the initial setup. The chart supports gerbil.startupMode for this case.ResolutionUse delayed startup for the first install:
Install or upgrade with the values file:
After Pangolin setup is complete, switch Gerbil to normal startup:
Check Gerbil resources:
Symptoms
  • Gerbil pod does not start.
  • Events mention Pod Security Admission.
  • Events mention forbidden capabilities.
  • Logs or events mention NET_ADMIN.
CauseGerbil requires the NET_ADMIN Linux capability for WireGuard interface management. A namespace using a restricted Pod Security profile can block this.ResolutionCheck namespace labels:
For a namespace running Gerbil, use a policy profile that allows the required capability. Example:
Then restart the affected pods:
Do not use a restricted Pod Security profile for Gerbil unless you have validated the selected chart mode and security context. Removing NET_ADMIN breaks WireGuard management.
Symptoms
  • The dashboard URL does not load.
  • Browser shows timeout, bad gateway, 404, or TLS error.
  • API path /api/v1 fails while the dashboard path works, or the reverse.
Common causes
  • DNS points to the wrong load balancer or ingress endpoint.
  • Traefik CRDs are missing.
  • Traefik controller is not watching the namespace or selector labels.
  • IngressRoute host does not match the dashboard URL.
  • API route was changed and no longer matches PathPrefix(/api/v1).
  • TLS resolver or TLS Secret is misconfigured.
ChecksCheck DNS:
Check Traefik CRDs:
Check IngressRoute resources:
Check the rendered values:
Check Traefik logs. Adjust the namespace and label selector to your Traefik installation:
Temporary local check for the dashboard/UI service port:
Then open:
The dashboard/UI port is 3002. The API/external port is 3000. Port-forward 3002 when checking the dashboard locally.
Symptoms
  • IngressRoute is created but TLS does not work.
  • Traefik logs mention TLS configuration problems.
  • Certificate is not issued or the TLS Secret is not found.
CauseThe dashboard IngressRoute TLS configuration should use either a Traefik certificate resolver or an existing TLS Secret.ResolutionUse Traefik ACME certificate resolver:
Or use an existing TLS Secret:
Verify the Secret if using secretName:
certResolver is a Traefik ACME resolver setting. It is not a cert-manager issuer reference.
Symptoms
  • Newt shows repeated connection or tunnel errors.
  • Tunnel traffic does not pass.
  • WireGuard UDP ports are unreachable from the Newt location.
Common causes
  • pangolin.config.gerbil.base_endpoint points to the wrong host.
  • Gerbil Service is not exposed as expected.
  • External firewall blocks UDP traffic.
  • NetworkPolicy blocks the required traffic.
  • pangolin.config.gerbil.start_port and gerbil.ports.wg1 are not aligned.
  • pangolin.config.gerbil.clients_start_port and gerbil.ports.wg2 are not aligned.
ChecksCheck Gerbil Service:
Check Gerbil values:
Check NetworkPolicies:
Verify external firewall rules for the configured UDP ports.
Symptoms
  • Newt peers do not establish stable handshakes.
  • Tunnel traffic drops even though Gerbil pods are healthy.
  • Logs show connection resets or malformed upstream traffic.
CauseProxy protocol handling is inconsistent between the upstream hop and Gerbil.
If Gerbil is exposed through a reverse proxy or UDP gateway, keep proxy protocol settings aligned end-to-end. Do not enable proxy protocol on the upstream hop unless Gerbil is configured to accept it.
ChecksCheck endpoint and port alignment:
Check Gerbil logs:
Check Service exposure:
Symptoms
  • Pangolin pod crashes.
  • Logs mention database connection errors.
  • Events mention missing Secret or missing Secret key.
Causedatabase.mode=external needs a valid database connection Secret unless the chart is configured to generate one from values.ResolutionCreate a connection Secret:
Reference it in values:
Check the Secret:
Do not put database passwords directly in values files for production. Use an existing Secret or your normal secret-management workflow.
Symptoms
  • CNPG Cluster resource is missing.
  • CNPG pods do not start.
  • Pangolin cannot connect to the generated CNPG database.
  • Secret such as pangolin-db-app is missing.
Common causes
  • CloudNativePG CRDs/operator are not installed.
  • cnpg-cluster.enabled is false when you expected the chart to create a cluster.
  • cnpg-operator.enabled is false and no operator exists.
  • database.cloudnativepg.cluster.name does not match the CNPG cluster name.
  • StorageClass or PVC provisioning fails.
ChecksCheck CRDs:
Check CNPG operator pods:
Check CNPG Cluster:
Check PVCs and Secrets:
Expected naming when using the default example:
Symptoms
  • DNS lookups fail.
  • Pangolin cannot connect to the database.
  • Controller cannot reach the Kubernetes API.
  • Gerbil or Newt traffic does not work.
  • External services such as SMTP, OIDC, or webhooks time out.
CauseThe chart can render NetworkPolicies. If your CNI enforces them, missing egress or ingress rules can break required paths.Checks
Check whether DNS is allowed:
Check database egress:
Check controller API access:
For external integrations, add scoped egress rules for the required services instead of allowing broad egress.For a temporary isolation test, disable NetworkPolicy and re-apply:
If this fixes the issue, re-enable policies and add the missing rules.
Symptoms
  • Pangolin pod restarts repeatedly.
  • Pod stays Pending.
  • Readiness never becomes true.
ChecksFind the pod:
Inspect it:
Check PVCs:
Common causes:
Do not assume tools such as psql, curl, or dig are available inside the Pangolin container. Use logs, Events, or a temporary debug pod when needed.
Run a temporary debug pod for network tests:
Symptoms
  • Helm template or install succeeds, but Traefik resources are not reconciled.
  • kubectl get ingressroute fails with unknown resource type.
  • Argo CD or Flux reports missing kind IngressRoute.
CauseController mode expects Traefik CRDs and a Traefik controller. They must be installed separately or through the bundled dependency when enabled.Checks
If you want the chart to install the bundled Traefik controller, enable it:
If Traefik is already installed elsewhere, keep it disabled and make sure the controller watches the namespace and labels used by the Pangolin IngressRoute.
Symptoms
  • helm upgrade fails.
  • Rendered resources changed unexpectedly.
  • Existing resources conflict with chart-managed resources.
  • GitOps reports immutable field changes or ownership conflicts.
ChecksRender before upgrading:
Run a server-side dry run:
Compare the current live release:
Check ownership conflicts:
Avoid --force unless you understand which resources will be recreated.
helm upgrade --force can delete and recreate resources. That can interrupt traffic and may affect persistent workloads depending on the resource type.
Symptoms
  • Kustomize build succeeds but changes are missing.
  • Patch target does not match any resource.
  • Patch breaks after chart upgrade.
ChecksList generated resource names:
Validate the overlay:
Run a server-side dry run:
Preview live changes:
Use modern Kustomize patches syntax:
For Helm-rendered bases, do not assume resource names. Check the rendered manifests after each chart upgrade.
Symptoms
  • Argo CD Application is OutOfSync or Degraded.
  • Flux HelmRelease or Kustomization is not Ready.
  • Resources are missing or constantly reverted.
Argo CD checks
Flux checks
Reconcile manually:
Common causes:
  • chart repository or OCI source not reachable
  • wrong chart version
  • missing CRDs
  • invalid values
  • rendered resource ownership conflict
  • Secret not available in the expected namespace

Routing issues to the right repository

Use the repository that matches the failing area:

Before opening an issue, collect

Collect this information before opening an issue:
  • chart version
  • Pangolin app version
  • Kubernetes version
  • Helm version
  • deployment method: Helm, Kustomize, Argo CD, or Flux
  • sanitized values file
  • pod logs
  • namespace events
  • Traefik logs, if routing is involved
  • rendered manifests from helm template or kustomize build
  • Helm release status or GitOps sync status
  • reproduction steps
Collect basic diagnostics:
Before sharing diagnostics, remove:
  • database passwords
  • SERVER_SECRET
  • API keys
  • OAuth/OIDC client secrets
  • TLS private keys
  • internal hostnames, if sensitive

Useful command reference

Next steps

Pangolin Configuration

Review Pangolin chart options.

Helm Quick-Start

Install Pangolin with Helm.

Kustomize Quick-Start

Install Pangolin with rendered manifests and Kustomize overlays.

GitOps Overview

Deploy Pangolin with Argo CD or Flux.