|
1 | | -# kubefold |
2 | | -// TODO(user): Add simple overview of use/purpose |
| 1 | +<div align="center"> |
| 2 | + <img src="assets/logo.png" alt="Kubefold Logo" /> |
| 3 | +</div> |
3 | 4 |
|
4 | | -## Description |
5 | | -// TODO(user): An in-depth paragraph about your project and overview of use |
| 5 | +# 🧬 Kubefold |
6 | 6 |
|
7 | | -## Getting Started |
| 7 | +Kubefold is a Kubernetes operator for managing protein structure prediction workflows. It provides a declarative way to handle protein databases and run conformation predictions in a Kubernetes cluster. |
8 | 8 |
|
9 | | -### Prerequisites |
10 | | -- go version v1.23.0+ |
11 | | -- docker version 17.03+. |
12 | | -- kubectl version v1.11.3+. |
13 | | -- Access to a Kubernetes v1.11.3+ cluster. |
| 9 | +## 🚀 Features |
14 | 10 |
|
15 | | -### To Deploy on the cluster |
16 | | -**Build and push your image to the location specified by `IMG`:** |
| 11 | +- **Protein Database Management** - Download and manage various protein databases (UniProt, PDB, BFD, etc.) |
| 12 | +- **Conformation Prediction** - Run protein structure predictions with configurable parameters |
| 13 | +- **Cloud Integration** - Store results in S3 and receive notifications via SMS |
| 14 | +- **Scalable Architecture** - Built on Kubernetes for horizontal scaling and resource management |
17 | 15 |
|
18 | | -```sh |
19 | | -make docker-build docker-push IMG=<some-registry>/kubefold:tag |
20 | | -``` |
21 | | - |
22 | | -**NOTE:** This image ought to be published in the personal registry you specified. |
23 | | -And it is required to have access to pull the image from the working environment. |
24 | | -Make sure you have the proper permission to the registry if the above commands don’t work. |
25 | | - |
26 | | -**Install the CRDs into the cluster:** |
27 | | - |
28 | | -```sh |
29 | | -make install |
30 | | -``` |
31 | | - |
32 | | -**Deploy the Manager to the cluster with the image specified by `IMG`:** |
33 | | - |
34 | | -```sh |
35 | | -make deploy IMG=<some-registry>/kubefold:tag |
36 | | -``` |
37 | | - |
38 | | -> **NOTE**: If you encounter RBAC errors, you may need to grant yourself cluster-admin |
39 | | -privileges or be logged in as admin. |
40 | | - |
41 | | -**Create instances of your solution** |
42 | | -You can apply the samples (examples) from the config/sample: |
43 | | - |
44 | | -```sh |
45 | | -kubectl apply -k config/samples/ |
46 | | -``` |
47 | | - |
48 | | ->**NOTE**: Ensure that the samples has default values to test it out. |
49 | | -
|
50 | | -### To Uninstall |
51 | | -**Delete the instances (CRs) from the cluster:** |
52 | | - |
53 | | -```sh |
54 | | -kubectl delete -k config/samples/ |
55 | | -``` |
| 16 | +## 📋 Prerequisites |
56 | 17 |
|
57 | | -**Delete the APIs(CRDs) from the cluster:** |
| 18 | +- Kubernetes cluster (v1.11.3+) |
| 19 | +- kubectl (v1.11.3+) |
| 20 | +- Access to an S3 bucket for storing results |
| 21 | +- AWS credentials for S3 and SMS notifications (if using these features) |
58 | 22 |
|
59 | | -```sh |
60 | | -make uninstall |
61 | | -``` |
62 | | - |
63 | | -**UnDeploy the controller from the cluster:** |
| 23 | +## 🛠️ Installation |
64 | 24 |
|
65 | 25 | ```sh |
66 | | -make undeploy |
| 26 | +kubectl apply -f https://raw.githubusercontent.com/kubefold/operator/main/dist/install.yaml |
67 | 27 | ``` |
68 | 28 |
|
69 | | -## Project Distribution |
70 | | - |
71 | | -Following the options to release and provide this solution to the users. |
| 29 | +## 📝 Usage |
72 | 30 |
|
73 | | -### By providing a bundle with all YAML files |
| 31 | +### Protein Database |
74 | 32 |
|
75 | | -1. Build the installer for the image built and published in the registry: |
| 33 | +Create a ProteinDatabase resource to download and manage protein databases: |
76 | 34 |
|
77 | | -```sh |
78 | | -make build-installer IMG=<some-registry>/kubefold:tag |
| 35 | +```yaml |
| 36 | +apiVersion: data.kubefold.io/v1 |
| 37 | +kind: ProteinDatabase |
| 38 | +metadata: |
| 39 | + name: my-database |
| 40 | +spec: |
| 41 | + datasets: |
| 42 | + uniprot: true |
| 43 | + pdb: true |
| 44 | + volume: |
| 45 | + storageClassName: fsx-sc |
79 | 46 | ``` |
80 | 47 |
|
81 | | -**NOTE:** The makefile target mentioned above generates an 'install.yaml' |
82 | | -file in the dist directory. This file contains all the resources built |
83 | | -with Kustomize, which are necessary to install this project without its |
84 | | -dependencies. |
85 | | - |
86 | | -2. Using the installer |
87 | | - |
88 | | -Users can just run 'kubectl apply -f <URL for YAML BUNDLE>' to install |
89 | | -the project, i.e.: |
90 | | - |
91 | | -```sh |
92 | | -kubectl apply -f https://raw.githubusercontent.com/<org>/kubefold/<tag or branch>/dist/install.yaml |
| 48 | +### Protein Conformation Prediction |
| 49 | +
|
| 50 | +Run a protein structure prediction: |
| 51 | +
|
| 52 | +```yaml |
| 53 | +apiVersion: data.kubefold.io/v1 |
| 54 | +kind: ProteinConformationPrediction |
| 55 | +metadata: |
| 56 | + name: my-prediction |
| 57 | +spec: |
| 58 | + database: my-database |
| 59 | + protein: |
| 60 | + id: ['A'] |
| 61 | + sequence: "YOUR_PROTEIN_SEQUENCE" |
| 62 | + model: |
| 63 | + volume: |
| 64 | + storageClassName: fsx-sc |
| 65 | + weights: |
| 66 | + http: "https://your-model-weights.bin.zst" |
| 67 | + destination: |
| 68 | + s3: |
| 69 | + bucket: your-bucket |
| 70 | + region: your-region |
| 71 | + notify: |
| 72 | + region: your-region |
| 73 | + sms: |
| 74 | + - "+1234567890" |
93 | 75 | ``` |
94 | 76 |
|
95 | | -### By providing a Helm Chart |
| 77 | +## 🧹 Cleanup |
96 | 78 |
|
97 | | -1. Build the chart using the optional helm plugin |
| 79 | +To uninstall the operator: |
98 | 80 |
|
99 | 81 | ```sh |
100 | | -kubebuilder edit --plugins=helm/v1-alpha |
| 82 | +kubectl delete -f https://raw.githubusercontent.com/kubefold/operator/main/dist/install.yaml |
101 | 83 | ``` |
102 | 84 |
|
103 | | -2. See that a chart was generated under 'dist/chart', and users |
104 | | -can obtain this solution from there. |
105 | | - |
106 | | -**NOTE:** If you change the project, you need to update the Helm Chart |
107 | | -using the same command above to sync the latest changes. Furthermore, |
108 | | -if you create webhooks, you need to use the above command with |
109 | | -the '--force' flag and manually ensure that any custom configuration |
110 | | -previously added to 'dist/chart/values.yaml' or 'dist/chart/manager/manager.yaml' |
111 | | -is manually re-applied afterwards. |
112 | | - |
113 | | -## Contributing |
114 | | -// TODO(user): Add detailed information on how you would like others to contribute to this project |
115 | | - |
116 | | -**NOTE:** Run `make help` for more information on all potential `make` targets |
117 | | - |
118 | | -More information can be found via the [Kubebuilder Documentation](https://book.kubebuilder.io/introduction.html) |
119 | | - |
120 | | -## License |
121 | | - |
122 | | -Copyright 2025 Mateusz Woźniak <wozniakmat@student.agh.edu.pl>. |
123 | | - |
124 | | -Licensed under the Apache License, Version 2.0 (the "License"); |
125 | | -you may not use this file except in compliance with the License. |
126 | | -You may obtain a copy of the License at |
127 | | - |
128 | | - http://www.apache.org/licenses/LICENSE-2.0 |
129 | | - |
130 | | -Unless required by applicable law or agreed to in writing, software |
131 | | -distributed under the License is distributed on an "AS IS" BASIS, |
132 | | -WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
133 | | -See the License for the specific language governing permissions and |
134 | | -limitations under the License. |
135 | | - |
0 commit comments