Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion enterprise/k8s-install/eks.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,33 +16,33 @@
| EKS version | A currently-supported version that [Sysbox](/enterprise/k8s-install/sysbox) supports |
| Add-ons | VPC CNI, CoreDNS, kube-proxy, and the **EBS CSI driver** (sandboxes and stateful components use EBS volumes) |
| Storage class | A `gp3` StorageClass backed by the EBS CSI driver |
| Metrics | Metrics Server, for `kubectl top` and autoscaling |

Check warning on line 19 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L19

Did you really mean 'autoscaling'?

Set `runtime-api.env.STORAGE_CLASS` to your `gp3` class.

## Node Pools

We recommend using two separate node pools: a **general** pool for the OpenHands application services
and cluster add-ons, and a **Sysbox** pool for the agent sandboxes. Keeping sandboxes on their own

Check warning on line 26 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L26

Did you really mean 'Sysbox'?
pool isolates the untrusted sandbox workload from your services, and lets the sandbox pool scale

Check warning on line 27 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L27

Did you really mean 'untrusted'?
independently, since sandboxes are created and torn down far more frequently than the services.

- **General pool**: Use standard EKS nodes on the Amazon Linux 2023 AMI, with on-demand or Spot
capacity.
- **Sysbox pool**: Sandboxes need the Sysbox runtime, which requires an Ubuntu AMI, at least 4 vCPU
per node, and on-demand capacity. See [Installing Sysbox](/enterprise/k8s-install/sysbox).

Check warning on line 33 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L33

Did you really mean 'Sysbox'?

We recommend [Karpenter](https://karpenter.sh/) for autoscaling both pools (managed node groups also

Check warning on line 35 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L35

Did you really mean 'autoscaling'?
work). Size the Sysbox pool by peak concurrent sessions, and configure it so a node is only removed

Check warning on line 36 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L36

Did you really mean 'Sysbox'?
when empty, never while a session is running.

Sandboxes are pinned to the Sysbox pool automatically by the `sysbox-runc` RuntimeClass. Keep the

Check warning on line 39 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L39

Did you really mean 'Sysbox'?
OpenHands services and add-ons on the general pool with a node selector.

### Sizing the Sandbox Nodes

Per-sandbox CPU, memory, and ephemeral storage are set on the
[Resource Limits](/enterprise/k8s-install/resource-limits) page. Size your Sysbox nodes around the

Check warning on line 45 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L45

Did you really mean 'Sysbox'?
values you choose there. With the defaults (**0.5 vCPU**, **3 GiB memory**, **10 GiB** ephemeral),
memory is usually the binding constraint, so `m`-family instances (4 GiB per vCPU) pack most
efficiently:
Expand All @@ -57,7 +57,7 @@
Recompute these counts whenever you change the sandbox size. Also size for two more things:

- **Root volume**: ephemeral scratch is the per-sandbox ephemeral request × sandboxes per node. At
the default 10 GiB, a full `m6i.4xlarge` needs ~190 GiB, so give Sysbox nodes a large root volume

Check warning on line 60 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L60

Did you really mean 'Sysbox'?
(200 GiB or more), or prefer more, smaller nodes.
- **Warm capacity**: a new sandbox otherwise waits for a node to boot, which takes a few minutes.
Keeping a small pool of spare capacity (for example a low-priority placeholder Deployment sized to
Expand All @@ -82,7 +82,6 @@

```yaml
filestore:
ephemeral: false
type: s3
bucket: <your-bucket>
region: <your-region>
Expand All @@ -99,9 +98,9 @@

Install an ingress controller on the general pool and expose it with an **AWS Network Load
Balancer**, provisioned directly from Service annotations (no AWS Load Balancer Controller required).
Both Traefik and NGINX are supported:

Check warning on line 101 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L101

Did you really mean 'Traefik'?

- **Traefik (recommended)**: set `ingress.class: traefik` in your OpenHands values. Its default

Check warning on line 103 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L103

Did you really mean 'Traefik'?
`TLSStore` lets one wildcard certificate serve every host.
- **NGINX**: set `ingress.class: nginx` and use `nginx.ingress.kubernetes.io/*` annotations for
per-ingress tuning.
Expand All @@ -116,14 +115,14 @@
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing
```

Then set up certificates and DNS records for the OpenHands hostnames, see

Check warning on line 118 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L118

Did you really mean 'hostnames'?
[DNS and TLS](/enterprise/k8s-install/dns-and-tls).

## Next Steps

<CardGroup cols={2}>
<Card title="Installing Sysbox" icon="cube" href="/enterprise/k8s-install/sysbox">
Install the sandbox runtime on your Sysbox pool.

Check warning on line 125 in enterprise/k8s-install/eks.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/eks.mdx#L125

Did you really mean 'Sysbox'?
</Card>
<Card title="DNS and TLS" icon="lock" href="/enterprise/k8s-install/dns-and-tls">
Automate records and certificates with external-dns and cert-manager.
Expand Down
7 changes: 5 additions & 2 deletions enterprise/k8s-install/installation.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
`app.openhands.example.com` (application), `auth.openhands.example.com`
(login), `runtime-api.openhands.example.com`, and
`<id>-runtime.openhands.example.com` for the per-session sandboxes. Every
hostname sits one label under the base domain, so a single **wildcard**

Check warning on line 32 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L32

Did you really mean 'hostname'?
record `*.openhands.example.com` pointing at your cluster's ingress covers
all of them; see [DNS and TLS](/enterprise/k8s-install/dns-and-tls).
- A **wildcard TLS certificate** for `*.openhands.example.com`, which you provide.
Expand All @@ -47,12 +47,12 @@
--password <your-license-id>
```

## Step 2: Create the namespaces and secrets

Check warning on line 50 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L50

Did you really mean 'namespaces'?

We recommend running agent sandboxes in a namespace separate from the

Check warning on line 52 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L52

Did you really mean 'namespace'?
application. Sandboxes run agent-authored code, so a dedicated namespace keeps

Check warning on line 53 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L53

Did you really mean 'namespace'?
them isolated from the application, database, and secrets. Create both
namespaces now:

Check warning on line 55 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L55

Did you really mean 'namespaces'?

```bash
kubectl create namespace openhands
Expand All @@ -60,7 +60,7 @@
```

The chart references several Kubernetes secrets that you create ahead of
installation, all in the `openhands` namespace:

Check warning on line 63 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L63

Did you really mean 'namespace'?

```bash
kubectl -n openhands create secret generic jwt-secret \
Expand Down Expand Up @@ -144,7 +144,7 @@
data.
</Warning>

The example below uses Traefik, the chart's default ingress class; set

Check warning on line 147 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L147

Did you really mean 'Traefik'?
`ingress.class` and the annotations to match your controller.

```yaml
Expand Down Expand Up @@ -210,10 +210,13 @@
# sandboxes will never start.
STORAGE_CLASS: <your-storage-class>

# Store conversation data in the bundled MinIO, persisted to a volume
# Store conversation data in the bundled MinIO, persisted to a volume.
# minio.enabled is what deploys it, and it defaults to false. With type: s3 and
# no endpoint or credentials set, the app targets the bundled instance.
filestore:
ephemeral: true
type: s3
minio:
enabled: true
persistence:
enabled: true

Expand Down Expand Up @@ -256,7 +259,7 @@
```

<Tip>
The `preflight` and `support-bundle` CLIs are both part of

Check warning on line 262 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L262

Did you really mean 'CLIs'?
[Troubleshoot](https://troubleshoot.sh/docs/#installation). Install them with:

```bash
Expand All @@ -265,7 +268,7 @@
```
</Tip>

Then confirm the application is reachable at your configured hostname and log in.

Check warning on line 271 in enterprise/k8s-install/installation.mdx

View check run for this annotation

Mintlify / Mintlify Validation (allhandsai) - vale-spellcheck

enterprise/k8s-install/installation.mdx#L271

Did you really mean 'hostname'?

## Next Steps

Expand Down
Loading