You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: deploy/knative/README-ocp.md
+16-7Lines changed: 16 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,22 +3,26 @@
3
3
`deploy/knative/setup-ocp.sh` stands up the serverless-harness stack on
4
4
**OpenShift 4.20+** — the OpenShift-native sibling of [`setup-kind.sh`](setup-kind.sh).
5
5
It installs OpenShift Serverless (Knative + Kourier), Redis, the sandbox pod, the
6
-
`leaf-work` PVC, the LLM-credentials secret, and the harness Knative Service,
7
-
reachable over its **auto-created OpenShift Route**.
6
+
LLM-credentials secret, and the harness Knative Service, reachable over its
7
+
**auto-created OpenShift Route**.
8
8
9
9
Base bring-up only — see [Scope](#scope) for what is deferred.
10
10
11
11
## Prerequisites
12
12
13
13
-**`oc`**, logged in to an OpenShift **4.20+** cluster as **cluster-admin**
14
14
(operator installs + SCC assignment require it).
15
-
- A default **StorageClass** for the `leaf-work` PVC (the script fails fast if
15
+
- A default **StorageClass** for the sandbox's durable `/workspace` PVC (the script fails fast if
16
16
none exists). See the [storage caveat](#storage--scc).
17
17
- A model credential:
18
18
-`ANTHROPIC_API_KEY` (direct), **or**
19
19
-`ANTHROPIC_AUTH_TOKEN` + `ANTHROPIC_BASE_URL` (Bearer-token gateway, e.g. LiteLLM).
20
20
- The harness image. By default the script pulls the published
21
21
`ghcr.io/kagenti/serverless-harness:latest`; override with `--image`.
22
+
-**agent-sandbox controller** (kubernetes-sigs v0.5.0) is installed by the script
23
+
(`sandboxes.agents.x-k8s.io`); it creates the `sandbox-0` pod from the Sandbox CR
24
+
and provisions its durable `/workspace` PVC. The harness resolves the pod via the
25
+
CR's `.status.selector` and `kubectl exec`s tool calls into it.
22
26
23
27
## Quick start
24
28
@@ -63,7 +67,7 @@ creates a real Route per Knative Service (`oc get ksvc serverless-harness -o jso
63
67
| Knative config | Autoscaler tuning + the `podspec-persistent-volume-claim`/`-write`/`-securitycontext` feature flags are set in the **`KnativeServing` CR spec** (the operator reverts direct `config-*` ConfigMap patches). |
| Sandbox | Pre-baked image ([`sandbox.Dockerfile`](sandbox.Dockerfile), `USER 65532`), built in-cluster against the internal registry (or supplied via `--sandbox-image`). |
| Harness | Knative Service applied via the [`overlays/ocp`](overlays/ocp) kustomize overlay; SA granted the `nonroot-v2` SCC. |
68
72
| Ingress | Auto-created OpenShift Route. |
69
73
@@ -144,11 +148,12 @@ and verifying the async-leaf path itself on OpenShift is a further step.
144
148
145
149
## Storage & SCC
146
150
147
-
-**Storage / RWX.**`leaf-work` is `ReadWriteOnce`. On block storage (e.g. AWS EBS
151
+
-**Storage / RWX.**The sandbox's `/workspace` PVC is `ReadWriteOnce`. On block storage (e.g. AWS EBS
148
152
`gp3-csi`) it binds to a single node — fine for a single harness consumer.
149
153
Concurrent multi-node scale-out, or co-mounting with the leaf-orchestrator, needs
150
154
a **RWX** StorageClass (a filesystem provisioner). The base bring-up does not deploy
151
155
the orchestrator. Set a specific class by making it the cluster default before install.
156
+
RWX, if ever needed for a shared sandbox pool, lives on the sandbox tier (P2) — never the harness.
152
157
-**SCC.** The published harness image declares no `USER` (defaults to root), so it
153
158
runs as an explicit non-root UID (65532) and the script grants the harness
154
159
ServiceAccount the `nonroot-v2` SCC (`oc adm policy add-scc-to-user nonroot-v2 -z
@@ -174,7 +179,7 @@ and verifying the async-leaf path itself on OpenShift is a further step.
174
179
|---------|-------------|
175
180
|`ksvc` never Ready, pod `CreateContainerConfigError: container has runAsNonRoot and image will run as root`| The `nonroot-v2` SCC grant didn't apply. Re-run the script, or `oc adm policy add-scc-to-user nonroot-v2 -z serverless-harness -n <ns>`. |
176
181
|`ksvc` never Ready, pod `CrashLoopBackOff` with `ERR_MODULE_NOT_FOUND`| The harness image is broken/stale. Use a newer `--image` (the fix shipped in the image build; see the repo history). |
177
-
|`leaf-work` PVC stuck `Pending`| No (default) StorageClass. Set one, or ensure a provisioner is installed. |
182
+
|Sandbox `/workspace` PVC stuck `Pending`| No (default) StorageClass. Set one, or ensure a provisioner is installed. |
178
183
|`oc apply -k overlays/ocp` fails with a load-restrictor / "not in or below" error | The overlay references shared base YAMLs one level up. Render with `oc kustomize --load-restrictor LoadRestrictionsNone deploy/knative/overlays/ocp \| oc apply -f -` — `setup-ocp.sh` does this for you. |
179
184
|`/turn` returns `"Connection error"`| The harness can't reach its configured Anthropic endpoint from the cluster (egress/gateway reachability). `/health` and session creation still work. |
180
185
@@ -183,7 +188,11 @@ and verifying the async-leaf path itself on OpenShift is a further step.
0 commit comments