Files
argocd-apps/schemas/bind.unkin.net/bindzone_v1alpha1.json
T
unkinben 4b8f9313c8 Deploy bind-operator (operator + CRDs) (#219)
First of a 4-PR split of the bind rollout (was #216). Deploys just the operator control plane so it can be verified before any DNS clusters exist.

## Why
Roll out incrementally: operator + CRDs first, then each BIND tier as its own PR.

## Changes
- `apps/base/bind-system`: operator Deployment (`git.unkin.net/unkin/bind-operator:v0.1.1`), RBAC, namespace; CRDs pulled from the operator repo by raw URL (`config/crd/install.yaml` @ v0.1.1)
- au-syd1 `bind-system` overlay
- register all four bind apps in `argocd/applicationsets/platform.yaml` (DNS overlays instantiate only when their dirs land in the follow-up PRs)
- add `binddns-*` namespaces to `argocd/projects/platform.yaml`
- add `schemas/bind.unkin.net/*.json` for kubeconform

## Deploy impact
Operator pod + CRDs only. No DNS services yet — the operator is idle until BindClusters exist.

## Follow-ups (merge after this)
binddns-auth, binddns-resolver, binddns-externaldns — one PR each.

Reviewed-on: #219
Co-authored-by: Ben Vincent <ben@unkin.net>
Co-committed-by: Ben Vincent <ben@unkin.net>
2026-07-03 20:04:57 +10:00

187 lines
4.2 KiB
JSON

{
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"apiVersion": {
"type": "string"
},
"kind": {
"type": "string"
},
"metadata": {
"type": "object"
},
"spec": {
"properties": {
"allowTransfer": {
"items": {
"type": "string"
},
"type": "array"
},
"catalog": {
"default": true,
"type": "boolean"
},
"clusterRef": {
"type": "string"
},
"defaultTTL": {
"default": 3600,
"format": "int32",
"type": "integer"
},
"dnssecPolicyRef": {
"type": "string"
},
"dynamicUpdate": {
"type": "boolean"
},
"forwarders": {
"items": {
"type": "string"
},
"type": "array"
},
"primaries": {
"items": {
"type": "string"
},
"type": "array"
},
"records": {
"items": {
"properties": {
"name": {
"default": "@",
"type": "string"
},
"ttl": {
"format": "int32",
"type": "integer"
},
"type": {
"type": "string"
},
"values": {
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"type",
"values"
],
"type": "object"
},
"type": "array"
},
"transferKeyRef": {
"type": "string"
},
"type": {
"default": "primary",
"enum": [
"primary",
"secondary",
"forward",
"stub"
],
"type": "string"
},
"updateKeyRef": {
"type": "string"
},
"viewRef": {
"type": "string"
},
"zoneName": {
"type": "string"
}
},
"required": [
"clusterRef",
"zoneName"
],
"type": "object"
},
"status": {
"properties": {
"conditions": {
"items": {
"properties": {
"lastTransitionTime": {
"format": "date-time",
"type": "string"
},
"message": {
"maxLength": 32768,
"type": "string"
},
"observedGeneration": {
"format": "int64",
"minimum": 0,
"type": "integer"
},
"reason": {
"maxLength": 1024,
"minLength": 1,
"pattern": "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$",
"type": "string"
},
"status": {
"enum": [
"True",
"False",
"Unknown"
],
"type": "string"
},
"type": {
"maxLength": 316,
"pattern": "^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$",
"type": "string"
}
},
"required": [
"lastTransitionTime",
"message",
"reason",
"status",
"type"
],
"type": "object"
},
"type": "array",
"x-kubernetes-list-map-keys": [
"type"
],
"x-kubernetes-list-type": "map"
},
"observedGeneration": {
"format": "int64",
"type": "integer"
},
"phase": {
"type": "string"
},
"recordCount": {
"format": "int32",
"type": "integer"
},
"serial": {
"format": "int64",
"type": "integer"
},
"signed": {
"type": "boolean"
}
},
"type": "object"
}
},
"type": "object"
}