This page covers common failures when deploying the Tyk Developer Portal on Kubernetes. For installation steps and configuration, see Install Developer Portal on Kubernetes.Documentation Index
Fetch the complete documentation index at: https://tyk.io/docs/llms.txt
Use this file to discover all available pages before exploring further.
Bootstrap Job Fails: Pod Security Standards Violation
Symptom:helm install completes but the bootstrap job fails with a security policy error, for example:
values.yaml. Clusters enforcing the Kubernetes PSS Restricted or Baseline profiles will reject it.
Fix: Disable the automatic bootstrap job and bootstrap the portal manually:
- Set
global.components.bootstrap: falsein yourvalues.yamland runhelm upgrade. - Wait for the Portal pod to be ready:
- Send the bootstrap request to create the bootstrap admin user:
This is a known limitation in the Helm chart. The bootstrap job template does not yet support security context configuration. Use
global.components.bootstrap: false and bootstrap manually as described above.Portal Pod Crash-Looping
Symptom: The Portal pod restarts repeatedly. Inspect the pod state and logs:Probe Timeouts: Pod Killed Before Startup Completes
Symptom: Kubernetes terminates the pod before it finishes starting. Logs show:/ready endpoint performs a live database ping on every probe check. Short-lived database latency (TLS handshake overhead or connection pool delays) can cause the probe to time out, triggering Kubernetes to restart the pod before it has fully initialized.
Fix: Increase the probe delays and thresholds in your values.yaml:
initialDelaySeconds further (e.g., 300).
PostgreSQL Date Format Mismatch
Symptom: The pod entersCrashLoopBackOff immediately after starting, even though the database is reachable. Logs contain:
DateStyle is not set to ISO.
Fix: Append datestyle and lc_time options to your database.connectionString in values.yaml.
For a DSN-format connection string:
License Key Not Set
If the Portal is started without a valid Tyk license, it logs the following at startup:| Log message | Meaning |
|---|---|
Initializing license: license is empty | license field is missing or empty in values.yaml |
Initializing license: token not valid | License key is set but malformed or expired |
Licensing: license is invalid | Periodic background check; license failed validation |
license field in your values.yaml. If using a Kubernetes secret, confirm the secret contains a DevPortalLicense key and that useSecretName references it:
Environment Variables Not Taking Effect
Symptom: Configuration set viaextraEnvs (such as PORTAL_STORAGE or PORTAL_DATABASE_DIALECT) is not reflected at runtime. The Portal continues using previous values.
Cause: The Helm chart generates environment variables for certain fields (including storage type and database dialect) from its own templated values. Variables passed through extraEnvs may be overridden by these chart-generated values.
Fix: Use the chart’s native fields in values.yaml instead of extraEnvs for these settings:
Instead of extraEnvs | Use directly in values.yaml |
|---|---|
PORTAL_STORAGE=db | storage.type: db |
PORTAL_DATABASE_DIALECT=postgres | database.dialect: postgres |
extraEnvs for configuration options that have no direct Helm chart equivalent.