Prepare the cluster
Both installation paths, the GEO Knowledge Hub CLI and the manual one, start from the same place: a cluster with an ingress controller, a namespace to install into, and a hostname you can reach the instance on. This page covers that groundwork once, so neither path has to repeat it.
Prerequisites
Section titled “Prerequisites”Total time: ~15 minutes for the whole installation, mostly waiting for image pulls.
Choose a configuration profile
Section titled “Choose a configuration profile”This section ships two configurations, and the one you pick decides how much memory you need and which configuration you write later. Choose it now, before you start the cluster. The rest of this page and both installation paths follow your choice automatically, so you only make this decision once.
Collapses OpenSearch into a single node that holds every role and runs Redis without replicas, which brings the whole deployment down to eight pods. Nothing is replicated, so it is not something to build a production service on, but it starts quickly and it is what you want on a laptop or a small VM while you are developing against the API.
Budget roughly 4 vCPUs and 8 GB RAM.
Follows the chart defaults, which spread OpenSearch across eight JVMs in four dedicated role pools and run Redis with three replicas, for twenty pods in total. The extra nodes buy you redundancy and room to grow, and the result is close enough to a real deployment that you can adapt it rather than start over.
Budget roughly 8 vCPUs and 16 GB RAM.
1. Start the Minikube cluster
Section titled “1. Start the Minikube cluster”Start the Minikube cluster with the following command:
minikube start \ --cpus 4 \ --memory 8192 \ --driver dockerminikube start \ --cpus 8 \ --memory 16384 \ --driver dockerVerify the cluster is up:
kubectl cluster-infokubectl get nodes2. Enable required addons
Section titled “2. Enable required addons”Now, you need to enable the required addons:
minikube addons enable ingressminikube addons enable default-storageclassminikube addons enable storage-provisioner3. Create a namespace
Section titled “3. Create a namespace”Next, create the invenio namespace:
kubectl create namespace invenio4. Decide how you will reach it
Section titled “4. Decide how you will reach it”The hostname you settle on here is not only a networking detail: both installation paths write it into the application configuration, so the application knows the address it is served on. Decide it before you configure anything.
The ingress terminates TLS and redirects plain HTTP to HTTPS, so the application has
to be reached over the ingress’ 443 port. First, point invenio.local at your
loopback address:
echo "127.0.0.1 invenio.local" | sudo tee -a /etc/hostsIf Minikube runs on your own machine, forward the ingress controller to port 8080:
kubectl port-forward -n ingress-nginx svc/ingress-nginx-controller 8080:443If Minikube runs on a remote server, open an SSH tunnel from your machine to the ingress instead. Get the Minikube IP on the server:
minikube ip # e.g. 192.168.49.2Then, from your own machine:
ssh -L 8080:192.168.49.2:443 <user>@<server>Keep that session open while you use the instance.
Nothing answers on that address yet. You will open it once the application is installed and the post-install setup has created the admin user.
Next steps
Section titled “Next steps”The cluster is ready. Now choose how to produce and install the deployment:
1) Install with the CLI generates the Helm values, the Secrets and the post-install script for you, and checks the configuration before you install anything.
2) Install manually walks through the same
deployment with a values.yaml you write and maintain yourself.