Skip to content

feat: Package the internal DNS control plane and serving agents - #238

Draft
scotwells wants to merge 45 commits into
feat/internal-dns-serving-recoveryfrom
feat/internal-dns-service-runtime
Draft

scotwells wants to merge 45 commits into
feat/internal-dns-serving-recoveryfrom
feat/internal-dns-service-runtime

Conversation

@scotwells

@scotwells scotwells commented Oct 9, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Run shared private DNS as deployable services for project workloads.

Product services publish records through project APIs, while network services provides resolver access. Kubernetes runs the upstream dnsdist image directly, and the agent applies validated routing updates without restarting it.

Accepted DNS remains available through agent and control plane outages.

Test plan

  • CI: Tests, lint, generated manifests, and image builds.
  • Local stack: Routing updates preserve the running upstream dnsdist process.
  • Local stack: Overlapping tenant names stay isolated over UDP and TCP.
  • Local stack: Withdrawal, agent recovery, and control plane outages preserve the expected answers.

Stacked on #237. Architecture: #229.

@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 7a144f0 to 198d760 Compare October 9, 2026 00:14
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 198d760 to a02b5a3 Compare October 9, 2026 00:17
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from a02b5a3 to 54e93b3 Compare October 9, 2026 00:23
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 54e93b3 to 142105d Compare October 9, 2026 01:33
@scotwells
scotwells added this pull request to stack #240 October 9, 2026 02:17
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch 2 times, most recently from a483c5f to 8eaf237 Compare October 12, 2026 17:21
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 8eaf237 to 68930fe Compare October 12, 2026 21:17
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 68930fe to bcd53c3 Compare October 12, 2026 21:40
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 41637cf to 2e865f1 Compare October 12, 2026 22:07
@scotwells
scotwells force-pushed the feat/internal-dns-service-runtime branch from 2e865f1 to d3c8d4f Compare October 12, 2026 22:16
Install jq for fleet readiness checks and verify that the serving image
contains the required commands and executable helpers. Run these checks
as the serving user during both architecture image builds.
Discover ready Milo projects and reconcile every source namespace without
restarting the DNS service. Keep active sources during discovery outages
and resolve admission requests against live project identity.

Route serving artifacts by resource type and scope access withdrawal to
its source namespace so shared namespace names stay isolated.
Include the synchronized parent while preserving this review scope.
Apply validated routing snapshots through the authenticated loopback
console. Keep accepted routing available across configuration agent
restarts and let Kubernetes manage the upstream dnsdist container.
Use the supported client startup predicate in the shared configuration.
Verify the control response before accepting routing updates and reuse
module downloads in the runtime build.
Verify the configured listener through the member readiness check.
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