K8s: Retool Worker Backend not getting Environment Variables from YAML?

  1. My goal: Deploy retool locally on K8s

  2. Issue: The retool-workflow-backend pods won't start because BASE_DOMAIN is not set

  3. Retool version & hosting setup (Docker, K8s, cloud provider, etc.):
    Retool v. 3.196.7
    Deployed via K8s on an EC2 instance

  4. 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_DOMAIN environment 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)

  1. 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?

This was resolved.

I believe the Grafana output was old... it seems like nothing was getting logged when the pod wouldn't start. I ended up changing the ingress from https://retool.ec2...com to https://ec2...com/retool set the ALLOW_SAME_ORIGIN_OPTION to false (default), and made sure the secure cookie option was true. Between those changes the Worker Backend starts.