Skip to main content
Use this guide to troubleshoot Newt Kubernetes deployments installed with Helm, Kustomize, Argo CD, or Flux. Start with the basic checks, then move to the section that matches the symptom.

Quick checks

Set the namespace and release name used by your installation:
Check the Helm release:
Check Newt pods:
Check recent events:
Check logs:
Check the applied Helm values:
Do not assume the pod or Deployment name. Chart-generated names can change with the Helm release name, instance name, nameOverride, or fullnameOverride.

Get the generated resource names

List Newt resources:
List pods with labels:
Store the first Newt pod name:
Then use:

Pod fails to start

Symptoms

Check pod details

Check logs:
If the container restarts quickly, check the previous logs:

Common causes

Secret issues

Verify the Secret exists

Check Secret keys

The default keys are:
If your Secret uses different key names, map them in values:
Do not paste decoded secrets into issue reports, logs, screenshots, or public repositories.

Check which Secret the pod uses

Also inspect explicit Secret references:

Newt cannot reach Pangolin

Test DNS from the Newt pod

Test HTTPS from the Newt pod

Depending on the image, curl, wget, nc, or nslookup may not be available. If needed, run a temporary debug pod in the same namespace:
Then test:

Common causes

Newt pod is running but site is offline

Check logs:
Check the site in the Pangolin dashboard. Verify:
  • the site credentials belong to the same site
  • the site was not deleted or regenerated in Pangolin
  • PANGOLIN_ENDPOINT points to the correct Pangolin URL
  • the cluster can resolve and reach the Pangolin endpoint
  • outbound HTTPS is allowed from the Newt namespace
  • the Secret is in the same namespace as the Newt workload
If you use provisioning, also verify:
  • provisioningKey is valid
  • newtName is set as expected
  • configPersistence.enabled=true
  • the configured CONFIG_FILE path is writable

Provisioning issues

Provisioning requires writable config persistence.

Symptoms

  • Newt starts but does not keep generated credentials after restart.
  • Newt provisions repeatedly.
  • Logs mention config file or write errors.
  • Pod restarts cause the site to appear as a new or unconfigured instance.

Check values

Provisioning example:
For durable state, use an existing PVC:
emptyDir is recreated when the pod is recreated. Use a PVC if the generated configuration must survive pod replacement.

Service not created or not reachable

Important behavior

acceptClients does not create a Service. A Service is created through:
The chart also has service.enabledWhenAcceptClients, but runtime client behavior and Service rendering should still be verified in the rendered manifests.

Check Services

Describe the Service:

LoadBalancer stuck in pending

Common causes:
  • the cluster has no cloud load balancer integration
  • bare-metal cluster without MetalLB or equivalent
  • cloud provider quota or permission issue
  • invalid loadBalancerClass
  • invalid loadBalancerSourceRanges
For bare-metal clusters, use MetalLB or another load balancer implementation, or use NodePort if appropriate.

Metrics scraping does not work

Metrics are disabled by default. Enable metrics:
The chart default admin address is:
This listens on all interfaces and allows in-cluster scraping. Do not set it to 127.0.0.1:2112 if Prometheus scrapes from another pod.

Metrics Service

Enable the metrics Service:

ServiceMonitor

If you use Prometheus Operator:
Check resources:
The chart has separate metrics values for container port, admin address, and metrics Service port. Check the rendered manifest when changing these values.

NetworkPolicy blocks traffic

If NetworkPolicy is enabled, check that the policy allows required egress. Newt usually needs egress to:
  • DNS
  • Pangolin endpoint over HTTPS
  • any tunnel or connectivity endpoints used by your deployment
Check policies:
If DNS is blocked, enable or add DNS egress rules. Example:
If HTTPS egress is blocked, add an appropriate custom egress rule for your environment.

Multiple Newt instances conflict

Symptoms

  • Multiple pods run, but only one site connects.
  • Both instances use the same credentials.
  • A site appears to flap between instances.
  • Logs show authentication or registration conflicts.

Check values

Each instance should use its own credentials or provisioning identity:
Create separate Secrets:

RBAC or service account issues

Chart 1.4.0 disables RBAC creation by default. Check service account and RBAC:
If your configuration requires Kubernetes API access, enable RBAC:
For most Newt deployments, RBAC is not required.

High CPU or memory usage

Check resource usage:
Check current resource settings:
Tune resources in values:
Then upgrade:
Common causes of high usage:
  • high tunnel traffic
  • too low resource limits
  • repeated reconnect loops
  • excessive debug logging
  • MTU or network path issues

MTU issues

Symptoms

  • Connections establish but large transfers fail.
  • Some websites or services work, others hang.
  • Logs show repeated reconnects.
  • Throughput is much lower than expected.
Newt defaults to MTU 1280. Try another MTU only after confirming basic connectivity:
Upgrade after changing values:

Helm debugging

Preview an upgrade:
Render the chart locally:
Show rendered manifests from the live release:
Show values from the live release:
Rollback:

Kustomize debugging

Validate the overlay:
Run a server-side dry run:
Preview live changes:
If a patch does not apply, inspect generated resource names:

Collect diagnostics

Collect logs and resource information:
If using Kustomize:
Before sharing diagnostics, remove:
  • Newt credentials
  • provisioning keys
  • TLS private keys
  • tokens
  • passwords
  • internal hostnames if sensitive

Next steps

Configuration

Review Newt chart options.

Helm Install

Install Newt with Helm.

Kustomize Install

Install Newt with rendered manifests and Kustomize overlays.

GitOps

Deploy Newt with Argo CD or Flux.