Skip to content

Kind Cluster Deployment without GPUs

Overview

Whilst not providing full performance and functionality, the studio can be deployed for testing and development purposes. The instructions below will deploy the main components of the Geospatial Studio in a Kubernetes cluster on a local or remote machine. This is provisioned through a Kind Cluster.

The automated shell script will deploy dependencies (Minio, Keycloak and Postgresql), before generating the deployment configuration for the studio and then deploying the main studio services + pipelines.


Prerequisites

Before you begin, ensure you have the following tools installed on your system:

Required Tools

Tool Version Purpose Installation Link
kind Latest Runs Kubernetes clusters in Docker containers Install Kind
Helm v3.19 Kubernetes package manager Install Helm
OpenShift CLI (oc) Latest Kubernetes command-line tool Install oc
kubectl Latest Bundled with OpenShift CLI Included with oc
jq Latest JSON command-line processor Install jq
yq Latest YAML command-line processor Install yq
Python 3.8+ Required for deployment scripts Install Python
Docker Latest Container runtime (required by Kind) Install Docker

Helm Version Compatibility

Currently, Helm v3.19 is required. The deployment is incompatible with Helm v4.


Deployment Steps

Step 1: Create the Kind Cluster

cat << EOF | kind create cluster --name=studio --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
- role: worker
EOF
What does this do?
  • Creates a Kubernetes cluster named studio
  • Sets up 2 nodes:
    • Control-plane node: Manages the cluster (scheduling, API server, etc.)
    • Worker node: Runs your application workloads
  • Both nodes run as Docker containers on your machine

Step 2: Configure kubectl Context

Point kubectl to your newly created Kind cluster.

kubectl cluster-info --context kind-studio
What does this do?
  • Sets your kubectl context to kind-studio
  • Ensures all kubectl commands target the correct cluster
  • Displays cluster information to verify connectivity

Step 3: [Optional] Pre-pull Container Images

If you have limited network bandwidth, you can pre-pull the container images using the script below,

NAMESPACE=default ./deployment-scripts/images-pre-puller/deploy-image-prepuller.sh
What does this do?

Step 4: Install Python Dependencies

Install required Python packages for the deployment scripts.

pip install -r requirements.txt

Using Virtual Environments

It's recommended to use a Python virtual environment:

    python -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt

Step 5: Deploy Geospatial Studio

Run the automated deployment script.

./deploy_studio_k8s.sh
What does this do?

The deployment script performs the following steps automatically:

Phase 1: Infrastructure Setup

  • Deploys MinIO for object storage
  • Deploys PostgreSQL database
  • Deploys Keycloak for authentication and authorization

Phase 2: Configuration Generation

  • Generates deployment configurations based on your environment
  • Creates necessary Kubernetes secrets and config maps
  • Sets up networking and ingress rules

Phase 3: Studio Deployment

  • Deploys the GeoSpatial Studio

Deployment Time

Deployment typically takes ~10 minutes or longer, depending on:

  • Your internet download speed (for container images)
  • System resources (CPU, RAM, disk)
  • Docker image cache status

Monitoring the Deployment

k9s is a terminal-based UI for managing Kubernetes clusters.


Access the Application

Deployment Complete

Once all services are running, proceed to First Steps to start using the Geospatial Studio.