@@ -24,6 +24,14 @@ The controller continuously reconciles the desired state into:
2424- A Kubernetes ** Service**
2525- A Kubernetes ** HorizontalPodAutoscaler** (when autoscaling is enabled)
2626
27+ It follows Kubernetes controller best practices:
28+
29+ - Idempotent reconciliation — safe to run repeatedly
30+ - Drift detection — updates owned resources when spec changes
31+ - HPA-safe replica management — never overwrites replicas managed by autoscaler
32+ - Conflict-safe status updates via retry-on-conflict
33+ - Owner references — child resources are garbage-collected when the CR is deleted
34+
2735---
2836
2937## Architecture
@@ -44,11 +52,9 @@ The controller continuously reconciles the desired state into:
4452 ▼ ▼ ▼
4553 Deployment Service HPA
4654 │
47- ▼
48- Status Propagation
49- │
50- ▼
51- Prometheus Metrics
55+ ┌────────────┘
56+ ▼
57+ Status Propagation → Prometheus Metrics
5258```
5359
5460The controller:
8995 targetCPUUtilization : 60
9096` ` `
9197
92- ### Field behaviour
98+ ### Field behavior
9399
94100| Field | Default | Notes |
95101|-------|---------|-------|
@@ -167,9 +173,9 @@ The project includes an HTTP tool server that exposes infrastructure operations
167173
168174| Endpoint | Method | Description |
169175| ----------| --------| -------------|
170- | ` POST /tools` | POST | Invoke a tool by name |
171- | ` GET /tools/list` | GET | List available tools |
172- | ` POST /agent` | POST | Natural language interface |
176+ | ` /tools ` | POST | Invoke a tool by name |
177+ | ` /tools/list ` | GET | List available tools |
178+ | ` /agent ` | POST | Natural language interface |
173179
174180** Available tools:**
175181
@@ -275,7 +281,7 @@ SUCCESS! -- 11 Passed | 0 Failed | 0 Pending | 0 Skipped
275281
276282## Local Development
277283
278- ** Prerequisites:** Go 1.21 +, kubectl, a running Kubernetes cluster (kind works well)
284+ ** Prerequisites:** Go 1.25 +, kubectl, a running Kubernetes cluster (kind works well)
279285
280286``` bash
281287# Install CRD into cluster
@@ -302,24 +308,15 @@ go run ./mcp
302308
303309---
304310
305- ## Features
306-
307- ### v0.1
308- - Custom CRD with OpenAPI schema validation
309- - Deployment and Service reconciliation with drift detection
310- - Immutable-field-safe update logic
311- - Status conditions propagated from underlying Deployment
312- - Controller-runtime architecture with owner references
313-
314- ### v0.2
315- - HorizontalPodAutoscaler integration
316- - HPA-safe replica management
317- - Conflict-safe status updates via retry-on-conflict
318- - Prometheus metrics — reconciliation and business-level
311+ ## Capabilities
319312
320- ### v1.0
313+ - Custom CRD (` AIDeployment ` ) with OpenAPI schema validation
314+ - Deployment, Service, and HPA reconciliation with drift detection
315+ - Idempotent, conflict-safe controller following Kubernetes best practices
316+ - HPA integration with stabilization windows tuned for AI workloads
317+ - Status conditions propagated from underlying Deployment readiness
318+ - Prometheus metrics for reconciliation health and business state
321319- ` aictl ` CLI for direct cluster management
322- - HTTP tool server with 5 model lifecycle tools
323- - Natural language agent endpoint
324- - ` spec.image ` , ` spec.port ` , and ` spec.serviceType ` fields fully reconciled
325- - Context propagation and safe error handling throughout tool server
320+ - HTTP tool server exposing 5 model lifecycle operations
321+ - Natural language agent endpoint backed by keyword-based intent parsing
322+ - Owner references for automatic garbage collection of child resources
0 commit comments