Skip to content

[INF-8330] Fqdn service hosts - #411

Closed
justinyang-retool wants to merge 6 commits into
mainfrom
fqdn-service-hosts
Closed

justinyang-retool wants to merge 6 commits into
mainfrom
fqdn-service-hosts

Conversation

@justinyang-retool

Copy link
Copy Markdown
Contributor

Making the fix mentioned in PR #409, but with tests added (since I can't push to that contributor fork)

eabrouwer3 and others added 6 commits October 20, 2026 12:18
The backend's HTTP client resolves hosts with cacheable-lookup, which calls
dns.resolve4/resolve6 (c-ares) and never applies the resolv.conf search
list. A bare service name such as `retool-code-executor` only works today
because most cluster DNS servers answer it with NXDOMAIN, which makes
cacheable-lookup fall back to dns.lookup. EKS Auto Mode's DNS answers
REFUSED and AKS's answers SERVFAIL, so the fallback never runs and the
backend crash-loops with "Could not detect healthy Code Executor".

Append `.<namespace>.svc.cluster.local` to every in-cluster service URL
and host the chart passes to Retool, matching the agent-sandbox proxy URL
the chart already builds this way.

Fixes #348.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Add a clusterDomain value (default cluster.local) and a retool.serviceDomain
helper, and build every in-cluster service address from it, including the
existing agent-sandbox proxy URL. Hard-coding svc.cluster.local would break
clusters with a different DNS domain, where the bare names used to resolve
through the search list.

Also qualify WORKFLOW_BACKEND_HOST and JS_EXECUTOR_INGRESS_DOMAIN in the
separate app-serving layer, which the previous commit missed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The new serviceDomain helper sat between "Set Temporal frontend host" and
the helper that comment describes, with a docstring that only restated
what the helper's one line does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: gpt-6.1-sol <codex@openai.com>
@justinyang-retool
justinyang-retool deleted the fqdn-service-hosts branch October 27, 2026 20:42
@greptile-apps

greptile-apps Bot commented Oct 27, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 4/5

[Medium impact] The change reaches internal service connections across the Retool chart.

The PR appears safe to merge, with a non-blocking request to test custom service domains and namespaces.

Findings

  1. P2 Custom service addresses lack tests ▶

Reviews (1) · Last reviewed commit: "Fix breaking test" · Reviewed by Greptile

self.assertEqual(ingress_routes(output), INGRESS_DIRECT)
self.assertEqual(http_routes(output), HTTP_DIRECT)
self.assertIn('value: "http://routing-retool-mcp:4010"', manifest(output, "deployment_backend.yaml"))
self.assertIn('value: "http://routing-retool-mcp.default.svc.cluster.local:4010"', manifest(output, "deployment_backend.yaml"))

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Custom service addresses lack tests

This assertion checks only MCP with the default namespace and clusterDomain. It would still pass if retool.serviceDomain hardcoded both values, and it does not check the other changed service URLs.

Add render tests with a non-default namespace and clusterDomain, covering backend and worker URLs plus the sandbox and bundled Temporal defaults. Also check that explicit URL overrides still win. This is non-blocking, but it would catch broken addresses that the current test misses.

Knowledge Base Used: Helm validation coverage

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants