Quick Start

This guide installs a released kruntimes build on an existing Kubernetes cluster and executes one Bash Run.

Prerequisites

  • Kubernetes cluster with CRD support
  • kubectl
  • Helm 3

kruntimes runs on Kubernetes. The cluster can be a production cluster or a local development cluster such as kind or minikube . Follow the cluster provider’s setup guide first, then confirm access:

kubectl cluster-info

Install kruntimes

Set the release version used by the Helm charts and images:

KRUNTIMES_VERSION=0.0.2

Install the control plane once per cluster:

helm upgrade --install kruntimes oci://ghcr.io/kruntimes/charts/kruntimes \
  --version "${KRUNTIMES_VERSION}" \
  --namespace kruntimes-system \
  --create-namespace \
  --set scheduler.image=ghcr.io/kruntimes/kruntimes-scheduler \
  --set controller.image=ghcr.io/kruntimes/kruntimes-controller \
  --set runtimed.image=ghcr.io/kruntimes/kruntimes-runtimed

Install the built-in Runtime definitions into the namespace where Runs should execute:

helm upgrade --install kruntimes-runtimes oci://ghcr.io/kruntimes/charts/kruntimes-runtimes \
  --version "${KRUNTIMES_VERSION}" \
  --namespace default \
  --create-namespace \
  --set bash.image=ghcr.io/kruntimes/kruntimes-bash-runtime \
  --set python.image=ghcr.io/kruntimes/kruntimes-python-runtime

The chart appends the chart appVersion to image repositories when the value does not already include a tag or digest. Use image repositories without a tag for the published release path shown above.

Check the control plane and Runtime Pods:

kubectl get deploy -n kruntimes-system
kubectl get runtime,pods -n default

Wait until the control plane and Bash Runtime Pods are ready:

kubectl wait deployment -n kruntimes-system -l app=kruntimes-controller --for=condition=Available --timeout=120s
kubectl wait deployment -n kruntimes-system -l app=kruntimes-scheduler --for=condition=Available --timeout=120s
kubectl wait pod -n default -l runtime=bash --for=condition=Ready --timeout=120s

Run a Command

kubectl apply -n default -f - <<'EOF'
apiVersion: kruntimes.io/v1alpha1
kind: Run
metadata:
  name: hello
spec:
  runtime: bash
  source:
    inline: |
      echo "hello from kruntimes"
  entrypoint: script
EOF

Watch status:

kubectl get run hello -n default -w

Inspect the final object:

kubectl get run hello -n default -o yaml

Inspect logs. If you have the krt CLI installed, use:

krt logs hello -n default

The krt install command is covered in Installation . Without krt, read the assigned Runtime Pod’s structured runtimed logs:

HELLO_POD="$(kubectl get run hello -n default -o jsonpath='{.status.assignedPod}')"
HELLO_UID="$(kubectl get run hello -n default -o jsonpath='{.metadata.uid}')"
kubectl logs "$HELLO_POD" -n default -c runtimed | grep "\"run_uid\":\"${HELLO_UID}\""

Clean Up

helm uninstall kruntimes-runtimes --namespace default --ignore-not-found
helm uninstall kruntimes --namespace kruntimes-system --ignore-not-found

Helm uninstall does not remove kruntimes CRDs. See Installation and Operations Guide for cluster uninstall details.

Next Steps