Kubernetes
This is the git repository for the Open Computing Facility's Kubernetes cluster.
Deploying Software
- Create a new python file in
ocfkube/apps
with a functionbuild()
that returns a list of Kubernetes objects (as dicts). See the other python files in that folder for examples. Helper functions are provided for Helm charts, although not all software will use helm charts. a. If you need to build your own container image, do so in another git repository. Instructions coming soon (TM). - (Root Required) Go to ArgoCD and run a sync. Before you click sync, look at the diff to sanity check what will change. We do not automatically sync configuration for safety reasons.
Code-Test Loop
First, install dependencies and start a poetry shell...
poetry install
poetry shell
Then, make changes and run the following command to test your changes...
# inside poetry shell, might be python3 depending on your package manager
# e.x. python -m ocfkube cilium -> prints YAML to stdout for cilium
python -m ocfkube <appname>
Folder Structure
Our deployment follows the folder structure of a typical poetry application.
- ocfkube
- apps
- cilium
- notes
- ... (any software)
- versions.toml (all software versions)
- utils
- ... (helper functions)
- lib
- ... (common k8s object generators)
Bootstrapping
A bootstrap script is provided to help bring up new clusters when needed. It installs the bare minimum required to run ArgoCD, provided Kubernetes is already running without a CNI, and KUBECONFIG
is pointed at the right place.
./bootstrap.sh
Contributing
The Open Computing Facility (OCF) is an all-volunteer student organization dedicated to free computing for all University of California, Berkeley students, faculty, and staff. Students from all backgrounds are encouraged to join as staff! If you're not a student, or just want to make a one time contribution, please use the standard GitHub pull request workflow. Thanks for helping out :)