DNSRecordSet

DNSRecordSet is a set of records that belong to a DNSZone.

API versionkudurru.io/v1alpha1
KindDNSRecordSet
ScopeNamespaced
Resourcednsrecordsets.kudurru.io
Short namesrrset
Subresourcesstatus

Columns of kubectl get dnsrecordsets:

ColumnTypeValue
ZONEstring.spec.zoneRef.name
NAMESinteger.status.names
READYstring.status.conditions[?(@.type=="Ready")].status
AGEdate.metadata.creationTimestamp

Spec

DNSRecordSetSpec defines records added to a zone. App teams own these: the clay copies of authority delegated from a DNSZone.

FieldTypeDescription
spec.endpoints[]objectRequired.
Items: at most 1000
spec.endpoints[].dnsNamestringRequired.
Length: at least 1
spec.endpoints[].kudurruobjectEndpointExt is the kudurru extension block on an Endpoint (decision D28).
spec.endpoints[].kudurru.commentstring
spec.endpoints[].kudurru.disabledbooleanDisabled records are kept but never served.
spec.endpoints[].kudurru.expiresAtstringExpiresAt removes the record from service after this time.
Format: date-time
spec.endpoints[].kudurru.viewstringView is "public" (published to sinks, never served) or a ClientGroup name (served only to that group). v0.2.
spec.endpoints[].labelsmap[string]string
spec.endpoints[].providerSpecific[]object
spec.endpoints[].providerSpecific[].namestringRequired.
spec.endpoints[].providerSpecific[].valuestringRequired.
spec.endpoints[].recordTTLintegerFormat: int64
spec.endpoints[].recordTypestringRequired.
Pattern: ^([A-Z0-9]+|TYPE[0-9]+)$
spec.endpoints[].setIdentifierstring
spec.endpoints[].targets[]stringRequired.
Items: at least 1
spec.zoneRefobjectRequired. ObjectRef points at another kudurru object. Namespace is omitted for cluster-scoped kinds and for same-namespace references.
Validation: zoneRef is immutable (self == oldSelf)
spec.zoneRef.namestringRequired.
Length: at least 1
spec.zoneRef.namespacestring

Status

DNSRecordSetStatus is the observed state of a record set.

FieldTypeDescription
status.conditions[]ConditionList type: map, keyed by type
status.namesinteger
status.observedGenerationintegerFormat: int64
status.publications[]object
status.publications[].integrationstringRequired.
status.publications[].messagestring
status.publications[].statestringRequired.
One of: Accepted, Programmed, Failed

Example

config/samples/kudurru.io_v1alpha1_dnsrecordset.yaml:

apiVersion: kudurru.io/v1alpha1
kind: DNSRecordSet
metadata:
  name: nas
  namespace: apps
  labels:
    kudurru.io/publish: cloudflare
spec:
  zoneRef:
    name: home-example-com
  endpoints:
    - dnsName: nas.home.example.com
      recordType: A
      targets: ["10.0.0.20"]
      recordTTL: 300
      kudurru:
        comment: Synology
    - dnsName: nas.home.example.com
      recordType: HTTPS
      targets: ["1 . alpn=h2,h3"]
    # v0.2: published to Cloudflare, never served internally.
    # - dnsName: nas.home.example.com
    #   recordType: CNAME
    #   targets: [tunnel-7f3a.cfargotunnel.com]
    #   providerSpecific: [{ name: cloudflare/proxied, value: "true" }]
    #   kudurru: { view: public }

Source: site/content/reference/crds/dnsrecordset.md