Skip to content

Commit 62035aa

Browse files
stubbiclaude
andcommitted
docs: document spec.networking.httpRoute and HTTPRouteReady
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
1 parent 11efdd6 commit 62035aa

2 files changed

Lines changed: 31 additions & 2 deletions

File tree

docs/api-reference.md

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
**Short names:** `hi`, `hermes`
4343
**Categories:** `hermes`, `agents`
4444

45-
HermesInstance describes a single hermes-agent deployment backed by a StatefulSet and a PVC. The controller reconciles all subsystems (ConfigMap, Service, StatefulSet, NetworkPolicy, RBAC, PDB, HPA, Ingress, ServiceMonitor, PrometheusRule) and reports readiness via `.status.conditions`.
45+
HermesInstance describes a single hermes-agent deployment backed by a StatefulSet and a PVC. The controller reconciles all subsystems (ConfigMap, Service, StatefulSet, NetworkPolicy, RBAC, PDB, HPA, Ingress, HTTPRoute, ServiceMonitor, PrometheusRule) and reports readiness via `.status.conditions`.
4646

4747
### spec.image
4848

@@ -190,6 +190,23 @@ Exposes the agent via a Service and optionally an Ingress.
190190
| `spec.networking.ingress.path` | `string` | `/` | URL path for the Ingress rule. |
191191
| `spec.networking.ingress.servicePortName` | `string` | `gateway` | Name of the Service port the Ingress routes to. |
192192

193+
#### spec.networking.httpRoute
194+
195+
Optional Gateway API HTTPRoute, an alternative to the Ingress for clusters that
196+
run a Gateway API implementation. The operator emits an unstructured
197+
`gateway.networking.k8s.io/v1` HTTPRoute (no extra controller dependency); the
198+
Gateway API CRDs must be installed for the route to take effect. The route
199+
mirrors the Ingress shape: a single prefix rule routing to the agent Service.
200+
201+
| Field | Type | Default | Description |
202+
|---|---|---|---|
203+
| `spec.networking.httpRoute.enabled` | `*bool` | `false` | When true, the operator creates an HTTPRoute for the agent. |
204+
| `spec.networking.httpRoute.parentRefs` | `[]HTTPRouteParentRef` | `[]` | Gateways (or other parents) the route attaches to. Each entry has a required `name` and optional `namespace` and `sectionName`. |
205+
| `spec.networking.httpRoute.hostnames` | `[]string` (listType=set) | `[]` | Hostnames matched by the route. |
206+
| `spec.networking.httpRoute.path` | `string` | `/` | Path prefix routed to the agent Service. |
207+
| `spec.networking.httpRoute.servicePortName` | `string` | `gateway` | Name of the Service port the route targets; resolved to the Service port number. |
208+
| `spec.networking.httpRoute.annotations` | `map[string]string` | `nil` | Annotations applied verbatim to the HTTPRoute. |
209+
193210
### spec.observability
194211

195212
Controls metrics exposure, Prometheus Operator integration, and logging configuration.
@@ -433,7 +450,7 @@ The Honcho-side PVC layout that Plan 4's `addProfileSnapshot` Job writes to is `
433450
| `status.phase` | `string` | Short human-readable status. Values: `Pending`, `Ready`, `Degraded`, `Suspended`. |
434451
| `status.replicas` | `int32` | Latest observed StatefulSet replica count. |
435452
| `status.readyReplicas` | `int32` | Latest observed ready-replica count. |
436-
| `status.conditions` | `[]metav1.Condition` (listType=map, listMapKey=type) | Subsystem readiness conditions. See `docs/conditions.md` for the full catalogue. Condition types: `StorageReady`, `ConfigReady`, `SecretsReady`, `NetworkPolicyReady`, `RBACReady`, `ServiceReady`, `PDBReady`, `HPAReady`, `IngressReady`, `ServiceMonitorReady`, `PrometheusRuleReady`, `Ready`. |
453+
| `status.conditions` | `[]metav1.Condition` (listType=map, listMapKey=type) | Subsystem readiness conditions. See `docs/conditions.md` for the full catalogue. Condition types: `StorageReady`, `ConfigReady`, `SecretsReady`, `NetworkPolicyReady`, `RBACReady`, `ServiceReady`, `PDBReady`, `HPAReady`, `IngressReady`, `HTTPRouteReady`, `ServiceMonitorReady`, `PrometheusRuleReady`, `Ready`. |
437454

438455
---
439456

docs/conditions.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,18 @@ The agent's ServiceAccount and (when SelfConfig is enabled) the Role+RoleBinding
107107

108108
Troubleshooting: `kubectl get sa,role,rolebinding -l app.kubernetes.io/instance=<name>`.
109109

110+
### `HTTPRouteReady`
111+
112+
Optional Gateway API HTTPRoute (`spec.networking.httpRoute`). Only meaningful
113+
when a Gateway API implementation is installed.
114+
115+
| Status | Reason | When |
116+
|---|---|---|
117+
| True | `Reconciled` | `spec.networking.httpRoute.enabled=true` and the `gateway.networking.k8s.io/v1` HTTPRoute named `<instance>` exists with owner-ref and matches the spec, OR `enabled=false`/unset and no operator-owned route exists. |
118+
| False | `Error` | The HTTPRoute could not be applied (most often the Gateway API CRDs are not installed). `message` carries the API error. |
119+
120+
Troubleshooting: ensure the Gateway API CRDs are installed (`kubectl get crd httproutes.gateway.networking.k8s.io`) and inspect with `kubectl get httproute -l app.kubernetes.io/instance=<name>`.
121+
110122
### `GatewayReady`
111123

112124
Per-platform gateway wiring (Telegram/Discord/Slack/WhatsApp/Signal).

0 commit comments

Comments
 (0)