This project is a simple Kubernetes as a Service (Kaas) application. It provides an API that allows users to:
- Deploy applications to a Kubernetes cluster.
- Retrieve the status of a specific deployment.
- Retrieve the statuses of all deployments.
Additionally, there is a self-service API that brings up a PostgreSQL database for further uses.
- Deployment Management: Easily deploy your applications to Kubernetes using a simple API.
- Status Monitoring: Check the status of individual deployments or all deployments at once.
- Scaling: Utilize Kubernetes Horizontal Pod Autoscaler (HPA) to manage application scaling.
- Monitoring: Integration with Prometheus and Grafana for monitoring and visualizing deployment metrics.
- Persistence: Uses PostgreSQL for storing deployment data.
- Golang: The main language used for development.
- Kubernetes Client (Go): Communicate with the Kubernetes cluster.
- PostgreSQL: Database for storing deployment information and provided via a self-service API.
- Helm: Manage Kubernetes applications.
- Horizontal Pod Autoscaler (HPA): Automatically scale the number of pods in a deployment.
- Monitoring Probes: Ensure applications are running smoothly, including liveness, readiness and startup.
- Prometheus: Monitoring system and time series database.
- Grafana: Analytics and monitoring dashboard for visualizing metrics.
- Deploy Application: Allows users to deploy a new application to the Kubernetes cluster.
- Get Deployment Status: Retrieve the current status of a specific deployment.
- Get All Deployment Statuses: Retrieve the current statuses of all deployments.
- Deploy PostgreSQL Database: Bring up a PostgreSQL database for further uses.