This concept describes the connection and life cycle between a hosted platform and a local system to achieve an automated local deployment.
The deployment of the server+app must happen locally on a system, capable of running multiple container instances. However, the build artefacts are stored on a hosted platform.
After the initial deployment, the deployed code must remain updatable and the containers can be scaled at will (within the limits of the host system).
The hosted platform must offer a list of features to enable local deployments, such as but not only: repositories, actions, container registries and local agents/runners.
- K8s namespace
production
andstaging
(Visualization of the entire life cycle below)
The local system must allocate a local kubernetes (VM) of sorts with basic access to the cluster. Initially a CLI command to start the local kubernetes (VM) is required to run once.
The CI/CD pipeline will be automatically triggered by a Git commit to the main branch on the hosted repository. The local agent/runner on the same system will then access the local kubernetes whenever one of its action is being executed.
- VCS:
Git
- Repository:
GitHub
(hosted) - Server:
NodeJS
+Express
- App:
TypeScript App (static)
- CI/CD:
GitHub Actions
(hosted) - Public Container Registry:
TBD
(hosted) - Database:
PostgreSQL
- Runner:
GitHub Self-hosted Runners
(local) - Private Container Registry:
GitHub Container Registry
(hosted) - Kubernetes (VM):
Minikube
(local) - Monitoring:
Prometheus
+Grafana
(local)