Deploy on GKE

Run Hiver on Google Kubernetes Engine. This builds on the Kubernetes guide with GKE-specific cluster setup.

Prerequisites

  • A GCP project with billing enabled
  • gcloud CLI installed and authenticated
  • kubectl and helm (v3+) installed

Create a GKE cluster

gcloud container clusters create hiver-cluster \
  --zone us-central1-a \
  --num-nodes 3 \
  --machine-type n2-standard-4

gcloud container clusters get-credentials hiver-cluster --zone us-central1-a

The default microVM images require nested virtualization on the nodes. See MicroVM runtime for enabling it, or use the plain container image variants if your node pool doesn't support it.

Install with Helm

Install the chart exactly as in the Kubernetes guide:

helm repo add hiver https://hiver-sh.github.io/hiver
helm repo update
helm install hiver hiver/hiver

The chart creates its own hiver and hiver-sandbox namespaces.

Expose the gateway

The gateway is a LoadBalancer Service, so GKE provisions an external IP for it (a <pending> value means it's still being assigned):

kubectl get svc gateway -n hiver \
  -o jsonpath='{.status.loadBalancer.ingress[0].ip}'

Verify

kubectl get pods -n hiver
# NAME                          READY   STATUS    AGE
# controller-7d9f6b8c4-xkqzp    1/1     Running   2m
# gateway-5b8f9d6c3-rplwk       1/1     Running   2m

Connect a client

Point the SDK at the gateway's external IP:

index.ts
import { getOrCreateSandbox } from "@hiver.sh/client";

const sandbox = await getOrCreateSandbox("my-sandbox", { image: "python" }, {
  gatewayUrl: "http://<gateway-ip>",
});