Expand description
Kubernetes reconciliation controllers for DNS resources.
This module contains the reconciliation logic for all Bindy Custom Resources. Each reconciler watches for changes to its respective resource type and updates BIND9 configurations accordingly.
§Reconciliation Architecture
Bindy follows the standard Kubernetes controller pattern:
- Watch - Monitor resource changes via Kubernetes API
- Reconcile - Compare desired state (CRD spec) with actual state
- Update - Modify BIND9 configuration to match desired state
- Status - Report reconciliation results back to Kubernetes
§Available Reconcilers
§Infrastructure
reconcile_bind9cluster- Manages namespace-scoped BIND9 cluster statusdelete_bind9cluster- Cleans up namespace-scoped BIND9 cluster resourcesreconcile_clusterbind9provider- Manages cluster-scoped BIND9 provider statusdelete_clusterbind9provider- Cleans up cluster-scoped BIND9 provider resourcesreconcile_bind9instance- Creates/updates BIND9 server deploymentsdelete_bind9instance- Cleans up BIND9 server resources
§DNS Zones
reconcile_dnszone- Creates/updates DNS zone filesdelete_dnszone- Removes DNS zones
§DNS Records
reconcile_a_record- Manages IPv4 address recordsreconcile_aaaa_record- Manages IPv6 address recordsreconcile_cname_record- Manages canonical name aliasesreconcile_mx_record- Manages mail exchange recordsreconcile_txt_record- Manages text recordsreconcile_ns_record- Manages nameserver delegationreconcile_srv_record- Manages service location recordsreconcile_caa_record- Manages certificate authority authorization
§Example: Using a Reconciler
use bindy::reconcilers::reconcile_dnszone;
use bindy::crd::DNSZone;
use bindy::bind9::Bind9Manager;
use kube::Client;
async fn reconcile_zone(dnszone: DNSZone) -> anyhow::Result<()> {
let client = Client::try_default().await?;
let zone_manager = Bind9Manager::new();
reconcile_dnszone(client, dnszone, &zone_manager).await?;
Ok(())
}Re-exports§
pub use bind9cluster::delete_bind9cluster;pub use bind9cluster::reconcile_bind9cluster;pub use bind9instance::delete_bind9instance;pub use bind9instance::reconcile_bind9instance;pub use clusterbind9provider::delete_clusterbind9provider;pub use clusterbind9provider::reconcile_clusterbind9provider;pub use dnszone::delete_dnszone;pub use dnszone::find_zones_selecting_record;pub use dnszone::reconcile_dnszone;pub use records::reconcile_a_record;pub use records::reconcile_aaaa_record;pub use records::reconcile_caa_record;pub use records::reconcile_cname_record;pub use records::reconcile_mx_record;pub use records::reconcile_ns_record;pub use records::reconcile_srv_record;pub use records::reconcile_txt_record;
Modules§
- bind9cluster
- BIND9 cluster reconciliation logic.
- bind9instance
- BIND9 instance reconciliation logic.
- clusterbind9provider
- BIND9 global cluster (cluster-scoped) reconciliation logic.
- dnszone
- DNS zone reconciliation logic.
- finalizers
- Generic finalizer management for Kubernetes resources.
- records
- DNS record reconciliation logic.
- resources
- Generic resource creation and update helpers for Kubernetes resources.
- status
- Status condition helpers for Kubernetes resources.
Functions§
- should_
reconcile - Check if a resource’s spec has changed by comparing generation with
observed_generation. - status_
changed - Check if a status value has actually changed compared to the current status.