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, ...

This project is part of:

Hack Week 24

Activity

  • about 23 hours ago: andreabenini added keyword "go" to this project.
  • about 23 hours ago: andreabenini added keyword "golang" to this project.
  • about 23 hours ago: andreabenini added keyword "python" to this project.
  • 1 day ago: andreabenini liked this project.
  • 1 day ago: andreabenini added keyword "containers" to this project.
  • 1 day ago: andreabenini added keyword "pods" to this project.
  • 1 day ago: andreabenini added keyword "webui" to this project.
  • 1 day ago: andreabenini added keyword "easy" to this project.
  • 1 day ago: andreabenini added keyword "kubernetes" to this project.
  • 1 day ago: andreabenini added keyword "k3s" to this project.
  • 1 day ago: andreabenini added keyword "kubevirt" to this project.
  • 1 day ago: andreabenini added keyword "kvm" to this project.
  • 1 day ago: andreabenini added keyword "operator" to this project.
  • 1 day ago: andreabenini added keyword "personal" to this project.
  • 1 day ago: andreabenini added keyword "development" to this project.
  • 1 day ago: andreabenini started this project.
  • 1 day ago: andreabenini originated this project.

  • Comments

    • andreabenini
      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...


    A CLI for Harvester by mohamed.belgaied

    [comment]: # Harvester does not officially come...


    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 ...