Skip to content

A tool for visualizing the relationships amongst the users of a subreddit.

Notifications You must be signed in to change notification settings

hulloitskai/rgv

Repository files navigation

rgv

Reddit Graph Visualizer: A tool for visualizing the relationships amongst the users of a subreddit.

Github: Tag Travis: Build Codecov: Coverage Go Report Card

This is a work-in-progress (under active development).

Usage

We're live! Check it out at https://rgv.stevenxie.me.

TODO: Add more information about features.

Roadmap

  • Develop initial realtime-only version.
  • Make visualizer more informative and usable.
  • Improve / stabilize backend infrastructure.
  • Add database-connected history-tracking capabilities.

Deployment

With Helm

rgv can be deployed with Helm, using the repo located at https://charts.stevenxie.me:

## Add repository.
helm repo add stevenxie https://charts.stevenxie.me

## Install the chart.
helm install -f values.yaml -n rgv stevenxie/rgv

Configuration:

See deployment/charts/rgv/values.yaml for an the default values.yaml configuration.

To install rgv for production, one should have an Ingress controller in the target namespace, and configure a values.yaml with an appropriate ingress.host value:

ingress:
  host: rgv.stevenxie.me # example

Manually

rgv is configured to build as a set of two Docker images (a frontend and an API server), and to deploy on Kubernetes.

To deploy rgv, create the Kubernetes resources defined in deployment/:

cat deployment/* | kubectl create -f -

Exposure with Load Balancer:

This is the easier way to make rgv publicly accessible; however, this requires the use of a load balancer, which may be cost-prohibitive.

If you intend to run rgv behind a load balancer, go ahead and change the rgv-frontend service to type LoadBalancer:

kubectl patch service rgv-frontend -p "
spec:
  type: LoadBalancer
"

Exposure with Ingress Controller:

This method requires for you to have preconfigured an Ingress controller, like Traefik, which will route traffic from a publicly exposed node to the rgv-frontend service.

If you intend to run rgv behind an Ingress controller (what I do), go ahead and create an Ingress resource:

kubectl create -f - <<EOF
apiVersion: extensions/v1beta1
kind: Ingress

metadata:
  name: rgv-frontend

spec:
  rules:
    - host: "$YOUR_HOST"  # e.g. rgv.example.com or an external IP
      http:
        paths:
          - backend:
              serviceName: rgv-frontend
              servicePort: http
EOF

This Ingress resource is defined to route traffic from $YOUR_HOST to the http port on the rgv-frontend service (port 80).