Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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