Git Product home page Git Product logo

chirpstack-aws-infrastructure's Introduction

Chirpstack-Infrastructure

This repository contains Terraform modules and Helm charts for a highly available Chirpstack V4 deployment configured with a Helium Network sidecar on AWS EKS.

The repo is broken down into four directories - aws, kubernetes, chirpstack, and helium - respectively for deploying underlying AWS infrastructure (e.g., EKS, RDS, ElastiCache, etc.), Kubernetes system applications (e.g., ArgoCD, AWS Load Balancer Controller, External DNS, etc.), the Chirpstack application, and the Helium sidecar applications. Each of the directories contains a top-level README.md file that provides further information about the resources that get deployed and how to deploy the infrastructure defined in the directory.

This repo assumes prior knowledge of Chirpstack and Helium, and that a Helium Organizationally Unique Identifier (OUI) has been purchased. If not, however, please see the inline links for further reading on Chirpstack V4, Helium, and running Chirpstack with Helium prior to beginning here.

Usage

When using this repo to deploy Chirpstack, it is intended that a fork be created so that the resources can be tailored to a variety of implementations and custom variables can be set. After making a fork, the resources must be deployed in the following directory order:

  • aws
  • kubernetes
  • chirpstack
  • helium

While the aws and kubernetes resources are to be actively deployed with Terraform, the chirpstack and helium applications are Helm templates configured to be deployed automatically in a GitOps manner via ArgoCD (deployed via the kubernetes directory).

Application-Level Resources

After deploying:

  • Argo, Grafana, and Chirpstack dashboards will be exposed with custom hostnames behind an AWS application load balancer configured for SSL termination and security group-based whitelisted CIDR access.
  • MQTT will be exposed with a custom hostname behind an AWS network load balancer configured for SSL termination with whitelisted CIDR access based on a load balancer security group.
  • Chirpstack Gateway Bridge instance(s) will be exposed a custom hostname behind an AWS network load balancer.
  • Helium sidecar applications will be configured to mirror Chirpstack state with the Helium Network.
  • All credentials will be stored in AWS Secrets Manager.

Pre-Commit

The repo comes configured with pre-commit Git hooks for performing Terraform formatting, linting, and doc creation based on the configuration defined at .pre-commit-config.yaml when making commits. To use the pre-commit hooks in a forked repo, install pre-commit, install the hook dependencies (e.g., terraform-docs, tflint, and jq), and run pre-commit install. After doing so, anytime git commit is run, the git hooks will execute. Additional git hooks such as those for static analysis of Terraform templates for security issues and AWS cost estimates can be found at pre-commit-terraform by the legendary Anton Babenko.

chirpstack-aws-infrastructure's People

Contributors

deasydoesit avatar

Stargazers

SAGAR PATEL avatar Jameson Buffmire avatar

Watchers

Abhay Kumar avatar Jamie Dubs avatar Joey Hiller avatar Jameson Buffmire avatar  avatar

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.