Purpose of this repository is to track how I have setup the infrastructure of my personal computers and to have a solid understanding and notes for bringing these things and ideas to an enterprise setting.
I always loved to teach, but I haven't gotten too much of an opportunity to do that with software quite yet. Teaching something at multiple levels of abstraction provides a newfound passion and understanding. And while I don't have the opportunity to teach at this moment, maybe I can teach myself. So here we go!
This repository follows a hierarchical structure starting with there's no other requirements to start this application up to okay there's a lot of dependencies here. For the purpose of learning, I'm going to overengineer my personal setup where necessary to understand how these components and applications would work in an enterprise setting.
First-level applications (no dependency):
- docker (most fundamental tool for building/creating images and running containers)
- git (minor public/private key setup)
- minikube (manage all containers the right way)
- openssh (linux heavy)
- openvpn (linux heavy)
Second-level applications (one/two dependencies):
- github-runner (docker/kubernetes)
- gitlab-runner (docker/kubernetes)
- mongodb (docker/kubernetes)
- registry (docker/kubernetes)
- vault (docker/kubernetes)
- pihole (openvpn?)
Other:
- bashrc (custom bash)
I have another repo for setting up a machine learning infrastructure. Most of the tools listed there live within minikube/kubernetes. Check it out here.
Well, if you want to transition your organization to a truly microservice oriented architecture, the best way to do so is to containerize everything. For more information on the benefits of containerization, namely kubernetes' container orchestration, check out my minikube notes.
This stackoverflow post also does a good job of illustrating how there's never been one production technology infrastructure could agree on. This very well might be a rare case of software tool being here to stay.