Troubleshooting
Search this page for the error text from your command output.
Existing cert-manager or Prometheus installation
Code
Your cluster already runs cert-manager, and the chart bundles its own. The quick start requires a cluster without an existing cert-manager installation. Use a dedicated cluster or discuss an alternative configuration with your Zuplo solutions architect.
The same error with monitoring.coreos.com CRDs means that the cluster has an
existing Prometheus Operator installation.
Missing image registry password
Code
Your credentials file was not passed to Helm, or was passed before the values file and overwritten.
Pass both files, credentials last:
Code
Missing certificate email address
Code
cert-manager.enabled is true but cert-manager.acme.email is empty. Set an
address that you monitor. The certificate authority sends expiration warnings
there.
Missing account name
Code
account.name is missing from zuplo-values.yaml. Copy it exactly from
Account Settings → General
(portal). The management
API rejects API keys whose account does not match this string.
HTTP-01 DNS lookup failure
The full string looks like this:
Code
Your DNS record does not exist yet, or cluster DNS cannot resolve it. cert-manager checks the challenge URL from inside the cluster before asking the certificate authority to validate it. A failed self-check doesn't consume the certificate authority's rate limit.
Check it:
Code
Create the missing record, pointing at the EXTERNAL-IP of
zuplo-haproxy-ingress. cert-manager retries on its own; no restart needed.
Certificate not ready after DNS resolves
Code
Check what the challenge says:
Code
If DNS resolves correctly, check the following possible causes:
-
The certificate authority can't reach port 80. HTTP-01 validation uses plain HTTP on port 80. Confirm that the ingress responds from outside your network:
CodeA
404or302means HAProxy is answering. A timeout means it is not. -
A proxy or external load balancer changes the HTTP-01 request or response. Configure it to forward
/.well-known/acme-challenge/*without authentication, caching, or response modification.
If neither cause applies, share the challenge status with your Zuplo solutions architect.
Management API authorization failure
Code
The request carried an API key, but the management API rejected it. The gateway
validates the key and then checks that its account matches account.name in
your values file. A valid key from another Zuplo account fails this check.
Compare what the cluster was installed with against Account Settings → General (portal):
Code
If they differ, correct account.name in zuplo-values.yaml and run
helm upgrade. If they match, the key itself may belong to a different account.
Create one under Account Settings → API Keys
(portal) while the right
account is active.
"detail": "No Authorization Header" means no key was sent at all. Set
ZUPLO_API_KEY in the environment the Zuplo CLI runs in.
Environment variables unavailable
Code
zuplo deploy stops before uploading the project. At this point, the CLI is
communicating with Zuplo rather than your management API, so this error doesn't
indicate a problem with your installation.
The project name comes from the project field in your zuplo.jsonc. Confirm a
project by that name exists in your account, and that the API key you are using
belongs to that same account.
Setting ZUPLO_ALLOW_DEPLOY_WITH_EMPTY_VARS=true forces the deploy through. The
gateway builds and serves traffic without environment variables, so any route
that reads one fails at runtime. Use this setting only to test the cluster.
Fallback ingress certificate
Code
HAProxy serves its fallback certificate when the requested hostname doesn't have an issued certificate.
Code
If the certificate isn't READY: True, follow the DNS troubleshooting steps on
this page.
Hostname missing from certificate
Code
cert-manager issues a certificate for each deployment hostname. A deployment can
report Ready before its certificate is available. Retry the request for up to
a minute.
If the error persists, run kubectl get certificate -n zuplo and follow the DNS
troubleshooting steps on this page.
ACME challenge probe redirects
Code
You probed a hostname that already has an Ingress. Those hosts redirect port 80 to HTTPS.
This redirect doesn't affect certificate issuance. cert-manager creates a separate challenge Ingress that continues to serve on port 80. To test the ingress, use a hostname with no Ingress, as described in Verify your install.
Failed to deploy the environment but the cluster shows the build succeeding
Code
The status polled by the Zuplo CLI might not reflect the build result inside a self-hosted cluster. The CLI can report a failure even when the build and gateway rollout succeed.
Confirm the result in the cluster:
Code
If these checks pass, the deployment succeeded. If the build Job failed or no Deployment appears, search this page for the reported error.
Builder Job fails after dependency installation
Code
The upload is missing its .zuplo/ directory. The Zuplo CLI generates
.zuplo/worker.ts and .zuplo/build.json, which the in-cluster compile step
needs. The archive extracts and npm install completes before this error, so
the final log line can look like a dependency failure.
The usual cause is a .zupignore that excludes .zuplo/. When a project has a
.zupignore, the CLI uses it without modification. The CLI removes .zuplo/
from .gitignore rules automatically, but it doesn't modify .zupignore.
Remove .zuplo/ from .zupignore, and then deploy again.
Read the complete Job log. The compiler error appears before the EMERGENCY
line:
Code
Builder Job pods are pending or rejected
The builder Job runs a privileged container because it builds container images.
A restricted Pod Security Standard on zuplo-system blocks it:
Code
Label the namespace for the privileged policy, or talk to your Zuplo solutions
architect about alternatives.
Deployments not found after Helm installation
Code
Look in the right namespace. The management plane runs in zuplo-system;
gateway deployments and every subchart run in zuplo.
Code
Container registry authorization failure
Code
helm registry login has not run, or the credential expired.
Code
The same credential pulls the chart and the component images. If pods remain in
ImagePullBackOff, check that zuploImageRegistry.password is set.
Gateway image pull failure
Code
The built image pushed successfully but the cluster cannot pull it back.
builder.registry credentials need both push and pull rights, and the
builder-secret is used for both.
Code
Kubernetes client version skew warning
Code
Upgrade kubectl before continuing. A client outside the supported version skew
can omit fields added by the server.