Core diagnostics
Set the namespace and release name used by your installation:Helm diagnostics
Check the release: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:Traefik diagnostics
In controller mode, the chart uses Traefik CRDs such asIngressRoute.
Check whether Traefik CRDs are installed:
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:Common issues and solutions
Gerbil fails during the first install
Gerbil fails during the first install
- 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.
gerbil.startupMode for this case.ResolutionUse delayed startup for the first install:Gerbil is blocked by Pod Security Admission
Gerbil is blocked by Pod Security Admission
- Gerbil pod does not start.
- Events mention Pod Security Admission.
- Events mention forbidden capabilities.
- Logs or events mention
NET_ADMIN.
NET_ADMIN Linux capability for WireGuard interface management. A namespace using a restricted Pod Security profile can block this.ResolutionCheck namespace labels:Dashboard is not reachable through IngressRoute
Dashboard is not reachable through IngressRoute
- The dashboard URL does not load.
- Browser shows timeout, bad gateway, 404, or TLS error.
- API path
/api/v1fails while the dashboard path works, or the reverse.
- DNS points to the wrong load balancer or ingress endpoint.
- Traefik CRDs are missing.
- Traefik controller is not watching the namespace or selector labels.
IngressRoutehost does not match the dashboard URL.- API route was changed and no longer matches
PathPrefix(/api/v1). - TLS resolver or TLS Secret is misconfigured.
3002. The API/external port is 3000. Port-forward 3002 when checking the dashboard locally.TLS certResolver and secretName conflict
TLS certResolver and secretName conflict
IngressRouteis created but TLS does not work.- Traefik logs mention TLS configuration problems.
- Certificate is not issued or the TLS Secret is not found.
IngressRoute TLS configuration should use either a Traefik certificate resolver or an existing TLS Secret.ResolutionUse Traefik ACME certificate resolver:secretName:certResolver is a Traefik ACME resolver setting. It is not a cert-manager issuer reference.Newt cannot reach Gerbil WireGuard ports
Newt cannot reach Gerbil WireGuard ports
- Newt shows repeated connection or tunnel errors.
- Tunnel traffic does not pass.
- WireGuard UDP ports are unreachable from the Newt location.
pangolin.config.gerbil.base_endpointpoints 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_portandgerbil.ports.wg1are not aligned.pangolin.config.gerbil.clients_start_portandgerbil.ports.wg2are not aligned.
Gerbil is behind reverse proxy or UDP gateway and tunnels fail
Gerbil is behind reverse proxy or UDP gateway and tunnels fail
- Newt peers do not establish stable handshakes.
- Tunnel traffic drops even though Gerbil pods are healthy.
- Logs show connection resets or malformed upstream traffic.
External database mode missing or invalid Secret
External database mode missing or invalid Secret
- Pangolin pod crashes.
- Logs mention database connection errors.
- Events mention missing Secret or missing Secret key.
database.mode=external needs a valid database connection Secret unless the chart is configured to generate one from values.ResolutionCreate a connection Secret:CloudNativePG cluster does not provision
CloudNativePG cluster does not provision
- CNPG Cluster resource is missing.
- CNPG pods do not start.
- Pangolin cannot connect to the generated CNPG database.
- Secret such as
pangolin-db-appis missing.
- CloudNativePG CRDs/operator are not installed.
cnpg-cluster.enabledis false when you expected the chart to create a cluster.cnpg-operator.enabledis false and no operator exists.database.cloudnativepg.cluster.namedoes not match the CNPG cluster name.- StorageClass or PVC provisioning fails.
NetworkPolicy blocks DNS, database, controller, or tunnel traffic
NetworkPolicy blocks DNS, database, controller, or tunnel traffic
- 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.
Pangolin pod is CrashLoopBackOff or Pending
Pangolin pod is CrashLoopBackOff or Pending
- Pangolin pod restarts repeatedly.
- Pod stays Pending.
- Readiness never becomes true.
psql, curl, or dig are available inside the Pangolin container. Use logs, Events, or a temporary debug pod when needed.Traefik CRDs or resources are missing
Traefik CRDs or resources are missing
- Helm template or install succeeds, but Traefik resources are not reconciled.
kubectl get ingressroutefails with unknown resource type.- Argo CD or Flux reports missing kind
IngressRoute.
IngressRoute.Helm upgrade fails or rendered output is unexpected
Helm upgrade fails or rendered output is unexpected
helm upgradefails.- Rendered resources changed unexpectedly.
- Existing resources conflict with chart-managed resources.
- GitOps reports immutable field changes or ownership conflicts.
--force unless you understand which resources will be recreated.Kustomize patches do not apply
Kustomize patches do not apply
- Kustomize build succeeds but changes are missing.
- Patch target does not match any resource.
- Patch breaks after chart upgrade.
patches syntax:GitOps deployment does not sync
GitOps deployment does not sync
- Argo CD Application is OutOfSync or Degraded.
- Flux HelmRelease or Kustomization is not Ready.
- Resources are missing or constantly reverted.
- 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 templateorkustomize build - Helm release status or GitOps sync status
- reproduction steps
- database passwords
SERVER_SECRET- API keys
- OAuth/OIDC client secrets
- TLS private keys
- internal hostnames, if sensitive

