Conversation
4 tasks
scotwells
force-pushed
the
feat/wildcard-admission
branch
from
October 2, 2026 22:13
e44f41d to
806ddf8
Compare
Tenant services that give every customer or bucket a subdomain need one ALB to serve *.s3.example.com. Behind the certificate service flag, an HTTPProxy may now carry a single leading wildcard label, admitted only when its base or a parent is verified by DNS TXT record. Key changes: - accept "*." hostnames in the HTTPProxy and Gateway webhooks and the controller's own validation when the flag is on; refuse wildcards under the platform's own domains and multi-label wildcards - refuse a wildcard whose covering Domain was proven over HTTP, through a Datum DNS zone, or before the method was recorded, with reason DNSVerificationRequired and a message naming the Domain to verify - create a Domain for the wildcard's base when only a non-DNS proof covers it, so the user has a TXT record to publish - give wildcards no grace period: one that loses its proof stops serving - record on the Domain which method verified it, keeping VerifiedDNS or VerifiedHTTP true after verification - report each custom hostname's Verified condition, and list the TXT record a wildcard still needs among its DNS records
scotwells
force-pushed
the
feat/wildcard-admission
branch
from
October 2, 2026 23:35
806ddf8 to
cb9f8c4
Compare
scotwells
force-pushed
the
feat/wildcard-subtree-claims
branch
from
October 2, 2026 23:35
0eb1775 to
66f7c49
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Services that give every bucket or customer its own subdomain need one load balancer to serve a name like
*.s3.example.com, and today any hostname starting with a wildcard is rejected.A load balancer may now carry a hostname with one leading wildcard label, admitted only once its base or a parent domain is verified by DNS TXT record.
HTTP token proof does not count, since anyone who can serve one name beneath the wildcard can serve the token, and neither does a Datum DNS zone until hosted zone claims (datum-cloud/enhancements#917) settle what a zone proves.
This is behind the certificate service setting, which is off by default, and is stacked on #529 so the subtree reservation is in place before any wildcard is admitted.
API
A wildcard whose domain was proven another way is held back, and the hostname says what to do:
The per-hostname Verified condition is new and appears only with the setting on:
The assistant's reason catalog explains both new refusal reasons to customers.
When only a non-DNS proof covers a wildcard, the platform creates a Domain for its base, so the user has a TXT record to publish. A wildcard keeps no grace period, so one that loses its proof stops serving.
A Domain verified with the setting on now keeps the condition for the method that proved it. A verified Domain shows no new verification record, so the portal's verification card stays hidden.
Validation errors users hit when creating or updating a load balancer or gateway:
*.s3.example.com*.comor*.*.example.com*.datumproxy.netor a name beneath itUsers write the spec. Only the operator writes status and creates the Domain for a wildcard's base. No printer columns change.
Test plan
Related to datum-cloud/enhancements#913