This project will manage several different pieces, each with independent terraform or other infrastructure tooling.
Each sub project is within a subdirectory, with the order of dependencies roughly the following:
The first project will be for standing up the Kubernetes cluster, and will initially just be on GKE, but the most important artifact from this project is simply a kube config file that can be used by the subsequent dependent projects.
This project will be in the k8s-tf directory.
The next project will simply be concerned with setting up Vault in the cluster, registering it as a certificate issuer for k8s, and providing tooling for issuing client certificates for mTLS devices. The primary artifact from this project will be a file containing credentials for administering vault.
This project will be in the vault-tf directory
The third project, which will depend on the kubernetes cluster being ready and vault being initialized and ready to issue certificates, will be the installation and configuration of Synadia Control Plane (SCP). The primary artifact from this project will be a file containing credentials for interacting with SCP via the API, along with any needed information about endpoints, etc. This credential file will be provided to downstream, dependent, projects that need to interact with SCP.
This project will be in the scp-tf directory
The next project will be the project for provisioning a core NATS instance via the official NATS helm chart. The seed configuration will be generated by creating a new NATS system in the SCP instance under a dedicated team and project. This NATS deployment will use auth callout, and should be configured to do so, while at the same time keep the Operator Mode configuration from SCP.
This project will be in the nats-core-tf directory.
The fifth project will be to provision a NATS leaf node cluster that connects to the core NATS cluster using credentials from the core cluster. Devices will connect to the leaf cluster using mTLS and potentially auth callout.
This project will be in the nats-leaf-tf directory.
Finally the devices project will provide a simple C client that connects to the Leaf Cluster and periodically sends sample metrics data to the leaf cluster. The device client should be configurable by providing a device id. Also, the device client should listen on a separate subject for instructions and print out the instructions received when it gets them.
This project will be in the devices directory.