{
  "slug": "install/kubernetes",
  "title": "Install on Kubernetes",
  "description": "Deploy Cuitty to a Kubernetes cluster using the Helm chart, suitable for production workloads.",
  "url": "https://cuitty.com/docs/install/kubernetes",
  "markdown_url": "https://cuitty.com/docs/install/kubernetes.md",
  "json_url": "https://cuitty.com/docs/install/kubernetes.json",
  "frontmatter": {
    "title": "Install on Kubernetes",
    "description": "Deploy Cuitty to a Kubernetes cluster using the Helm chart, suitable for production workloads.",
    "order": 2,
    "section": "Install",
    "updatedAt": "2026-04-27"
  },
  "headings": [
    {
      "depth": 1,
      "slug": "install-on-kubernetes",
      "text": "Install on Kubernetes"
    },
    {
      "depth": 2,
      "slug": "prerequisites",
      "text": "Prerequisites"
    },
    {
      "depth": 2,
      "slug": "install-the-chart",
      "text": "Install the chart"
    },
    {
      "depth": 2,
      "slug": "values",
      "text": "Values"
    },
    {
      "depth": 2,
      "slug": "upgrades",
      "text": "Upgrades"
    }
  ],
  "body_markdown": "# Install on Kubernetes\n\nThe official Helm chart deploys Cuitty as a stateful application backed by an external Postgres and an in-cluster SpiceDB.\n\n## Prerequisites\n\n- Kubernetes 1.27 or newer\n- Helm 3.13 or newer\n- An external Postgres 15+ (RDS, Cloud SQL, or self-managed)\n- A persistent volume class for libSQL data\n\n## Install the chart\n\n```bash\nhelm repo add cuitty https://charts.cuitty.com\nhelm repo update\n\nhelm install cuitty cuitty/cuitty \\\n  --namespace cuitty --create-namespace \\\n  --set postgres.url=postgres://cuitty@db.example.com/cuitty \\\n  --set auth.secretRef=cuitty-secrets\n```\n\nThe chart provisions:\n\n- `Deployment` for the portal (3 replicas by default)\n- `StatefulSet` for SpiceDB\n- `PersistentVolumeClaim` for libSQL data\n- `Service` and optional `Ingress`\n- `NetworkPolicy` restricting egress to allowlisted destinations\n\n## Values\n\n| Key                         | Default       | Notes                                                         |\n| --------------------------- | ------------- | ------------------------------------------------------------- |\n| `replicaCount`              | `3`           | Portal HTTP replicas.                                         |\n| `postgres.url`              | required      | Postgres DSN. Use a `Secret` and `valueFrom` in production.   |\n| `spicedb.replicaCount`      | `2`           | SpiceDB replicas. Increase for higher RBAC throughput.        |\n| `libsql.storage.size`       | `20Gi`        | Per-module event storage.                                     |\n| `ingress.enabled`           | `false`       | Enable to expose `/` via your ingress controller.             |\n| `image.tag`                 | chart version | Pin to a specific portal tag in production.                   |\n\n## Upgrades\n\nHelm runs database migrations as a `Job` before swapping the new pod template. A failed migration aborts the upgrade with the previous version still serving.\n\n```bash\nhelm upgrade cuitty cuitty/cuitty --version 0.4.0\n```",
  "links_out": []
}