Installing kro
Install kro on your Kubernetes cluster using Helm.
Prerequisites
Kro can be installed via Helm or raw manifests. Pick the solution that best fits you.
- Helm 3.x installed (only for helm installation)
- kubectl configured to access your cluster
Installation
- Quick Start
- Pinned Version
- Raw manifest installation
Install the latest version:
helm install kro oci://registry.k8s.io/kro/charts/kro \
--namespace kro-system \
--create-namespace
Install a specific version for reproducible deployments:
# Set the version you want to install
export KRO_VERSION=0.6.2
# Install kro
helm install kro oci://registry.k8s.io/kro/charts/kro \
--namespace kro-system \
--create-namespace \
--version=${KRO_VERSION}
Or automatically use the latest release:
# Fetch latest release version
export KRO_VERSION=$(curl -sL \
https://api.github.com/repos/kubernetes-sigs/kro/releases/latest | \
jq -r '.tag_name | ltrimstr("v")')
# Verify version
echo $KRO_VERSION
# Install kro
helm install kro oci://registry.k8s.io/kro/charts/kro \
--namespace kro-system \
--create-namespace \
--version=${KRO_VERSION}
Select which pre-built flavour you would like to install
| variant | Prometheus scrape config |
|---|---|
| kro-core-install-manifests | Not installed |
| kro-core-install-manifests-with-prometheus | Installed |
Fetch the latest release version from GitHub
export KRO_VERSION=$(curl -sL \
https://api.github.com/repos/kubernetes-sigs/kro/releases/latest | \
jq -r '.tag_name | ltrimstr("v")'
)
export KRO_VARIANT=kro-core-install-manifests
echo $KRO_VERSION
kubectl create namespace kro-system
kubectl apply -f https://github.com/kubernetes-sigs/kro/releases/download/$KRO_VERSION/$KRO_VARIANT.yaml
Verify Installation
- Helm installation
- Raw manifest installation
Check the Helm release:
helm list -n kro-system
Expected output:
NAME NAMESPACE REVISION STATUS
kro kro-system 1 deployed
Check the kro pod is running:
kubectl get pods -n kro-system
Expected output:
NAME READY STATUS RESTARTS AGE
kro-7d98bc6f46-jvjl5 1/1 Running 0 30s
Check the Helm release:
Check the kro pod is running:
```bash
kubectl get pods -n kro-system
Expected output:
NAME READY STATUS RESTARTS AGE
kro-7d98bc6f46-jvjl5 1/1 Running 0 30s
Upgrade
- Latest Version
- Specific Version
- Raw manifest installation
helm upgrade kro oci://registry.k8s.io/kro/charts/kro \
--namespace kro-system
export KRO_VERSION=0.6.2
helm upgrade kro oci://registry.k8s.io/kro/charts/kro \
--namespace kro-system \
--version=${KRO_VERSION}
Helm does not update CRDs automatically. If a new version includes CRD changes, you may need to manually apply them. Check the release notes for CRD updates.
export KRO_VERSION=$(curl -sL \
https://api.github.com/repos/kubernetes-sigs/kro/releases/latest | \
jq -r '.tag_name | ltrimstr("v")'
)
export KRO_VARIANT=kro-core-install-manifests
kubectl apply -f https://github.com/kubernetes-sigs/kro/releases/download/$KRO_VERSION/$KRO_VARIANT.yaml
Kubectl installation does remove old objects. You may need to manually remove any object that was removed in the new version of Kro.
Uninstall
- Helm installation
- Raw manifest installation
helm uninstall kro -n kro-system
kubectl delete -f https://github.com/kubernetes-sigs/kro/releases/download/$KRO_VERSION/$KRO_VARIANT.yaml
This removes the kro controller but preserves your RGDs and deployed instances. To fully clean up, manually delete instances and RGDs before uninstalling.