-
My goal: Deploy retool locally on K8s
-
Issue: The retool-workflow-backend pods won't start because
BASE_DOMAINis not set -
Retool version & hosting setup (Docker, K8s, cloud provider, etc.):
Retool v. 3.196.7
Deployed via K8s on an EC2 instance -
Error message(s) or screenshots:
Starting the worker backend:
2025-07-21 10:09:41.152 Exiting...
2025-07-21 10:09:41.152 at async u$w (/retool_backend/bundle/main.js:11351:30405)
2025-07-21 10:09:41.152 at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
2025-07-21 10:09:41.152 at p$w (/retool_backend/bundle/main.js:11351:31682)
2025-07-21 10:09:41.152 Error: Failed to start up due to configuration issues. Errors:BASE_DOMAINenvironment variable is required for security reasons. See General environment variables | Retool Docs
2025-07-21 10:09:41.151 Encountered error
(Note: output is in reverse order because pulled out of Grafana)
- What I’ve tried so far:
I deployed the application using the Helm Chart. The helm chart has these settings in the values YAML:
env:
BASE_DOMAIN: "https://retool.ec2-blah-blah-blah-blah.compute-1.amazonaws.com"
ALLOW_SAME_ORIGIN_OPTION: true
I deploy the Helm, and pull the retool-workflow-backend.yml file from the cluster, and observe its environment configuration:
spec > template > spec > containers > name: workflow-backend
- name: ALLOW_SAME_ORIGIN_OPTION
value: "true"
- name: BASE_DOMAIN
value: https://retool.ec2-blah-blah-blah-blah.compute-1.amazonaws.com
amongst many other values. Given that, it appears the helm chart is configured and deployed properly (note, if I pull ymls for the Pod I get the same results). However, the workflow backend pod fails to start with the above error. In addition, the output from startup shows this set of Environment Variables:
Environment variables:
ACCESS_TOKEN_COOKIE_NAME: accessToken
ACTIVE_PAGE_SAVE_PROCESSOR_QUEUE: azure
AIRGAPPED: false
ALLOW_SAME_ORIGIN_OPTION: false
API_CALLS_PER_MIN: 300
APPS_FS_SYNC_ON: false
APPS_FS_SYNC_WATCHER: false
AUDIT_INSERT_TIMEOUT_SECONDS: 20
AUDIT_SELECT_TIMEOUT_SECONDS: 20
AUDIT_TRAILS_FILTER_DEFAULT_DAYS: 7
AUDIT_TRAILS_POSTGRES_PORT: 5432
AUTH_REQS_PER_MINUTE: 60
BACKEND_API_PORT: undefined
BAZEL_TEST_ENV: false
BOOTSTRAP_FROM_SOURCE: false
CACHE_CONTROL_PRIVATE: false
...
I will call out that the ALLOW_SAME_ORIGIN variable is different than what I set, and that the BASE_DOMAIN is not there. So it seems the running container does not actually get its environment from the Helm chart / K8s manifest. Any help on getting these values set properly?