Gateway and DNS Options
Options for: gateway, external-dns.
All options are under lab.clusters.<name>.components.
external-dns.chart
ExternalDNS Helm chart derivation (default: cataCharts.external-dns)
Type: package
Default:
<derivation helm-chart-https-kubernetes-sigs.github.io-external-dns-external-dns-1.16.1>
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.defaultTargets
Override the target IP/hostname for all DNS records (e.g. [“127.0.0.1”] for local dev)
Type: list of string
Default: [ ]
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.domainFilters
Domains to manage (empty = all)
Type: list of string
Default: [ ]
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.enable
Whether to enable ExternalDNS.
Type: boolean
Default: false
Example: true
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.env
Extra environment variables (e.g. API tokens from secrets)
Type: list of (attribute set)
Default: [ ]
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.excludeDomains
Domains to exclude from management
Type: list of string
Default: [ ]
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.extraArgs
Provider-specific extra arguments (e.g. { cloudflare-proxied = “true”; })
Type: attribute set of string
Default: { }
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.interval
Sync interval
Type: string
Default: "1m"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.logLevel
Log verbosity level
Type: one of "debug", "info", "warning", "error"
Default: "info"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.namespace
Namespace for ExternalDNS
Type: string
Default: "external-dns"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.phase
Deployment phase this component belongs to
Type: string
Default: "operators"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.policy
Record management policy (sync creates+updates+deletes)
Type: one of "sync", "upsert-only", "create-only"
Default: "sync"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.provider
DNS provider (cloudflare, route53, google, azure-dns, etc.)
Type: string
Default: "cloudflare"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.ref
Computed references for ExternalDNS
Type: attribute set
Default: { }
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.host
DNS server host for RFC2136 updates
Type: string
Default: ""
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.port
DNS server port
Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default: 53
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.tsigAxfr
Enable AXFR (zone transfer) using TSIG. Not needed for basic operation.
Type: boolean
Default: false
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.tsigKeyname
TSIG key name for authenticating DNS updates
Type: string
Default: "externaldns-key"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.tsigSecret
Base64-encoded TSIG secret
Type: string
Default: ""
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.tsigSecretAlg
TSIG secret algorithm
Type: one of "hmac-sha256", "hmac-sha512", "hmac-sha1"
Default: "hmac-sha256"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.rfc2136.zone
DNS zone to manage (e.g. ‘lab.test.’)
Type: string
Default: ""
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.serviceAccount.annotations
ServiceAccount annotations (for AWS IRSA, GCP Workload Identity, etc.)
Type: attribute set of string
Default: { }
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.sources
Kubernetes resource types to watch for DNS records
Type: list of string
Default:
[
"service"
"ingress"
"gateway-httproute"
"gateway-tlsroute"
]
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.triggerLoopOnEvent
React to resource events immediately rather than waiting for interval
Type: boolean
Default: true
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.txtOwnerId
TXT record ownership ID (defaults to cluster name)
Type: null or string
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.txtPrefix
Prefix for TXT ownership records
Type: string
Default: "externaldns-"
Declared in: modules/lab/cluster/components/external-dns.nix
external-dns.version
ExternalDNS Helm chart version
Type: string
Default: "1.15.0"
Declared in: modules/lab/cluster/components/external-dns.nix
gateway.chart
Traefik Helm chart derivation
Type: package
Default: <derivation helm-chart-https-traefik.github.io-charts-traefik-35.2.0>
Declared in: modules/lab/cluster/components/gateway.nix
gateway.className
GatewayClass name
Type: string
Default: "traefik"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.controller
Gateway controller to deploy:
- traefik: deploy Traefik v3 (default, good for k3d labs)
- external: skip controller deployment (use with Cilium or pre-installed controller)
Type: one of "traefik", "external"
Default: "traefik"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.controllerName
Gateway controller name for the GatewayClass
Type: string
Default: "traefik.io/gateway-controller"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.enable
Whether to enable Gateway API (standalone, CNI-agnostic).
Type: boolean
Default: false
Example: true
Declared in: modules/lab/cluster/components/gateway.nix
gateway.gatewayName
Gateway resource name (components reference this via gateway.gatewayRef)
Type: string
Default: "default-gateway"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.namespace
Namespace for the Gateway resource
Type: string
Default: "kube-system"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.ref
This option has no description.
Type: attribute set
Default: { }
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.domain
Base domain for wildcard cert (e.g. homelab.test)
Type: string
Default: ""
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.enable
Enable HTTPS listener with cert-manager TLS
Type: boolean
Default: false
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.issuerRef
This option has no description.
Type: submodule
Default:
{
kind = "ClusterIssuer";
name = "lab-ca";
}
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.issuerRef.kind
This option has no description.
Type: string
Default: "ClusterIssuer"
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.issuerRef.name
This option has no description.
Type: string
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.passthrough.enable
Enable TLS passthrough listener (for backends that terminate TLS themselves)
Type: boolean
Default: false
Declared in: modules/lab/cluster/components/gateway.nix
gateway.tls.passthrough.port
Traefik entryPoint port for TLS passthrough (must differ from websecure port)
Type: 16 bit unsigned integer; between 0 and 65535 (both inclusive)
Default: 8444
Declared in: modules/lab/cluster/components/gateway.nix