Introducing KuberNautical, an open-source Kuberenetes developer tool designed to empower you with unparalleled insights and control over your Kubernetes clusters. Seamlessly merging the worlds of metrics analysis and streamlined cluster management, KuberNautical redefines the way you interact with your kubernetes infrastructure.
Upon application launch, users can view a robust 2D configuration of their desired cluster.
Users are able to view important metrics and logs pertinent to cluster health.
Users are able to view logs regarding events occuring within cluster. These logs can be filtered by namespace and pod.
Users have the ability to make live changes to thier cluster in a variety of ways.
Users can create a new namespace within the current cluster context through the "Edit Cluster" Modal.
Users can create a new deployment within a given namespace using a public docker image.
Users can scale deployments as needed to meet demand.
Users can expose deployments within any chosen method, at the given ports.
Users can remove a namespace and all resources inside of it.
Users are able to apply a load test to a deployed application of their choosing.
Load Test Result
- Fork this repository and clone it onto your local machine:
git clone https://github.com/oslabs-beta/Kubernautical
- Install all package dependencies
npm install
- Cluster from provider of choice
- Kubectl installed
- Helm installed
- SDK for your cluster(see specific instructions for your OS)
- Prometheus deployed
- Grafana Loki deployed
- Grafana k6 installed
Google Cluster
- Create a standard cluster with Google (autopilot clusters will not work).
- Click Connect in GCP and copy the command into your terminal or fill out the command below with pertinent information:
gcloud container clusters get-credentials <yourGKEClusterName> \
--zone <yourClusterZone> --project <ProjectName>
Microsoft Cluster
- Create a cluster with Microsoft.
- Click Connect in Azure and copy the command into your terminal or fill out the command below with pertinent information:
az aks get-credentials --resource-group <yourResourceGroupName> \
--name <yourAKSClusterName> --admin
Amazon Cluster
- Create a cluster with AWS.
- Fill out the command below with pertinent information:
aws eks update-kubeconfig --region <region-code> --name <my-cluster>
Minikube Cluster
- Install Docker Desktop. We Reccommend you have 4g+ of free ram as Docker Desktop can overload and crash your machine.
- Install Minikube.
- Create a cluster
minikube start
Minikube Teardown
- Stop your cluster
minikube stop
- Delete your cluster (can also use '--all' flag to delete all)
minikube delete
Confirm that your cluster is in your kube config
kubectl config view
Confirm context is set to desired cluster
kubectl config use-context <my-cluster-name>
- Create a namespace for prometheus
kubectl create ns prometheus
- Install the helm charts
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
- Apply the helm charts and install prometheus in the namespace
helm upgrade -i prometheus prometheus-community/prometheus --namespace prometheus
- For our application you need to expose the prometheus-server as a load balancer
kubectl expose deployment prometheus-server --port=80 --target-port=9090 --type=LoadBalancer \
--name prometheus-server-lb --n prometheus
Deployment, target port, type and namespace are all mandatory as above, while port, and name can be customized if desired but name MUST start with prometheus-server
- Use helm to add Grafana
helm repo add grafana https://grafana.github.io/helm-charts
- Update helm if necessary
helm repo update
- Check if helm charts installed
helm search repo loki
- Create a namespace for Loki
kubectl create ns loki
- Install Loki on the
loki
namespace
helm upgrade --install --namespace loki logging grafana/loki -f yamls/values.yml \
--set loki auth_enabled=false
- Deploy Grafana with Loki data source to enable log aggregation
helm upgrade --install --namespace=loki loki-grafana grafana/grafana
- Deploy Promtail to enable log scraping from whole cluster
helm upgrade --install promtail grafana/promtail -n loki
- Create a daemonset to ensure system-level logging
kubectl apply -f yamls/Daemonset.yaml
- Expose
loki-gateway
as a load balancer
kubectl expose deployment loki-gateway --port=80 --target-port=8080 --type=LoadBalancer \
--name loki-gateway-lb -n loki
Naming conventions for namespaces and services created are customizable, but name for loki-gateway
service must start with loki-gateway
.
Contributions play a vital role in the open-source community. Any contributions are greatly appreciated!
- Fork the project.
- Create and work off of your feature branch.
- Create a pull request with detailed description of your changes from your feature branch to dev branch.
- Inform us upon PR submission. Once the changes are reviewed and approved, we will merge your code into the main repository.
![]() |
![]() |
![]() |
![]() |
---|---|---|---|
Jeremiah Hogue ![]() ![]() |
Anthony Vuong ![]() ![]() |
Stephen Acosta ![]() ![]() |
Michael Van ![]() ![]() |