Bio-OS Deployment
一. K8s Environment Preparation
1.1 Start Minikube
It is assumed here that Minikube has already been installed. For installation instructions, see: Minikube Start.
Here, Minikube is used as an example to build a local environment, while for production environments it is recommended to use Kubespray for high-availability deployment.
minikube start \
--image-mirror-country=cn \
--image-repository=registry.cn-hangzhou.aliyuncs.com/google_containers \
--force \
--addons ingress \
--cni flannel \
--kubernetes-version 1.24.15 \
--nodes 4 \
--ports 80,443 \
--service-cluster-ip-range '10.255.0.0/16' \# 可自行修改
--subnet '10.254.0.0/16' # 可执行修改
# Shortcut configuration
echo 'alias kubectl="minikube kubectl -- "' >> ~/.bashrc
source ~/.bashrc1.2 Helm Deployment
Install the Helm package (note: Helm version must be greater than 2.0; if Helm is already installed, you may skip this step).
For the ARM architecture, update the Helm download URL to:https://get.helm.sh/helm-v3.12.0-linux-arm64.tar.gz .
1.3 NFS-Server Deployment
Here, Ubuntu is used as an example to deploy the NFS service, where the variable NFS_PATH corresponds to the NFS storage directory. (Execute as root user)
Post-installation check list:
1.4 Install the NFS-CSI storage service
Install the StorageClass. Since nfs-csi does not provide an SC resource by default, you need to manually install one (reference: https://github.com/kubernetes-csi/csi-driver-nfs/blob/master/deploy/example/storageclass-nfs.yaml). Copy the following command and execute it in the shell.
1.5 Verify that the PVC can be mounted successfully
Copy the following command and execute it in the shell.
Check the Pod status
二.Install Bio-OS services
2.1 Install the MySQL service
The rootPassword in the command can be changed to your desired password, but you must make the corresponding modifications in the subsequent steps.
2.2 Install the Jupyterhub service
Bio-OS is packaged with Helm and currently consists of four subcharts. Note: after deploying JupyterHub, you must obtain a new token in the browser before proceeding to deploy the bioos-server and web services. Install JupyterHub with Helm (make sure to choose images that match your environment’s architecture):
Open the browser and go to: http://<server-ip>/jupyterhub to request a new token.

2.3 Install the Cromwell service
There are two ways to install Cromwell: via Helm or via a JAR package.
Helm installation: simpler to set up, but workflows cannot use Docker images during execution.
JAR package deployment: allows workflows to use Docker images during execution.
Install Cromwell with Helm
Install Cromwell with JAR package
Download cromwell-85.jar from the link :https://github.com/broadinstitute/cromwell/releases/tag/85
To enable Cromwell to communicate with MySQL, you need to modify the MySQL connection configuration:
Obtain the InternalIP using the following command:
The obtained InternalIP is shown as follows:
Edit application.conf and update the MySQL connection string with the obtained InternalIP and Port.
The application.conf is shown as follows:
Run Cromwell with Java (note: use nohup to ensure Cromwell runs in the background):
2.4 Install the Bio-OS service
三. Deployment validation
Run kubectl get po,pv,pvc,ing to check the application deployment status. Bio-OS uses two storage volumes—one for MySQL and one for Bio-OS data—and defines several Ingress rules to expose services via subpaths.
The command output should appear as follows:

Open the browser and visit: http://<server-ip>/workspace. This completes the installation of Bio-OS.

Last updated