f31552e192
Replaces the isc-dhcpd PXE-boot VM with the kea-operator + an HA kea pair, GitOps-managed. Deploys on a new, unused anycast IP so nothing is cut over yet; the production cutover off the current dhcpd address (198.18.19.18) is a separate later task. - Add `apps/base/dhcp-system`: namespace, kea-operator RBAC + Deployment (v0.1.0), VPA, and the 4 kea.unkin.net CRDs pulled from the operator repo at tag v0.1.0. - Add CRs translating the legacy dhcpd config (source: puppet `roles/infra/dhcp/server.yaml`): KeaCluster `kea` (2 replicas, hot-standby HA, main.unkin.net, 1200/86400 leases, AU ntp pool); five KeaSubnets 198.18.13-17.0/24 with .200-.220 pools, gateways .254 except .17->.1, next-server 198.18.19.19; Legacy/UEFI-64 PXE client classes; KeaAPI. - DHCP-advertised DNS points at the in-cluster bind-resolvers cluster (PureLB 198.18.200.7), not the legacy 198.18.19.15 forwarder. - Pin the DHCP LoadBalancer Service to the free common-pool IP 198.18.200.10 via PureLB. - KeaAPI bearer token is operator-generated (no plain Secret committed). - Commit generated kea.unkin.net JSON schemas for kubeconform; register dhcp-system in the platform ApplicationSet + AppProject. Client-class object names are lowercased (`legacy`/`uefi-64`) to satisfy RFC1123 since the operator renders the kea class name from metadata.name. https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT --------- Co-authored-by: Ben Vincent <neotheo@gmail.com> Reviewed-on: #333 Co-authored-by: Ben Vincent <ben@unkin.net> Co-committed-by: Ben Vincent <ben@unkin.net>
91 lines
2.1 KiB
YAML
91 lines
2.1 KiB
YAML
# Translation of the legacy ISC dhcpd pools (puppet
|
|
# roles/infra/dhcp/server.yaml): 198.18.13-17.0/24, each a .200-.220 pool,
|
|
# next-server 198.18.19.19. Gateways per the original config:
|
|
# .13/.14/.15/.16 -> .254, .17 -> .1. DNS points at the in-cluster
|
|
# bind-resolvers PureLB IP (198.18.200.7), not the legacy 198.18.19.15.
|
|
---
|
|
apiVersion: kea.unkin.net/v1alpha1
|
|
kind: KeaSubnet
|
|
metadata:
|
|
name: net-198-18-13
|
|
namespace: dhcp-system
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
spec:
|
|
clusterRef: kea
|
|
subnet: 198.18.13.0/24
|
|
pools:
|
|
- 198.18.13.200 - 198.18.13.220
|
|
routers: [198.18.13.254]
|
|
dnsServers: [198.18.200.7]
|
|
domainName: main.unkin.net
|
|
nextServer: 198.18.19.19
|
|
---
|
|
apiVersion: kea.unkin.net/v1alpha1
|
|
kind: KeaSubnet
|
|
metadata:
|
|
name: net-198-18-14
|
|
namespace: dhcp-system
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
spec:
|
|
clusterRef: kea
|
|
subnet: 198.18.14.0/24
|
|
pools:
|
|
- 198.18.14.200 - 198.18.14.220
|
|
routers: [198.18.14.254]
|
|
dnsServers: [198.18.200.7]
|
|
domainName: main.unkin.net
|
|
nextServer: 198.18.19.19
|
|
---
|
|
apiVersion: kea.unkin.net/v1alpha1
|
|
kind: KeaSubnet
|
|
metadata:
|
|
name: net-198-18-15
|
|
namespace: dhcp-system
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
spec:
|
|
clusterRef: kea
|
|
subnet: 198.18.15.0/24
|
|
pools:
|
|
- 198.18.15.200 - 198.18.15.220
|
|
routers: [198.18.15.254]
|
|
dnsServers: [198.18.200.7]
|
|
domainName: main.unkin.net
|
|
nextServer: 198.18.19.19
|
|
---
|
|
apiVersion: kea.unkin.net/v1alpha1
|
|
kind: KeaSubnet
|
|
metadata:
|
|
name: net-198-18-16
|
|
namespace: dhcp-system
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
spec:
|
|
clusterRef: kea
|
|
subnet: 198.18.16.0/24
|
|
pools:
|
|
- 198.18.16.200 - 198.18.16.220
|
|
routers: [198.18.16.254]
|
|
dnsServers: [198.18.200.7]
|
|
domainName: main.unkin.net
|
|
nextServer: 198.18.19.19
|
|
---
|
|
apiVersion: kea.unkin.net/v1alpha1
|
|
kind: KeaSubnet
|
|
metadata:
|
|
name: net-198-18-17
|
|
namespace: dhcp-system
|
|
annotations:
|
|
argocd.argoproj.io/sync-wave: "1"
|
|
spec:
|
|
clusterRef: kea
|
|
subnet: 198.18.17.0/24
|
|
pools:
|
|
- 198.18.17.200 - 198.18.17.220
|
|
routers: [198.18.17.1]
|
|
dnsServers: [198.18.200.7]
|
|
domainName: main.unkin.net
|
|
nextServer: 198.18.19.19
|