Module crd

Module crd 

Source
Expand description

Custom Resource Definitions (CRDs) for DNS management.

This module defines all Kubernetes Custom Resource Definitions used by Bindy to manage BIND9 DNS infrastructure declaratively.

§Resource Types

§Infrastructure

§DNS Zones

  • DNSZone - Defines DNS zones with SOA records and instance targeting

§DNS Records

§Example: Creating a DNS Zone

use bindy::crd::{DNSZoneSpec, SOARecord};

let soa = SOARecord {
    primary_ns: "ns1.example.com.".to_string(),
    admin_email: "admin@example.com".to_string(),
    serial: 2024010101,
    refresh: 3600,
    retry: 600,
    expire: 604800,
    negative_ttl: 86400,
};

let spec = DNSZoneSpec {
    zone_name: "example.com".to_string(),
    cluster_ref: Some("my-dns-cluster".to_string()),
    cluster_provider_ref: None,
    soa_record: soa,
    ttl: Some(3600),
    name_server_ips: None,
    records_from: None,
};

§Example: Creating DNS Records

use bindy::crd::{ARecordSpec, MXRecordSpec};

// A Record for www.example.com
let a_record = ARecordSpec {
    name: "www".to_string(),
    ipv4_address: "192.0.2.1".to_string(),
    ttl: Some(300),
};

// MX Record for mail routing
let mx_record = MXRecordSpec {
    name: "@".to_string(),
    priority: 10,
    mail_server: "mail.example.com.".to_string(),
    ttl: Some(3600),
};

Structs§

AAAARecord
AAAARecord maps a DNS hostname to an IPv6 address. This is the IPv6 equivalent of an A record.
AAAARecordSpec
AAAARecord maps a DNS name to an IPv6 address.
ARecord
ARecord maps a DNS hostname to an IPv4 address. Multiple A records for the same name enable round-robin DNS load balancing.
ARecordSpec
ARecord maps a DNS name to an IPv4 address.
Bind9Cluster
Bind9Cluster defines a namespace-scoped logical grouping of BIND9 DNS server instances. Use this for tenant-managed DNS infrastructure isolated to a specific namespace. For platform-managed cluster-wide DNS, use ClusterBind9Provider instead.
Bind9ClusterCommonSpec
Common specification fields shared between namespace-scoped and cluster-scoped BIND9 clusters.
Bind9ClusterSpec
Bind9Cluster - Namespace-scoped DNS cluster for tenant-managed infrastructure.
Bind9ClusterStatus
Bind9Cluster status
Bind9Config
BIND9 server configuration options
Bind9Instance
Bind9Instance represents a BIND9 DNS server deployment in Kubernetes. Each instance creates a Deployment, Service, ConfigMap, and Secret for managing a BIND9 server with RNDC protocol communication.
Bind9InstanceSpec
Bind9Instance represents a BIND9 DNS server deployment in Kubernetes.
Bind9InstanceStatus
Bind9Instance status
BindcarConfig
Bindcar container configuration
CAARecord
CAARecord specifies which certificate authorities are authorized to issue certificates for a domain. Enhances domain security and certificate issuance control.
CAARecordSpec
CAARecord specifies Certificate Authority Authorization.
CNAMERecord
CNAMERecord creates a DNS alias from one hostname to another. A CNAME cannot coexist with other record types for the same name.
CNAMERecordSpec
CNAMERecord creates an alias from one name to another.
ClusterBind9Provider
ClusterBind9Provider defines a cluster-scoped BIND9 DNS provider that manages DNS infrastructure accessible from all namespaces. Use this for platform-managed DNS infrastructure. For tenant-managed namespace-scoped DNS, use Bind9Cluster instead.
ClusterBind9ProviderSpec
ClusterBind9Provider - Cluster-scoped BIND9 DNS provider for platform teams.
Condition
Condition represents an observation of a resource’s current state.
ConfigMapRefs
ConfigMap references for BIND9 configuration files
DNSSECConfig
DNSSEC (DNS Security Extensions) configuration
DNSZone
DNSZone represents an authoritative DNS zone managed by BIND9. Each DNSZone defines a zone (e.g., example.com) with SOA record parameters. Can reference either a namespace-scoped Bind9Cluster or cluster-scoped ClusterBind9Provider.
DNSZoneSpec
DNSZone defines a DNS zone to be managed by BIND9.
DNSZoneStatus
DNSZone status
ImageConfig
Container image configuration for BIND9 instances
LabelSelector
Label selector to match Kubernetes resources.
LabelSelectorRequirement
A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.
MXRecord
MXRecord specifies mail exchange servers for a domain. Lower priority values indicate higher preference for mail delivery.
MXRecordSpec
MXRecord specifies mail servers for a domain.
NSRecord
NSRecord delegates a subdomain to authoritative nameservers. Used for subdomain delegation to different DNS providers or servers.
NSRecordSpec
NSRecord delegates a subdomain to other nameservers.
PersistentVolumeClaimConfig
PersistentVolumeClaim configuration
PrimaryConfig
Primary instance configuration
RecordReference
Reference to a DNS record associated with a zone
RecordSource
Source for DNS records to include in a zone.
RecordStatus
Generic record status
RndcSecretRef
Reference to a Kubernetes Secret containing RNDC/TSIG credentials.
SOARecord
SOA (Start of Authority) Record specification.
SRVRecord
SRVRecord specifies the hostname and port of servers for specific services. The record name follows the format _service._proto (e.g., _ldap._tcp).
SRVRecordSpec
SRVRecord specifies the location of services.
SecondaryConfig
Secondary instance configuration
SecondaryZoneConfig
Secondary Zone configuration
ServiceConfig
Service configuration including spec and annotations
StorageConfig
Storage configuration for zone files
TSIGKey
TSIG Key configuration for authenticated zone transfers (deprecated in favor of RndcSecretRef)
TXTRecord
TXTRecord stores arbitrary text data in DNS. Commonly used for SPF, DKIM, DMARC policies, and domain verification.
TXTRecordSpec
TXTRecord holds arbitrary text data.

Enums§

RndcAlgorithm
RNDC/TSIG algorithm for authenticated communication and zone transfers.
ServerRole
Server role in the DNS cluster.
StorageType
Storage type for zone files