Skip to main content

Installing Krateo PlatformOps

Basic Installation

Installing Krateo with default configuration is quick and easy.

You will need:

  • Helm: These instructions were tested with v3.13.1.
  • A Kubernetes cluster.
note

Krateo PlatformOps installer is a flexible workflow engine that executes sequential steps. The installer-chart is a helper that provider already baked configurations for Krateo PlatformOps. It is however possible to implement a custom installer.

If you have any Docker-compatible container runtime installed (including native Docker, Docker Desktop, or OrbStack), you can easily launch a disposable cluster just for this quickstart using kind.

helm repo add krateo https://charts.krateo.io
helm repo update krateo

kind create cluster \
--wait 120s \
--config - <<EOF
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
name: krateo-quickstart
nodes:
- role: control-plane
- role: worker
extraPortMappings:
- containerPort: 30080 # Krateo Portal
hostPort: 30080
- containerPort: 30081 # Krateo BFF
hostPort: 30081
- containerPort: 30082 # Krateo AuthN Service
hostPort: 30082
- containerPort: 30443 # Krateo Gateway
hostPort: 30443
- containerPort: 31180 # Krateo FireworksApp Frontend
hostPort: 31180
- containerPort: 31443 # vCluster API Server Port
hostPort: 31443
networking:
# By default the API server listens on a random open port.
# You may choose a specific port but probably don't need to in most cases.
# Using a random port makes it easier to spin up multiple clusters.
apiServerPort: 6443
EOF

helm upgrade installer installer \
--repo https://charts.krateo.io \
--namespace krateo-system \
--create-namespace \
--install \
--wait
info

While this option is a bit more complex than using Docker Desktop or OrbStack directly, it offers the advantage of being fully-disposable. If your cluster reaches a state you are dissatisfied with, you can simply destroy it and launch a new one.

At the end of this process:

info

Krateo PlatformOps requires access to Kubernetes CertificateAuthority certificate and key in order to generate certificates for logged users. For this reason we provide with the installer the default installation of vCluster (https://github.com/loft-sh/vcluster) in order to provide a sandboxed installation of Krateo PlatformOps.

info

The installer by default deploys a starter-pack with example to immediately start to play with Krateo PlatformOps. The starter-pack is available here: https://github.com/krateoplatformops/installer-starter-pack.

Wait until Krateo frontend is running:

kubectl wait --for=condition=Ready $(kubectl get pods --field-selector=status.phase!=Succeeded,status.phase!=Failed --output=name -n krateo-system | grep '^pod/krateo-frontend') -n krateo-system

kubectl wait krateoplatformops vcluster --for condition=Ready=True --timeout=300s --namespace krateo-system

kubectl wait deployment vcluster-k8s --for condition=Available=True --timeout=300s --namespace krateo-system

curl -L -o vcluster "https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-linux-amd64" && chmod +x vcluster
./vcluster connect vcluster-k8s

kubectl wait krateoplatformops krateo --for condition=Ready=True --timeout=300s --namespace krateo-system

Advanced Installation

If you're not interested in the Krateo PlatformOps starter-pack, you can disable this option and you'll get a deployment without examples.

helm install installer krateo/installer --create-namespace -n krateo-system --set krateoplatformops.init.service=LoadBalancer --wait

Wait until Krateo frontend is running:

kubectl wait --for=condition=Ready $(kubectl get pods --field-selector=status.phase!=Succeeded,status.phase!=Failed --output=name -n krateo-system | grep '^pod/krateo-frontend') -n krateo-system

kubectl wait krateoplatformops vcluster --for condition=Ready=True --timeout=300s --namespace krateo-system

kubectl wait deployment vcluster-k8s --for condition=Available=True --timeout=300s --namespace krateo-system

curl -L -o vcluster "https://github.com/loft-sh/vcluster/releases/latest/download/vcluster-linux-amd64" && chmod +x vcluster
./vcluster connect vcluster-k8s

kubectl wait krateoplatformops krateo --for condition=Ready=True --timeout=300s --namespace krateo-system