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.