Skip to content

feat: dual hostname generation for platform.sei.io#74

Merged
bdchatham merged 2 commits intomainfrom
feat/public-dns-dual-hostname
Apr 10, 2026
Merged

feat: dual hostname generation for platform.sei.io#74
bdchatham merged 2 commits intomainfrom
feat/public-dns-dual-hostname

Conversation

@bdchatham
Copy link
Copy Markdown
Collaborator

Summary

  • Add SEI_GATEWAY_PUBLIC_DOMAIN (required) to platform config
  • Each HTTPRoute now emits two hostnames: one for the internal domain (prod.platform.sei.io) and one for the public domain (platform.sei.io)
  • Hostname format: {name}-{protocol}.{domain} for internal, {name}-{protocol}.{namespace}.{publicDomain} for public
  • Example: pacific-1-wave-rpc.prod.platform.sei.io + pacific-1-wave-rpc.pacific-1.platform.sei.io

Breaking change

The existing hostname format changed from {name}.{protocol}.{domain} (dot-separated) to {name}-{protocol}.{domain} (hyphen-delimited) for both domains. Existing SeiNodeDeployments with routes need redeployment.

Files changed

  • internal/platform/platform.goGatewayPublicDomain field + validation
  • internal/platform/platformtest/config.go — test fixture
  • internal/controller/nodedeployment/controller.go — reconciler field
  • cmd/main.go — env var wiring
  • internal/controller/nodedeployment/networking.go — dual hostname generation in resolveEffectiveRoutes
  • internal/controller/nodedeployment/networking_test.go — updated assertions, pacific-1-wave test naming

Dependencies

  • Requires sei-protocol/platform#71 (Route53 zone, certs, Gateway listeners) to be deployed first
  • After merging, deploy updated controller image with SEI_GATEWAY_PUBLIC_DOMAIN=platform.sei.io

Test plan

  • All unit tests pass (make test)
  • Lint clean (make lint)
  • After deploy: kubectl get httproute -A -o yaml | grep platform.sei.io shows dual hostnames
  • curl https://pacific-1-rpc-rpc.pacific-1.platform.sei.io/status returns 200

🤖 Generated with Claude Code

bdchatham and others added 2 commits April 10, 2026 12:37
Add SEI_GATEWAY_PUBLIC_DOMAIN (required) to platform config. Each
HTTPRoute now emits two hostnames:
  - {name}-{protocol}.{domain} (existing internal domain)
  - {name}-{protocol}.{namespace}.{publicDomain} (public-facing)

Both hostnames land in the same HTTPRoute spec.hostnames[] array.
The Gateway selects the correct listener/cert via SNI matching.

Hostname format changed from {name}.{protocol}.{domain} to
{name}-{protocol}.{domain} for both domains — this is a breaking
change for existing routes, requiring redeployment of affected
SeiNodeDeployments.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Dev environments don't have a platform.sei.io zone or certs, so
the public domain must be optional. When unset, HTTPRoutes emit
only the internal hostname. When set, the public hostname is
appended.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@bdchatham bdchatham merged commit 53f4009 into main Apr 10, 2026
2 checks passed
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.

1 participant