Skip to main content

Deployment on OKE

StartupOS runs on Oracle Kubernetes Engine (OKE) in ap-hyderabad-1, in the namespace startupos.

Deployment on OKE. Inside OCI in the Hyderabad region, an OKE cluster with arm64 worker nodes runs the namespace startupos. The namespace holds the ingress, two frontend pods, one pod per service, two Keycloak pods, PostgreSQL, Redis, Kafka, and the LiveKit server and egress. Lesson video and recordings are in OCI Object Storage. Container images come from the OCI registry.

What was observed​

A read-only check on 2026-11-07 against the production cluster found:

  • Kubernetes v1.36.1 on three worker nodes, all arm64.
  • One replica of each backend service, two of the frontend and two of Keycloak.
  • One replica each of PostgreSQL, Redis, Kafka, the LiveKit server and the LiveKit egress.
  • A legacy Deployment, startupos-backend, which is not part of the eight services documented here.

The manifest for the LiteLLM proxy exists in infra/k8s/litellm-deployment.yaml, but no LiteLLM Deployment was among the live Deployments. Whether the copilot is wired to a live model endpoint is unverified.

Images​

All images are linux/arm64. They are built with podman and pushed to the OCI registry (OCIR) in ap-hyderabad-1, under startupos/<service>:<tag>. Tags are unique and dated. :latest is not used for new work. See Build and deploy.

Infrastructure as code​

Terraform in infra/terraform declares OCI resources, including the object storage bucket module. Kubernetes manifests are in infra/k8s and infra/oci-devops/deploy. Some live resources are not in the repository. The runbook docs/runbooks/prod-out-of-band-resources.md lists them.

A note on node architecture​

Older notes in the repository say the cluster is amd64 in places. The live nodes are arm64, and builds target arm64.

Sources: infra/k8s/*.yaml, infra/terraform, .kiro/steering/project-commands.md, docs/runbooks/prod-out-of-band-resources.md, live read on 2026-11-07.