Bio-OS Deployment

circle-info

Before starting the deployment of Bio-OS, ensure that you have obtained the open-source Helm Charts for Bio-OS (https://github.com/Bio-OS/helm-chartsarrow-up-right) in your environment. Bio-OS supports deployment on both ARM64 and x86_64 architectures. In addition, Bio-OS requires Kubernetes as the underlying platform, and you may choose either the community edition of Kubernetes or Minikube. This documentation is based on the x86 architecture; if your environment uses ARM architecture, please make sure to select the ARM-compatible images and tools for installation. (See Prerequisite.

一. K8s Environment Preparation

1.1 Start Minikube

It is assumed here that Minikube has already been installed. For installation instructions, see: Minikube Startarrow-up-right.

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 ~/.bashrc

1.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.yamlarrow-up-right). 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

circle-info

The deployment of Bio-OS depends on MySQL, JupyterHub, and Cromwell. Before installing the Bio-OS service, you must first install MySQL, JupyterHub, and Cromwell. The installation order is: MySQL → JupyterHub → Cromwell → Bio-OS (this order must be followed).

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.

  1. Install Cromwell with Helm

  1. Install Cromwell with JAR package

Download cromwell-85.jar from the link :https://github.com/broadinstitute/cromwell/releases/tag/85arrow-up-right

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