pub struct Bind9InstanceSpec {Show 13 fields
pub cluster_ref: String,
pub role: ServerRole,
pub replicas: Option<i32>,
pub version: Option<String>,
pub image: Option<ImageConfig>,
pub config_map_refs: Option<ConfigMapRefs>,
pub config: Option<Bind9Config>,
pub primary_servers: Option<Vec<String>>,
pub volumes: Option<Vec<Volume>>,
pub volume_mounts: Option<Vec<VolumeMount>>,
pub rndc_secret_ref: Option<RndcSecretRef>,
pub storage: Option<StorageConfig>,
pub bindcar_config: Option<BindcarConfig>,
}Expand description
Bind9Instance represents a BIND9 DNS server deployment in Kubernetes.
Each Bind9Instance creates a Deployment, Service, ConfigMap, and Secret for managing
a BIND9 server. The instance communicates with the controller via RNDC protocol.
§Example
apiVersion: bindy.firestoned.io/v1beta1
kind: Bind9Instance
metadata:
name: dns-primary
namespace: dns-system
spec:
clusterRef: my-dns-cluster
role: primary
replicas: 2
version: "9.18"Fields§
§cluster_ref: StringReference to the cluster this instance belongs to.
Can reference either:
- A namespace-scoped
Bind9Cluster(must be in the same namespace as this instance) - A cluster-scoped
ClusterBind9Provider(cluster-wide, accessible from any namespace)
The cluster provides shared configuration and defines the logical grouping. The controller will automatically detect whether this references a namespace-scoped or cluster-scoped cluster resource.
role: ServerRoleRole of this instance (primary or secondary).
Primary instances are authoritative for zones. Secondary instances replicate zones from primaries via AXFR/IXFR.
replicas: Option<i32>Number of pod replicas for high availability.
Defaults to 1 if not specified. For production, use 2+ replicas.
version: Option<String>BIND9 version override. Inherits from cluster if not specified.
Example: “9.18”, “9.16”
image: Option<ImageConfig>Container image configuration override. Inherits from cluster if not specified.
config_map_refs: Option<ConfigMapRefs>ConfigMap references override. Inherits from cluster if not specified.
config: Option<Bind9Config>Instance-specific BIND9 configuration overrides.
Overrides cluster-level configuration for this instance only.
primary_servers: Option<Vec<String>>Primary server addresses for zone transfers (required for secondary instances).
List of IP addresses or hostnames of primary servers to transfer zones from.
Example: ["10.0.1.10", "primary.example.com"]
volumes: Option<Vec<Volume>>Volumes override for this instance. Inherits from cluster if not specified.
These volumes override cluster-level volumes. Common use cases include
instance-specific PersistentVolumeClaims for zone data storage.
volume_mounts: Option<Vec<VolumeMount>>Volume mounts override for this instance. Inherits from cluster if not specified.
These mounts override cluster-level volume mounts.
rndc_secret_ref: Option<RndcSecretRef>Reference to an existing Kubernetes Secret containing RNDC key.
If specified, uses this existing Secret instead of auto-generating one. The Secret must contain the keys specified in the reference (defaults: “key-name”, “algorithm”, “secret”, “rndc.key”). This allows sharing RNDC keys across instances or using externally managed secrets.
If not specified, a Secret will be auto-generated for this instance.
storage: Option<StorageConfig>Storage configuration for zone files.
Specifies how zone files should be stored. Defaults to emptyDir (ephemeral storage). For persistent storage, use persistentVolumeClaim.
bindcar_config: Option<BindcarConfig>Bindcar RNDC API sidecar container configuration.
The API container provides an HTTP interface for managing zones via rndc. If not specified, uses default configuration.
Trait Implementations§
Source§impl Clone for Bind9InstanceSpec
impl Clone for Bind9InstanceSpec
Source§fn clone(&self) -> Bind9InstanceSpec
fn clone(&self) -> Bind9InstanceSpec
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for Bind9InstanceSpec
impl Debug for Bind9InstanceSpec
Source§impl<'de> Deserialize<'de> for Bind9InstanceSpec
impl<'de> Deserialize<'de> for Bind9InstanceSpec
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl JsonSchema for Bind9InstanceSpec
impl JsonSchema for Bind9InstanceSpec
Source§fn schema_id() -> Cow<'static, str>
fn schema_id() -> Cow<'static, str>
Source§fn json_schema(generator: &mut SchemaGenerator) -> Schema
fn json_schema(generator: &mut SchemaGenerator) -> Schema
Source§fn inline_schema() -> bool
fn inline_schema() -> bool
$ref keyword. Read moreAuto Trait Implementations§
impl Freeze for Bind9InstanceSpec
impl RefUnwindSafe for Bind9InstanceSpec
impl Send for Bind9InstanceSpec
impl Sync for Bind9InstanceSpec
impl Unpin for Bind9InstanceSpec
impl UnwindSafe for Bind9InstanceSpec
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more