53090d1798
Replaces the isc-dhcpd PXE-boot VM with the kea-operator (v0.1.0) and an HA kea pair, managed by ArgoCD. Deploys on a new, unused anycast IP; the production cutover off the current dhcpd address is a separate later task. - Add apps/base/dhcp-system: namespace, kea-operator RBAC + Deployment, VPA, and the kea.unkin.net CRDs pulled from the operator repo at v0.1.0. - Add the CRs translating the legacy dhcpd config: KeaCluster (2 replicas, hot-standby HA, main.unkin.net, 1200/86400 leases, AU ntp pool), five KeaSubnets 198.18.13-17.0/24 (gateways .254 except .17->.1 per the puppet dhcp hieradata), Legacy/UEFI-64 PXE client classes, and the KeaAPI. - Pin the DHCP LoadBalancer Service to the free common-pool IP 198.18.200.10 via PureLB (not the current dhcpd anycast 198.18.19.18). - Provision the KeaAPI bearer token via an operator-generated Secret. - Commit generated kea.unkin.net JSON schemas for kubeconform. - Register dhcp-system in the platform ApplicationSet and AppProject. Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
47 lines
1.5 KiB
YAML
47 lines
1.5 KiB
YAML
---
|
|
apiVersion: v1
|
|
kind: ServiceAccount
|
|
metadata:
|
|
name: kea-operator
|
|
namespace: dhcp-system
|
|
---
|
|
# Sourced from the kea-operator repo config/rbac/role.yaml (v0.1.0). Leader
|
|
# election is disabled so no coordination.k8s.io/leases grant is needed.
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRole
|
|
metadata:
|
|
name: kea-operator
|
|
rules:
|
|
- apiGroups: [""]
|
|
resources: ["configmaps", "secrets", "serviceaccounts", "services"]
|
|
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
|
|
- apiGroups: [""]
|
|
resources: ["pods"]
|
|
verbs: ["get", "list", "watch"]
|
|
- apiGroups: ["apps"]
|
|
resources: ["deployments", "statefulsets"]
|
|
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
|
|
- apiGroups: ["kea.unkin.net"]
|
|
resources: ["keaapis", "keaclientclasses", "keaclusters", "keasubnets"]
|
|
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
|
|
- apiGroups: ["kea.unkin.net"]
|
|
resources:
|
|
["keaapis/status", "keaclientclasses/status", "keaclusters/status", "keasubnets/status"]
|
|
verbs: ["get", "patch", "update"]
|
|
- apiGroups: ["rbac.authorization.k8s.io"]
|
|
resources: ["rolebindings", "roles"]
|
|
verbs: ["create", "delete", "get", "list", "patch", "update", "watch"]
|
|
---
|
|
apiVersion: rbac.authorization.k8s.io/v1
|
|
kind: ClusterRoleBinding
|
|
metadata:
|
|
name: kea-operator
|
|
subjects:
|
|
- kind: ServiceAccount
|
|
name: kea-operator
|
|
namespace: dhcp-system
|
|
roleRef:
|
|
apiGroup: rbac.authorization.k8s.io
|
|
kind: ClusterRole
|
|
name: kea-operator
|