Repository navigation
Conversation
reoring
added a commit
that referenced
this pull request
Oct 18, 2026
) * docs: design verify-only external DNS provider * feat(core): support credentialless DNS providers Make ZoneClass identityRef optional with Provider-version admission, preserve projected condition messages, gate cloud registrations and privileges, and support credentialless ZoneClass UI creation. Regenerate deepcopy and both CRD distributions; add deterministic admission, projection, chart and UI regressions. Contract: dns-api PR #15 / 99d0753 docs/design/external-provider.md (ZoneClass Parameters, Conditions and Public Data, Packaging), core-api.md, provider-extension.md, controllers-webhooks.md (Provider Enablement), ui.md (Zone Classes), and test-policy.md. Platform PR #5331 / cd995cf0ed design/platform/onprem/README.md sections 4.3, 4.4 step 4, 4.7, and Phase 4. Codegen: devbox run -- task generate manifests controller-chart:sync-crds completed. Tests, builds, linters and UI typecheck intentionally deferred to the primary integration agent. * feat(external): verify-only DNS provider Provider external.dns.appthrust.io/v1alpha1 (A/AAAA/CNAME, no identity), ZoneClass resolver policy and expectedNameservers, exact-set A/AAAA verification with bounded CNAME chains and wildcard witnesses, Cluster/Recursive views plus RD=0 authority checks, bounded scheduling (30-300s, jitter, backoff, 32 names/pass, 40 QPS/80 burst), UID/generation/policy-bound receipts, bookkeeping-only deletion, endpoint conversion handler, metrics. Design: docs/design/external-provider.md. * fix(external): avoid unchanged scheduler status patches * docs: trim trailing blank line * Wire external DNS provider into manager and deployment packaging * fix(external): describe every array item in the Provider schemas so core admission accepts the manifest The core webhook requires a description on every property and array item; the external Provider was rejected on install. The built-in-manifest validation test now covers external_extensions.yaml. * docs: DEP-0003 RecordWithdrawal — verified DNS withdrawal before address reuse (Draft) * docs: DEP-0003 ZoneUnit withdrawal items keyed by claimNamespace/claimName
reoring
added a commit
that referenced
this pull request
Oct 18, 2026
* docs: design verify-only external DNS provider * feat(core): support credentialless DNS providers Make ZoneClass identityRef optional with Provider-version admission, preserve projected condition messages, gate cloud registrations and privileges, and support credentialless ZoneClass UI creation. Regenerate deepcopy and both CRD distributions; add deterministic admission, projection, chart and UI regressions. Contract: dns-api PR #15 / 99d0753 docs/design/external-provider.md (ZoneClass Parameters, Conditions and Public Data, Packaging), core-api.md, provider-extension.md, controllers-webhooks.md (Provider Enablement), ui.md (Zone Classes), and test-policy.md. Platform PR #5331 / cd995cf0ed design/platform/onprem/README.md sections 4.3, 4.4 step 4, 4.7, and Phase 4. Codegen: devbox run -- task generate manifests controller-chart:sync-crds completed. Tests, builds, linters and UI typecheck intentionally deferred to the primary integration agent. * feat(external): verify-only DNS provider Provider external.dns.appthrust.io/v1alpha1 (A/AAAA/CNAME, no identity), ZoneClass resolver policy and expectedNameservers, exact-set A/AAAA verification with bounded CNAME chains and wildcard witnesses, Cluster/Recursive views plus RD=0 authority checks, bounded scheduling (30-300s, jitter, backoff, 32 names/pass, 40 QPS/80 burst), UID/generation/policy-bound receipts, bookkeeping-only deletion, endpoint conversion handler, metrics. Design: docs/design/external-provider.md. * fix(external): avoid unchanged scheduler status patches * docs: trim trailing blank line * Wire external DNS provider into manager and deployment packaging * fix(external): describe every array item in the Provider schemas so core admission accepts the manifest The core webhook requires a description on every property and array item; the external Provider was rejected on install. The built-in-manifest validation test now covers external_extensions.yaml. * docs: DEP-0003 RecordWithdrawal — verified DNS withdrawal before address reuse (Draft) * docs: DEP-0003 ZoneUnit withdrawal items keyed by claimNamespace/claimName * feat(api): define retained DNS withdrawal and retirement contracts * feat(api): fence withdrawal results to ZoneClass incarnation and generation * feat(core): compose and project verified DNS withdrawal claims * feat(external): verify DNS withdrawal before retired address reuse * feat(endpoint): capture retired DNS pairs before source deletion * fix(core): preserve admission parity and existing Zone deletion messages * docs: accept DEP-0003 and reflect verified record withdrawal into docs/design
Contributor
Author
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.
Purpose
Design for a verify-only
externalDNS provider: the customer owns authoritative DNS; dns-api sends DNS queries and writes Kubernetes status only — no DNS UPDATE, cloud client, credentials, or fallback writer. Consumer: AppThrust Platform on-premises installs (dns.zone.provider: external,appthrust/platformdesign/platform/onprem/README.md§4.7).What this adds (docs only, no code)
docs/design/external-provider.md: Providerexternal.dns.appthrust.io/v1alpha1(A/AAAA/CNAME, no identity); ZoneClass parametersresolver.{mode,servers}+expectedNameserverswith schema/CEL; logical-suffix Zone semantics; exact-set A/AAAA verification with CNAME-chain bounds and wildcard witnesses; resolver policy (Cluster | Recursive, optional direct-authority checks); condition reasons/messages mapped into the fixed unit-level allowlist; bounded scheduling (30–300 s, jitter, backoff, per-Zone amortized NS work, 40 QPS/80 burst manager flags); deletion = bookkeeping only (verified withdrawal is explicitly a laterWithdrawnextension); admission/RBAC (no Secret access); packaging (providers.external.enabled, capability + APIService, cert-manager required); metrics; tests per test-policy.ZoneClass.spec.identityRefoptional — required iff the Provider version declaresidentity, forbidden otherwise (core-api.md,provider-extension.md,ui.md); core projection preserves provider conditionMessage(controllers-webhooks.md); provider enable flags that gate controller registration, identity webhooks, conversion handlers and provider-only RBAC — marked as not implemented at87aa1dc(controllers-webhooks.md).EndpointProviderCapability+ aggregated APIService (schema equality does not imply conversion equality); rationale in the provider doc.overview.md,README.mdindex,test-policy.md(external kest scenario against an in-kind authoritative fixture),open-decisions.md(3 open items).Review
Reviewed by a design reviewer against the code at
87aa1dc; all major/minor findings applied (resource-bound consistency, flag honesty, UI migration, overview contradictions, unit-level reason mapping, present tense).