Installing Otomi on Minikube

Sander Rodenhuis
ITNEXT
Published in
4 min readApr 12, 2022

--

Otomi is a self-hosted PaaS for Kubernetes and offers a complete suite of integrated, pre-configured apps combined with automation. Otomi is optimized for running on managed Kubernetes services like AKS, EKS, and GCP, but can now be installed on really any K8s cluster, even on Minikube. So if you’d like to try Otomi, but don’t wanna spin up a cluster in the cloud, now you can!

The new version of Otomi now, by default, installs a minimal set of apps, called the Core. The core offers an advanced ingress architecture based on Istio, Nginx ingress controller, Keycloak, Oauth2 proxy, and cert-manager. With the web UI (Otomi Console) you can add services to the mesh and expose them in a secure way with just one click. All other integrated apps are now optional and can be activated by dragging them into the enabled apps section. In this post, I’ll explain how to install Otomi on Minikube (on Mac) so you can play with it before running it on a cloud K8s cluster and enabling more apps and features.

If you ever have run Minikube, you’ll probably have used the Docker driver. Unfortunately, when using the Docker driver, you can’t access the Minikube IP from your Mac. Only 127.0.0.1 can be used. This wouldn’t be an issue in many cases, but Otomi requires an IP that is resolvable from your machine browser and from within the cluster itself.

So to be able to install Otomi on Minikube, I’m gonna use the hyperkit driver (see: https://minikube.sigs.k8s.io/docs/drivers/hyperkit/) with metallb see: https://metallb.universe.tf/)

Let’s get started:

Make sure you have the following installed:

  • Kubectl
  • Helm
  • Docker
  • Minikube version 1.25.2 (tested)

First, configure minikube:

minikube config set memory 8gminikube config set cpus 8

But if you have some extra’s available, please use them ;-)

If you would like to play with the network policies feature in Otomi, then also need to use the Calico CLI.

Now start Minikube:

> minikube start --driver=hyperkit --kubernetes-version=v1.22.4 --cni calico😄  minikube v1.25.2 on Darwin 11.1✨  Using the hyperkit driver based on user configuration👍  Starting control plane node minikube in cluster minikube💾  Downloading Kubernetes v1.21.9 preload ...> preloaded-images-k8s-v17-v1...: 478.87 MiB / 478.87 MiB  100.00% 10.77 Mi🔥  Creating hyperkit VM (CPUs=8, Memory=8192MB, Disk=20000MB) ...🐳  Preparing Kubernetes v1.21.9 on Docker 20.10.12 ...▪ kubelet.housekeeping-interval=5m▪ Generating certificates and keys ...▪ Booting up control plane ...▪ Configuring RBAC rules ...🔎  Verifying Kubernetes components...▪ Using image gcr.io/k8s-minikube/storage-provisioner:v5🌟  Enabled addons: storage-provisioner, default-storageclass🏄  Done! kubectl is now configured to use "minikube" cluster and "default" namespace by default

Now enable metallb:

> minikube addons enable metallb▪ Using image metallb/speaker:v0.9.6▪ Using image metallb/controller:v0.9.6🌟  The 'metallb' addon is enabled

Now we need to configure metallb with the Minikube IP. So first ask for the IP address

> minikube ip192.168.64.16

and configure metallb with the IP

> minikube addons configure metallb-- Enter Load Balancer Start IP: 192.168.64.16-- Enter Load Balancer End IP: 192.168.64.16▪ Using image metallb/controller:v0.9.6▪ Using image metallb/speaker:v0.9.6✅  metallb was successfully configuredkubectl is now configured to use "minikube" cluster and "default" namespace by default

Now we can install Otomi. First add the repository

helm repo add otomi https://otomi.io/otomi-core \helm repo update

and then install the chart

helm install otomi otomi/otomi \
--set cluster.k8sVersion="1.22" \
--set cluster.name=minikube \
--set cluster.provider=custom \
--set apps.host-mods.enabled=false

You can monitor the chart install

kubectl get job otomi -w# or watch the helm chart install status (optional)watch helm list -Aa

When the installer job has finished, go to the end of the logs of the installer job

kubectl logs jobs/otomi -n default -f

There you will see the following:

####################################################################
# To start using Otomi, go to https://192.168.64.16.nip.io and sign in to the web console
# with username "otomi-admin" and password "password".
# Then activate Drone. For more information see: https://otomi.io/docs/installation//activation
####################################################################

Now open the web UI and sign in with user otomi-admin and the provided password.

Since we install Otomi without providing a custom CA or using LetsEncrypt, the installer generated a CA. This CA is of course not trusted on your local machine. To prevent you from clicking away lots of security warnings in your browser, you can add the generated CA to your keychain. In the left menu of the console, click on “Download CA”.

Now we only need to activate Drone:

  • In the side menu of Otomi Console under platform click on the Drone app
  • Click on the play button in the top right. A new tab will open for Drone
  • Sign in locally with as otomi-admin and the password provided in the logs of the installer job
  • Click on Authorize Application
  • Click on Submit on the Complete your Drone Registration page. You don’t need to fill in your Email, Full Name, or Company Name if you don’t want to
  • Click on the otomi/values repository
  • Click on + Activate Repository

Done! Now you can create a team, add services, expose them, configure network policies and explore Otomi.

Like what you see? Please support us by joining the stargazers: https://github.com/redkubes/otomi-core

--

--