kubik is an open-source Kubernetes visualization dashboard designed to give you an intuitive and efficient way to visualize the health and structure of your local Kubernetes clusters. kubik transforms the complex Kubernetes environment into an easy-to-navigate and understand interface, reducing the learning curve for new users. It displays the information you need at a glance, allowing you to focus on key metrics and potential issues.
Secure your Kubernetes cluster health monitoring with the power of Google Authentication and log in seamlessly using your Google credentials. This standardized approach to user access provides a robust layer of security for your project and cluster data.
Expand your monitoring capabilities by connecting and adding Kubernetes clusters to your centralized health tracking system. Streamline the process of integrating clusters, allowing you to keep an eye on multiple environments from a single platform.
Experience comprehensive insights into the health and performance of your Kubernetes cluster through a responsive dashboard. Monitor key metrics such as CPU utilization, RAM usage, disk space, memory, and network performance in real-time.
Gain a deeper understanding of your Kubernetes ecosystem with an interactive cluster graph representation. Explore the intricate relationships and complex interdependencies among nodes, pods, services, and deployments in a visually engaging manner.
-
Set up minikube, a local Kubernetes to get started with testing kubik by following the minikube documentation.
-
Install and configure Docker by following the Docker documentation.
-
Create an example yaml file named "webapp-deploymment.yaml" to use a simple Nginx web server for the webapp with the following content:
webapp-deploymment.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp-deployment
spec:
replicas: 3
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp-container
image: nginx:latest
ports:
- containerPort: 80
- Run the following terminal command to deploy the web server.
kubectl apply -f webapp-deployment.yaml
- Create an example yaml file named "webapp-service.yaml" to create a service to expose the deployment with the following content:
webapp-service.yaml:
apiVersion: v1
kind: Service
metadata:
name: webapp-service
spec:
selector:
app: webapp
ports:
- protocol: TCP
port: 80
targetPort: 80
type: NodePort
- Run the following terminal command to expose the web application's service.
kubectl apply -f webapp-service.yaml
- Update the "webapp-service.yaml" file to include Prommetheus annotations. This allows your application to be discovered and scraped for metrics.
webapp-service.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: webapp-deployment
annotations:
prometheus.io/scrape: 'true'
prometheus.io/port: '80'
spec:
replicas: 2
selector:
matchLabels:
app: webapp
template:
metadata:
labels:
app: webapp
spec:
containers:
- name: webapp-container
image: nginx:latest
ports:
- containerPort: 80
- Run the following terminal command to apply the changes.
kubectl apply -f webapp-deployment.yaml
- Install helm by following the Helm documentation.
- Deploy the Prometheus monitoring and alerting toolkit by running the following terminal command:
helm install prometheus prometheus-community/prometheus
- Forward the Prometheus service from the 'default' namespace within your Kubernetes cluster to port 9090 on your local machine by executing the following terminal command:
kubectl port-forward svc/prometheus-server 9090:80 -n default
-
Install and log into Grafana by following the Grafana documentation.
-
Configure your grafana.ini by following the Grafana documentation.
-
Under the [security] section, change "allow_embedding" from "false" to "true". Restart Grafana.
-
Clone the repo.
-
Set up the .env file by using the .template.env file.
-
Install the dependencies by running the following command:
npm install
- Run the application by running the following commands:
npm run start
- Visit
http://localhost:[PORT]
in your browser.
Any contributions are always welcomed and appreciated!
- Fork the project.
- Create your feature branch.
- Create a pull request detailing the changes you would like to introduce.
- Create a new issue on GitHub.