Description
ClusterOps is a Kubernetes installer+operator designed to streamline the initial configuration and ongoing maintenance of your local kubernetes install. The focus of this project is primarily on personal or local installations (one node, one master). However, the goal is to expand its use to encompass all installations of Kubernetes for local development purposes. It simplifies cluster management by automating tasks and providing one user-friendly YAML-based configuration (config.yaml).
Features
- Simplified Configuration: Define your desired cluster state in a simple YAML file, and ClusterOps will handle the rest.
- Automated Setup: Automates initial k3s cluster configuration, including network settings, storage provisioning, special requirements (for example GPUs) and essential component installation.
- Ongoing Maintenance: Performs routine maintenance tasks such as upgrades, security updates, and resource monitoring.
- Extensibility: Easily extend functionality with custom plugins and configurations.
- Self-Healing: Detects and recovers from common cluster issues, ensuring stability, idempotence and reliability. An operation can be performed multiple times without changing the result.
- Discreet: It works only on what it knows, if you are manually configuring parts of your cluster and this configuration does not interfere with it you can happily continue to work on several parts and use this tool only for what is needed.
Goals
- Linux distribution independent, Kubernetes engine independent. Install your favorite kubernetes engine with your package manager, execute one script and you have a complete working environment in your desktop at your disposal.
As a PoC this configuration is the base for the Hack Week: Arch Linux+K3S. Once all goals will be reached other platforms and engines will be added. Currently planned: Tumbleweed, OpenSUSE, SUSE SLES, Fedora, Debian. Kubernetes Engines: minicube, kind. - Zero config approach. One single config.yaml file with installation requirements (add/remove features): human readable, plain and simple. All fancy configs managed automatically (ingress, balancers, services, proxy, ...).
- Kubernetes official dashboard installed, others planned too (k9s for example), builtin support for forklift container utility.
- Kubevirt plugin installed and properly configured. Unleash the power of classic virtualization (KVM+QEMU) on top of Kubernetes and manage your entire system from there, libvirtd and virsh libs required.
- Simple Network Config. Simple configuration for a simple setup. Everything you need to have your local cluster ready at your disposal to start developing your applications on the top of it (Traefik management setup included too).
- One operator to rule them all. The installation script configures your machine automatically during installation and adds one kubernetes operator to manage your local cluster. From there the operator takes care of the cluster on your behalf.
- One Install Command, One Remove Command. Take it for a spin, once done just uninstall everything without leaving traces (or pods) behind
- Automated, the k8s operator takes care of self healing the cluster, manages stateful sets, reconfigure your favorite plugins (dashboard, kubevirt, storage, ...)
Planned
- Adding installation scripts plugins for other distributions: OpenSuse, Tumbleweed, SLES, Fedora, Debian. Adding other personal/local kubernetes engines
- Local/Builtin container image hub. Just create your images and store them locally so your cluster can generate pods from there
- Source2Image utility. You provide your program (python, go, bash script, ...) the utility generates a Container Image for you. Easily create pods from your own personal projects
- Storage. Add your LAN local storage to the cluster easily for your persistent volumes slices. I'm also planning to add: CEPH, S3 buckets and other object storages
- GPU enabled containers. If you have an NVidia card the cluster can take advantage from it by adding and configuring CUDA support when needed. You can use NVidia Containerfile(s) directly from NVidia container hub and execute them locally
Project Resources
- github project repository: clusterops
- @andreabenini @SUSE
- feel free to reach me on slack, email, submit issues, MR, ...
Looking for hackers with the skills:
kubernetes k3s kubevirt kvm operator personal development webui easy containers pods go golang python
This project is part of:
Hack Week 24
Activity
Comments
-
1 day ago by andreabenini | Reply
Day one
Project established. github presence in place, hackweek README project created. Basic libraries in place for the installer/removal utility. I'm now considering k3s because it's easy to manage locally, other engines will be added once main results will be achieved.
Adding SUSE OSes will surely be trivial and I can barely add them all in one shot. I'm now focusing on the k8s operator in order to have minimal functionalities available from it: kubevirt, Web UI, network setup, traefik setup (on local lan, not just localhost).
I'm now using kubebuilder for managing kubernetes operator, its first task will be around adding the default kubernetes dashboard to the system
Similar Projects
Technical talks at universities by agamez
Description
This project aims to empower ...
Mammuthus - The NFS-Ganesha inside Kubernetes controller by vcheng
Description
As the user-space NFS provider,...
Setup Kanidm as OIDC provider on Kubernetes by jkuzilek
Description
I am planning to upgrade my hom...
A CLI for Harvester by mohamed.belgaied
[comment]: # Harvester does not officially come...
Install Uyuni on Kubernetes in cloud-native way by cbosdonnat
Description
For now installing Uyuni on K...
SUSE KVM Best Practices by roseswe
Description
SUSE Best Practices around KVM,...
A CLI for Harvester by mohamed.belgaied
[comment]: # Harvester does not officially come...
Install Uyuni on Kubernetes in cloud-native way by cbosdonnat
Description
For now installing Uyuni on K...
Improve Development Environment on Uyuni by mbussolotto
Description
Currently create a dev environm...
Uyuni developer-centric documentation by deneb_alpha
Description
While we currently have exten...
SUSE AI Meets the Game Board by moio
Use [tabletopgames.ai](https://tabletopgames.ai...
Improve Development Environment on Uyuni by mbussolotto
Description
Currently create a dev environm...
Enable the containerized Uyuni server to run on different host OS by j_renner
Description
The Uyuni server is provided ...
Technical talks at universities by agamez
Description
This project aims to empower ...
ADS-B receiver with MicroOS by epaolantonio
I would like to put one of my spare Raspberry P...
Automate PR process by idplscalabrini
Description
This project is to streamline a...
Contribute to terraform-provider-libvirt by pinvernizzi
Description
The SUSE Manager (SUMA) tea...
A CLI for Harvester by mohamed.belgaied
[comment]: # Harvester does not officially come...
FamilyTrip Planner: A Personalized Travel Planning Platform for Families by pherranz
Description
FamilyTrip Planner is an innova...
ddflare: (Dyn)DNS management via Cloudflare API in Kubernetes by fgiudici
Description
[ddflare](https://github.com/f...
Contribute to terraform-provider-libvirt by pinvernizzi
Description
The SUSE Manager (SUMA) tea...
Automate PR process by idplscalabrini
Description
This project is to streamline a...
toptop - a top clone written in Go by dshah
Description
toptop
is a clone of Linux's ...
A CLI for Harvester by mohamed.belgaied
[comment]: # Harvester does not officially come...
Learn enough Golang and hack on CoreDNS by jkuzilek
Description
I'm implementing a split-horizo...
SUSE AI Meets the Game Board by moio
Use [tabletopgames.ai](https://tabletopgames.ai...
Ansible for add-on management by lmanfredi
Description
Machines can contains various...
Saline (state deployment control and monitoring tool for SUSE Manager/Uyuni) by vizhestkov
[comment]: # (Please use the project descriptio...
Run local LLMs with Ollama and explore possible integrations with Uyuni by PSuarezHernandez
Description
Using Ollama you can easily run...
Team Hedgehogs' Data Observability Dashboard by gsamardzhiev
Description
This project aims to develop a ...