Installation

Deploy the ITOps platform (core API + UI + PostgreSQL) into a Kubernetes cluster. Self-hosted, single Helm chart, sensible defaults.

Prerequisites

Default install (bundled PostgreSQL)

helm repo add itops https://charts.mlops.hu
helm repo update
helm install itops itops/itops -n itops --create-namespace

Deploys everything in one namespace with defaults: admin login admin / Password123!, ClusterIP services, no external access yet. Works out of the box for internal use or port-forward testing.

External access

helm install itops itops/itops -n itops --create-namespace \
  --set ingress.hosts[0].host=api.yourdomain.com \
  --set ingress.tls[0].hosts[0]=api.yourdomain.com \
  --set ingress.tls[0].secretName=itops-api-tls \
  --set uiIngress.hosts[0].host=app.yourdomain.com \
  --set uiIngress.tls[0].hosts[0]=app.yourdomain.com \
  --set uiIngress.tls[0].secretName=itops-ui-tls \
  --set ui.apiUrl=https://api.yourdomain.com \
  --set ui.wsHost=api.yourdomain.com

Two Ingress objects: ingress for the API (GraphQL + REST + WebSocket), uiIngress for the SPA. The UI injects ui.apiUrl at runtime via an nginx entrypoint so the Docker image is environment-agnostic.

External PostgreSQL

For production, use a managed Postgres (RDS, Cloud SQL, self-managed cluster) instead of the bundled Bitnami instance:

--set postgresql.enabled=false \
  --set env.ITOPS_DATABASE_HOST=my-postgres.internal \
  --set env.ITOPS_DATABASE_PORT=5432 \
  --set env.ITOPS_DATABASE_NAME=itops \
  --set env.ITOPS_DATABASE_USER=itops \
  --set secretEnv.ITOPS_DATABASE_PASSWORD=<password>

The chart creates the schema via auto-migration on first startup (14 migrations, all idempotent).

Secrets

secretEnv:
  ITOPS_DATABASE_PASSWORD: "<db password>"
  ITOPS_JWT_SECRET: "<32+ char random string>"
  ITOPS_SECURITY_OPERATOR_API_KEY: "<32+ char random string>"
  ITOPS_LICENSE_KEY: "<ed25519 JWT>"   # Required for paid features

Generate a license with go run ./cmd/license-gen --customer "Name" --plugins "ticketing,sla" --max-users 999 --valid-days 365 from the core repo.

Upgrade

helm repo update itops
helm upgrade itops itops/itops -n itops

Migrations run automatically on first pod start after upgrade. Rollback with helm rollback itops <revision>.

Uninstall

helm uninstall itops -n itops

Leaves the PostgreSQL PVC intact so you can re-install without data loss. Delete the namespace to wipe everything: kubectl delete ns itops.

Full values reference

helm show values itops/itops

Every value documented inline. For agent installation see Agent Deploy.