Skip to content

add Edka, 2 templates - #1509

Merged
pawel-kow merged 1 commit into
Domain-Connect:masterfrom
edkadigital:add-edka-cluster-templates
Aug 9, 2026
Merged

add Edka, 2 templates#1509
pawel-kow merged 1 commit into
Domain-Connect:masterfrom
edkadigital:add-edka-cluster-templates

Conversation

@camilb

@camilb camilb commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

Description

Two new templates for Edka (edka.io), a Kubernetes cluster management platform. Users add a domain (exact host or wildcard) to their cluster and the templates create the routing records plus an ACME DNS-01 delegation CNAME used for certificate issuance:

  • edka.io.cluster.json: apex/exact-host and wildcard A + AAAA routing, wildcard CNAME routing, and the _acme-challenge delegation CNAME.
  • edka.io.cluster-cname.json (hostRequired: true): exact-host CNAME routing variant. Split into its own template so the CNAME on host @ complies with the schema's hostRequired rule; our backend refuses to use it at the bare zone apex.

Only the synchronous flow is used. Every apply URL is signed (syncPubKeyDomain=domainconnect.edka.io, key already published at _dck1.domainconnect.edka.io), and the variable values are derived server-side from the authenticated, account-scoped cluster state (load balancer IPs, cluster hostname, delegation target). They are never taken from the browser.

Both templates pass dc-template-linter -loglevel error -tolerate info -logos (also clean in -cloudflare mode).

Type of change

  • New template
  • Bug fix (non-breaking change which fixes an issue in the template)
  • New feature (non-breaking change which adds functionality to the template)
  • Breaking change (fix or feature that would cause existing template behavior to be not backward compatible)

How Has This Been Tested?

  • Template functionality checked using Online Editor
  • Template file name follows the pattern <providerId>.<serviceId>.json
  • resource URL provided with logoUrl is actually served by a webserver

Checklist of common problems

  • syncPubKeyDomain is set — this is mandatory; omitting it requires explicit justification in the PR description or the PR will be rejected
  • warnPhishing is not set alongside syncPubKeyDomain — the two must not appear together
  • syncRedirectDomain is set whenever the template uses redirect_uri in the synchronous flow
  • no TXT record contains SPF content ("v=spf1 ...") — use the SPFM record type instead (no TXT records in these templates)
  • txtConflictMatchingMode is set on every TXT record that must be unique per label or content prefix (n/a, no TXT records)
  • no variable is used as a bare full record value (e.g. @ TXT "%foo%") unless necessary — justification: the record values are cluster load balancer IPv4/IPv6 addresses (%ip4_n%/%ip6_n%), a per-customer cluster hostname (%cnameTarget%), and a per-domain ACME delegation target (%tlsTarget%). None of these admit a fixed prefix or suffix: IPs cannot be prefixed, the CNAME target can be a customer-owned hostname (e.g. a Tailscale tailnet host), and the delegation zone must remain rotatable without a template version bump. As mitigation, all apply URLs are signed and the values are computed by our backend from authenticated cluster state, never accepted from the client.
  • no bare variable is used as the full host label — hosts are fixed (@, *, _acme-challenge)
  • no variable is used in the host field to create a subdomain — the host parameter is used
  • %host% does not appear explicitly in any host attribute
  • essential is set to OnApply on records the end user may need to modify or remove without breaking the template — not set: every record in the selected groups is required for the service to function, and the TLS delegation record is already independently selectable via its own tls group.

Online Editor test results

Editor test link(s):
Test edka.io/cluster example.com/@
Test edka.io/cluster example.com/apps
Test edka.io/cluster-cname example.com/app

New templates for Edka (edka.io): cluster domain routing (A/AAAA,
wildcard CNAME, ACME DNS-01 delegation CNAME) and a hostRequired
variant for exact-host CNAME routing. Synchronous flow only, signed
via syncPubKeyDomain=domainconnect.edka.io (key published at
_dck1.domainconnect.edka.io). Record values are derived server-side
from authenticated cluster state, never from the browser.
@github-actions github-actions Bot added the hostRequired hostRequired is set label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

JSON Filename Check Passed

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

PR Description Check Passed

All required sections are filled in correctly.

Details
  OK  Type of change: 1/4 checkboxes ticked
  OK  How Has This Been Tested?: all 3 checkboxes ticked
  OK  Checklist of common problems: 10/10 checkboxes ticked
  OK  Online Editor test results: 3 link(s) found
  OK  Template coverage: all 2 template(s) covered
Labels to remove: Checklist of common problems not complete, Forged editor links, PR description incomplete, Test links missing

PR description check PASSED

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

JSON Schema Validation Passed

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Linter OK

edka.io.cluster-cname.json

Level Code Note

edka.io.cluster.json

Level Code Note

@pawel-kow
pawel-kow added this pull request to the merge queue Aug 9, 2026
Merged via the queue into Domain-Connect:master with commit c018c69 Aug 9, 2026
5 checks passed
@github-actions

github-actions Bot commented Aug 9, 2026

Copy link
Copy Markdown

Thanks @camilb for contributing to the template. 🎉

This template has been reviewed and merged by @pawel-kow. 🙌

This template repository and its review process are maintained by independent individuals in their spare time, not as part of a paid role. If you or your company benefit from this protocol and its tools, please show your appreciation by buying a beer for @pawel-kow: https://github.com/sponsors/pawel-kow

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

Labels

hostRequired hostRequired is set

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants