Skip to content

alperencelik/kubemox

Repository files navigation

Pipeline Status Latest Release Go Report Card Go Reference License GitHub issues

Kubemox

Kubemox is a Proxmox operator for Kubernetes. It allows you to create and manage Proxmox VMs from Kubernetes.

Logo

Why Kubemox?

Proxmox is a great open-source virtualization platform. It has a great API and CLI but managing resources inside Proxmox within a declarative way might be hard. Kubemox is a Kubernetes operator that allows you to manage Proxmox resources in a declarative way. It brings the power of Kubernetes to Proxmox and allows you to manage Proxmox resources with Kubernetes resources with the endless control loop of Kubernetes.

Kubemox helps you to manage your infrastructure components in a declarative way. You can also combine with GitOps tool to make your infrastructure immutable and reproducible. See the documentation section for more information.

Documentation

Documentation is available at https://alperencelik.github.io/kubemox/.

Developing

You’ll need a Kubernetes cluster to run against. You can use KIND to get a local cluster for testing, or run against a remote cluster. The project is using Kubebuilder to generate the controller and CRDs. For Proxmox interaction the project is using go-proxmox project. The controllers are located under internal/controllers/proxmox directory and the external packages proxmox and kubernetes are located under pkg directory.

  • To create a new controller you can use the following command:
kubebuilder create api --group proxmox --version v1alpha1 --kind NewKind 
  • Define the spec and status of your new kind in api/proxmox/v1alpha1/newkind_types.go file.

  • Define the controller logic in internal/controllers/proxmox/newkind_controller.go file.

Roadmap

  • Add more CRDs for Proxmox resources (LXC(Containers), Storage, Networking etc.)
  • Add more options for Proxmox client (TLS and different authentication methods)
  • Add more features to the operator (HA, configuration, etc.)
  • Add metrics for the operator
  • Add more tests
  • Add more documentation
  • Add more examples

Contributing

Thank you for considering contributing to this project! To get started, please follow these guidelines:

  • If you find a bug or have a feature request, please open an issue.
  • If you'd like to contribute code, please fork the repository and create a pull request.
  • Please follow our developing.md in all your interactions with the project.
  • Before submitting a pull request, make sure to run the tests and ensure your code adheres to our coding standards.