Website: kubevirt-manager.io
Maintainers: feitnomore
Simple Angular Frontend Web UI Interface to operate Kubevirt. This tools lets you perform basic operations around Virtual Machines
, Virtual Machine Instances
, Virtual Machine Pools
and Disks
. It was built based on requirements I had for my own environment.
For a Quick Start, go to our website https://kubevirt-manager.io/
WARNING: Use it at your own risk.
I've created this Frontend for KubeVirt
while I was trying to learn a little bit of Angular
. Basically this tool uses kubectl proxy
to proxy API requests to kubeapiserver
. To handle the Disk
/Volume
part, the tool works through CDI.
For a Quick Start, go to our website https://kubevirt-manager.io/ as we provide a bundled.yaml file that has the basic setup.
Kubevirt featureGate ExpandDisks
is required.
CDI is required with featureGate HonorWaitForFirstConsumer
active:
config:
featureGates:
- HonorWaitForFirstConsumer
StorageClass features WaitForFirstConsumer
and allowVolumeExpansion
are required:
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
$ kubectl apply -f kubernetes/ns.yaml
$ kubectl apply -f kubernetes/rbac.yaml
$ kubectl apply -f kubernetes/deployment.yaml
$ kubectl apply -f kubernetes/pc.yaml
kubectl apply -f kubernetes/service.yaml
To integrate kubevirt-manager
with prometheus
, you need to edit kubernetes/prometheus-config.yaml
and adjust your endpoint on line 21.
After adjusting the endpoint, apply the configmap:
$ kubectl apply -f kubernetes/prometheus-config.yaml
This integration was tested using prometheus-operator
. A ServiceMonitor
descriptor to integrate KubeVirt
with prometheus-operator
has been provided as an example at kubernetes/servicemonitor.yaml
. Note that you need to set the namespace
on the ServiceMonitor
accordingly and you need to update your KubeVirt
resource to reflect the namespace
as well:
spec:
monitorNamespace: monitoring
You will need to restart (delete) the Pod
or redeploy the solution for the changes to take effect.
Note: The tool assumes Prometheus is exposing the following metrics: kubevirt_vmi_storage_write_traffic_bytes_total, kubevirt_vmi_storage_read_traffic_bytes_total, kubevirt_vmi_network_transmit_bytes_total, kubevirt_vmi_network_receive_bytes_total, kube_pod_container_resource_requests and kubevirt_vmi_memory_domain_total_bytes. These metrics are exposed by KubeVirt
and kube-state-metrics
.
Note: Due to the introduction of NGINX Authentication support, the configmap changed a bit, make sure you review it.
To add nginx
with basic-auth
, you need to edit kubernetes/auth_secret.yaml
and add your htpasswd file contents in base64 to the secret. The provided example has a single entry which username is admin
and password is admin
. You are encouraged to create your own file and replace in the secret.
An example of how to get the base64 of your file is:
$ cat htpasswd-file | base64 -w0
After adjusting secret contents, apply the configmap and the secret:
$ kubectl apply -f kubernetes/auth-config.yaml
$ kubectl apply -f kubernetes/auth-secret.yaml
You will need to restart (delete) the Pod
or redeploy the solution for the changes to take effect.
Note: If you had previous versions of Prometheus integration make sure proxy_set_header Authorization "";
is present on your Prometheus ConfigMap
.
You may use kubernetes/prometheus-config.yaml
as a reference to make sure your ConfigMap
looks ok.
Note: You may also want to check htpasswd documentation for extra help on creating and managing the file.
To use the tool, you can either use kubectl port-forward
on port 8080, use a Service
with type NodePort
or LoadBalancer
, or, create an Ingress
for your service.
Note: As the tool needs Websocket support, if you are using an Ingress
make sure you set it up accordingly.
Dashboard:
Virtual Machines:
Node Pools:
Instance Types & Network:
Data Volumes & Load Balancers:
VNC Screen
To build the tool simply run:
docker build -t your-repo/kubevirt-manager:version .
docker push your-repo/kubevirt-manager:version
To build the tool run:
npm install
ng build
To run the tool:
kubectl proxy --www=./dist/kubevirtmgr-webui/ --accept-hosts=^.*$ --address=[::] --api-prefix=/k8s/ --www-prefix=
Access the tool at: http://localhost:8001/
Note: Make sure your kubectl
is pointing to the right cluster.
Note: Make sure the account your kubectl
is using has correct RBAC.
Note: This method doesn't support Prometheus
integration.
Note: This method doesn't support NGINX basic_auth
.
- kubevirt-manager.io
- Kubernetes
- Kubectl
- CDI
- KubeVirt
- NodeJS
- Angular
- AdminLTE
- NoVNC
- Prometheus Operator
- kube-state-metrics
- KubeVirt Monitoring
- NGINX basic_auth
kubevirt-manager.io is licensed under the Apache Licence, Version 2.0.