This repository contains the installation and configuration scripts for deploying a complete EUCAIM node infrastructure on Kubernetes.
The installation script (install.py) automates the deployment of:
- Keycloak (authentication/authorization)
- Dataset Service
- Dataset Explorer
- Guacamole
- Jobman
- Harbor (container registry)
- Kubeapps (application management)
- Kubernetes Dashboard
- DSWS Operator (workspace management)
- Traefik
- cert-manager
- Operating System: Linux (Ubuntu/Debian recommended)
- Kubernetes: Minikube or production Kubernetes cluster
The following tools must be installed before running the installation:
-
Minikube (for development/single-node setup)
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 sudo install minikube-linux-amd64 /usr/local/bin/minikube
-
Helm (Kubernetes package manager)
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash- Download the Helm binary from the Helm Releases Page.
- Extract the binary and add it to your system's PATH.
- Verify the installation by running:
helm version
-
Docker (container runtime)
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
-
Git (version control)
sudo apt-get install git
-
Python 3 with dependencies
sudo apt-get install python3 python3-pip python3-yaml
The following must exist in the installation directory:
-
config.private.yaml - Main configuration file
- Template:
config.yaml - Contains: domain, passwords, database settings, OIDC configuration, etc.
- Template:
-
eucaim-node-realm.private.json - Keycloak realm configuration
- Template:
eucaim-node-realm.json - Contains: client secrets, realm settings, identity providers
- Template:
- Prepare the environment
# Clone this repository git clone <this-repo-url> cd mini-node # Clone k8s-deploy-node (mininode branch) and jobman inside mini-node git clone --branch mininode git@github.com:EUCAIM/k8s-deploy-node.git # If you do not have SSH keys configured for GitHub, use HTTPS instead: # git clone --branch mininode https://github.com/EUCAIM/k8s-deploy-node.git cd k8s-deploy-node git clone --depth 1 --branch v2.1.5-BETA https://github.com/EUCAIM/jobman.git git clone https://github.com/EUCAIM/dataset-explorer.git
The folder structure should look like this:
<working-directory>/
└── mini-node/
├── k8s-deploy-node/
└── jobman/
- Create configuration files
# Copy and edit the configuration template cp config.yaml config.private.yaml nano config.private.yaml # Copy and edit the Keycloak realm template cp eucaim-node-realm.json eucaim-node-realm.private.json nano eucaim-node-realm.private.json
- Start minikube with your local folder mounted into the cluster
minikube start --mount --mount-string="/home/ubuntu/folderspecyfiedinconfig.yaml:/var/hostpath-provisioner" - Run the installation
python3 install.py <flavour>