Git Product home page Git Product logo

indik8or's Introduction

Screenshot 2023-06-17 at 11 13 09 AM

❤️❤️ IF YOU LIKE OUR PRODUCT, YOU CAN SHOW LOVE AND SUPPORT BY ⭐️ THIS REPOSITORY! ❤️❤️

Built With

JavaScript TypeScript React ReactRouter Node Express MongoDB Mongoose Passport Vite Docker Kubernetes Grafana Prometheus Helm MUI HTML CSS SCSS Jest Supertest Vitest

About indiK8or

indiK8or is a Kubernetes Cluster Visualization Tool that will display your cluster metrics in real-time, it also provides the ability show security metrics by scanning your pods and displaying the vulnerabilities.

Features

  • indiK8or provides an intuitive K8s cluster visualization, making it easy for users to understand their cluster's topology and access key details about each pod without running kubectl commands.
  • Our app can conduct security scans of the pods in your K8s containers and display their vulnerabilities.
  • The built-in Prometheus integration allows users to excute queries and easily monitor cluster performance without the need for additional configuration.
  • Zero-setup Grafana integration provides users access to insightful visualizations of valuable cluster metrics.

Getting Started

indiK8or functionality assumes that you have Docker and Kubernetes already installed and running on your machine. The simplest way to install both is to follow the instructions for Docker Desktop installation, then enable Kubernetes from the Settings menu.

If you do not have a Kubernetes cluster up and running, use Minikube to quickly set one up, The instructions are laid out below.

NOTE: ONLY RUN STEP 1-15 IF THIS IS YOUR VERY FIRST TIME USING INDIK8TOR!


  1. Make sure you have node.js installed, you can check if you have it by running node -v

  2. Run npm i to install all packages dependencies.

  3. Create a MongoDB database and set up Github OAuth credentials to use within the app.

  4. The Homepage url should be http://localhost:5000, and the authorization callback URL should be
    http://localhost:4000/auth/github/callback.

  5. Create a .env file and assign the following environment variables according to your MongoDB and OAuth set up.

        MONGO_URI=''
        SESSION_SECRET='(Randomly generated string)' 
        GitHubClientID=''
        GitHubClientSecret=''
    
  6. Make sure you have Docker installed on your local machine.

  7. Once Docker is installed, run the following command: minikube delete

  8. Start the minikube service with the following command: minikube start --cpus 4 --memory 8192 --vm-driver Docker

    Note: it may take a while to fully install. Please be patient

  9. Make sure you have kubectl installed to add deployments

    • If you use macOS, run: brew install kubectl
    • If you use Windows, run: choco install kubernetes-cli
    • If you use Linux, run: sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  10. Install helm

  • If you use macOS, run: brew install helm
  • If you use Windows, run: choco install kubernetes-helm
  • If you use Linux, run:
        $ chmod 700 get_helm.sh
        $ ./get_helm.sh ```
    NOTE: Refer to this link for more details: https://kubernetes.io/docs/tasks/tools/
    
    
  1. Copy the code snippet below into your terminal and run it
 helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
 helm repo add stable https://kubernetes-charts.storage.googleapis.com/
 helm repo update
  1. Install Prometheus

helm install prometheus prometheus-community/kube-prometheus-stack

  1. Configure a yaml file for grafana, replace the part of 'yourFile' with the name you want for your yaml file

kubectl get configmap prometheus-grafana -o yaml > yourFile.yaml

  1. Once you generated this yaml file, open it and paste the code below into your yaml file inside of grafana.ini
   [security]
   allow_embedding: true
   [auth.anonymous]
   enabled: true
   [dataproxy]
   timeout: 600 
  1. Apply the yaml file, and replace 'filePath' with the path of your yaml file kubectl apply -f 'filePath'

    Here is an example if your yaml file resides in your desktop folder: kubectl apply -f /Users/Ivy/Desktop/newMap.yaml

  2. Install grype, you can find the instructions here


NOTE: START HERE IF YOU HAVE COMPLETED THE INITIAL SETUP

  1. Restart minikube by running below commands separately minikube stop minikube start

  2. Begin port forwarding Grafana with the following command:

    kubectl port-forward deployment/prometheus-grafana 3000

    Open your browser and go to http://localhost:3000 and sign in to grafana with

    default user: admin

    default password: prom-operator

    finally stop the port forwarding of Grafana (shell commands will execute this automatically every time you start the server)

    NOTE: You do not have to do step 2 if you have previously logged in before.

  3. In your terminal, run this command npm run dev

  4. Now visit http://localhost:5000 and Voila! Your will see your kubernetes cluster come alive monitoring real-time data!

Usage Guidelines

Dashboard

This page of the application will provide a visual overview of your kubernetes cluster. The visualization will show the control plane, namespaces, pods, services, deployments and nodes.

Pods

This page will show you the health and status of the pods, it provides the details including image's name, ready, status, age, and IP. It additionally offers images & vulnerability scan.

Contributing

This product is open source, being actively maintained, and open to contributions. Please inform us of any features or bugs you'd like to see addressed.

How to contribute

Contributions are an incredibly important part of the open source community. Any contributions you make are greatly appreciated!

  • Fork the project
  • Create your feature branch (git checkout -b feature/AmazingFeature)
  • Commit your changes (git commit -m 'Add some AmazingFeature')
  • Push to the branch (git push origin feature/AmazingFeature)
  • Open a pull request with clear descriptions of changes (from feature/AmazingFeature to dev)

Publications

You can check our amazing medium article here.

Contributors

Screenshot 2023-06-16 at 4 23 00 PM Screenshot 2023-06-16 at 4 20 50 PM Screenshot 2023-06-21 at 12 08 12 PM Screenshot 2023-06-16 at 4 23 29 PM
Tadd Lerocque Ivy Wang Yueran Li Julian Babon

License Information

Distributed under the MIT License. See LICENSE for more information.

❤️ IF YOU FIND OUR PRODUCT HELPFUL, YOU CAN SHOW YOUR SUPPORT BY ⭐️ THIS REPOSITORY! ❤️

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.