Skip to main content


Install Otomi with Helm

Add the Otomi repository

helm repo add otomi
helm repo update

See helm repo for command documentation.

Minimal configuration


As of version 1.0.0 Otomi supports Kubernetes versions 1.25,1.26 and 1.27.


The Otomi Builds and Projects features and using Harbor for private registries is NOT supported when Otomi is installed with minimal configuration. Install Otomi with DNS to use all Otomi features.

name: # the name of your cluster
provider: # choose between aws, azure, google, digitalocean, ovh, vultr, scaleway or custom

When the chart is installed, follow the activation steps.

Custom values

To view the required values.yaml file with detailed comments, view and download the chart's latest values.yaml. Run the following command to view all the values (which might be overwhelming):

helm show values otomi/otomi

To test wether the input values are correct run the following command:

helm template -f values.yaml otomi/otomi

Install the Chart

Install the chart with the following command:

helm install -f values.yaml otomi otomi/otomi

Monitoring the chart install

The chart deploys a Job (otomi) in the default namespace. Monitor the chart install using kubectl:

# get the status of the job
kubectl get job otomi -w
# watch the helm chart install status:
watch helm list -Aa

Or view detailed info about kubernetes resources with k9s

When the chart is installed, follow the activation steps

Installing from source

As an alternative, you can also clone the otomi-core source code from the Github and install otomi using the chart source code.

Download source

git clone
cd otomi-core


Now customize the values.yaml file.

Use the following command to install the chart with the name my-otomi-release (a custom name that you choose).

helm install -f values.yaml my-otomi-release chart/otomi

Uninstalling Otomi

helm uninstall my-otomi-release

Doing a Helm uninstall will remove all Helm releases deployed by Otomi. After uninstalling, some namespaces created by Otomi can stay in a Terminating status. To remove all namespaces in a Terminating status, run the following command:

for ns in $(kubectl get ns --field-selector status.phase=Terminating -o jsonpath='{.items[*]}'); do kubectl get ns $ns -ojson | jq '.spec.finalizers = []' | kubectl replace --raw "/api/v1/namespaces/$ns/finalize" -f -; done