๐ Release: 0.1.0-rc.2¶
Second release candidate. Every change since 0.1.0-rc.1: secondaries and access rights move into the database, every payload speaks one vocabulary, and releases carry their third-party license notice. Clean installs only โ no upgrade path from rc.1.
๐ฆ Distribution¶
Debian (.deb) and RPM (.rpm) packages for amd64 and arm64, the
multi-arch container image carrying the ExternalDNS adapter
(bindizr-external-dns), and the Helm chart on Docker Hub as an OCI
artifact (oci://registry-1.docker.io/kweonminsung/bindizr-chart). Every
release now attaches THIRD_PARTY_LICENSES.html, the notice cargo-about
renders for the crates the binaries are built from, the vendored OpenSSL
included.
๐ Installation (Debian/Ubuntu)¶
๐ Installation (RHEL/CentOS/Fedora)¶
๐ Installation (Helm)¶
helm install bindizr oci://registry-1.docker.io/kweonminsung/bindizr-chart \
--version 0.1.0-rc.2 \
--set bindizr.database.existingSecret=bindizr-db-secret
โ ๏ธ Breaking Changes¶
- Secondaries are registered at runtime, not configured.
dns.secondary_addrsis gone;bindizr secondary create|list|get|update|deleteand/secondariesregister a name, ahost[:port]address (a hostname is resolved when used),enabled, and an optionalnotify_key_namewhose TSIG key signs every NOTIFY to that secondary. NOTIFY fan-out and the unsigned-transfer ACL read the rows - Rights belong to roles, not credentials. An API token or TSIG key names
exactly one role (
--role, required) and only authenticates; the role's grants decide what it may do.token grant/tsig-key grantand the/tokens/{name}/grants,/tsig-keys/{name}/grantsroutes are replaced byrole grant|grants|revokeand/roles/{name}/grants. A grant is a zone scope (all zones, or one), a set of<resource>:<action>actions โzone:read|create|update|delete|transfer,record:read|create|update|delete,dnssec:read|manage,secondary:read|manage,access:manageโ and record name and type constraints. The built-inadminrole holds every action in all zones; the first token istoken create --role adminover the socket. A TSIG-signed transfer needszone:transfer - Configuration (unknown keys are rejected):
dns.notify.after_updateanddns.notify.on_startupare gone โbatch_msalone decides immediate or batched NOTIFY and nothing is notified at startup;dns.transfer_cache.enabledis gone โmax_records = 0turns the cache off - HTTP API vocabulary: a field naming another entity is
<entity>_name(zone_name,role_name,policy_name,notify_key_name), a serial isu32, a key tagu16, a countu64namedadded/deleted/unchanged, a fixed set of values is an enum with a schema (SecondaryStatus,TransferResult,RecordChange, โฆ), and a response's optional field isnull, never omitted. Every record response carries the caller'sactionson it - A new zone starts with an apex NS record naming its SOA MNAME, unless the
request says
apex_ns: false(--no-apex-ns) - Schema replaced:
roles,role_grants,secondaries, andtransfersare new;token_grantsandtsig_grantsare gone. Rust 1.94 to build
โจ New Features¶
- Secondaries โ
secondary check(POST /secondaries/{name}/check) asks one secondary whatdoctorasks all of them: resolution, the catalog serial it serves, and a NOTIFY round trip;secondary transferslists what Bindizr served each of its addresses, kept in the database so it reads back across restarts. Guides for Technitium, Windows Server DNS, YADIFA, Unbound, and CoreDNS join BIND9, Knot DNS, NSD, and PowerDNS - Roles โ
role create|list|get|delete|grant|grants|revokeover the CLI, the HTTP API, and the daemon socket;token list --role/tsig-key list --role; a role reports its grant, token, and TSIG key counts, and a delete refused while credentials hold it names them.GET /permissionsreports what the caller may do, so a client offers only what the server allows - Helm chart โ
bind9.service.nodePortfor clusters without a load balancer,bindizr.dns.extraSecondariesfor secondaries outside the chart, and named's directory on the persistent volume the chart already claimed - Releases attach the third-party license notice
๐งน Fixes & Improvements¶
- Hashing and TLS run on
ringalone - Internals โ the workspace takes the shape the project's rules describe:
modules of functions, a
Contextpassed by reference, typed errors with their causes intact, newtypes for serials, TTLs, key tags, and row ids, and one data-carryingDaemonCommand. The HTTP API, CLI, and DNS behaviour are unchanged by it, error codes and messages included