This project deploys a tuning API for GROMACS using Ray Tune on Kubernetes.
- Helm and kubectl must be installed and configured to interact with your Kubernetes cluster.
- Ray operator must be installed in your cluster to provide the RayCluster CRDs.
- Ensure your target namespace has sufficient resources: a minimum of 32 CPU requests and a GPU request (see helm/charts/gromacs-tuner/templates/raycluster.yaml).
- jq must be installed for processing JSON data.
- Update the API Docker image details in
values.yaml(refer toapi/Dockerfile) with your Harbor image information, including the correct image name and tag.
-
Configure
values.yaml:- Specify the
ingress.hostfor accessing the API and theingress.tlsSecretNamefor TLS configuration. - Provide the complete Docker
image.repositoryandimage.tagfor the API.
- Specify the
-
Create Authentication Secret:
Create a Kubernetes secret named
tuner-authin your target namespace containing theuserandpasswordfor API authentication.# Replace <namespace> with your target namespace (e.g., gromacs-tuner-ns) kubectl create secret generic tuner-auth \ --namespace <namespace> \ --from-literal=user=admin \ --from-literal=password=your-strong-password
-
Deploy:
cd helm/ make install -
Verify the Deployment:
Check if the pods are running correctly:
kubectl get pods -n gromacs-tuner
Verify that the Ray cluster is properly deployed:
kubectl get rayclusters -n gromacs-tuner
To remove everything:
cd helm/
make uninstallThe E2E tests are separate from the unit tests and require a running API deployment. They submit the demo GROMACS and AMBER inputs, poll each job until it finishes, and delete the job afterwards. To run against a Kubernetes deployment, use the Makefile target. It reads the tuner-auth secret from the namespace, port-forwards gromacs-tuner-api-svc, and injects the credentials into pytest:
make e2eThe namespace defaults to md-dashboard-ns and can be overridden:
make e2e NAMESPACE=some-ns