Kubemox is a Proxmox operator for Kubernetes. It allows you to create and manage Proxmox VMs from Kubernetes.
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 is available at https://alperencelik.github.io/kubemox/.
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.
- 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
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.
Kubemox is under active development and doesn't follow the Custom Resource Definition (CRD) versioning principles. This means that Kubemox doesn't guarantee version updates on breaking changes and also there is no guarantee for the backward compatibility of the CRDs. Please be aware of this before using Kubemox in production environments.