Final state of our Platform-as-a-Service (PaaS) system built on Kubernetes. The PaaS enables users to manage namespaces, deploy applications, scale resources, and remove deployments using an intuitive interface and robust backend architecture. This system integrates Kubernetes features with custom services to provide automation, isolation, and scalability for user applications (service providers). Here the Service Discovery/Registry will be the kubernetes control plane. We created a custom user management microservice and deployment management microservice to provide apis for the UI side to enable customers(service providers) to deploy their applications, discover how many of their deployments are working, manage their deployments and get a endpoint from which they can interact with their custom applications that they deployed via our UI.
We are building something similar to qovery.com
The entire application is deployed on kubernetes orchestration. Major components include: ● User Management Service: Handles user authentication and data. ● Deployment Management Service: Automates application deployment and scaling. ● Customer Services: Interfaces with Kubernetes to manage namespaces and resources.
User Management Service:
- User Registration: Allows new users to sign up by providing username, email, and password.
- Authentication: Secure login/logout with JWT.
- User Account Management: Includes profile updates, password reset mechanisms, and account recovery.
- API for Integration: Endpoints for creating, updating, and retrieving user data.
- Automated Deployment: Automated deployment to environments (staging/production).
- CI/CD and Version Control: Pulls latest changes from Git repositories and deploys automatically on single click from UI - Continuous deployment also possible without users intervention with just minor extra codes.
- Rollback Capability: Supports rolling back to previous application versions.
- Resource Provisioning: Allocates Kubernetes resources as required.
- Namespace Isolation: Assigns unique namespaces to each customer.
- Application Deployment: Deploys applications via UI or API using container images.
- Resource Monitoring: Provides real-time CPU, memory, and storage usage statistics.
- Scaling Applications: Scales deployments based on customer requirements.
- Git Integration: Enables automated deployments triggered by repository commits.
- Security: Implements RBAC, encryption, and namespace isolation.
- Usability: User-friendly UI for deploying, scaling, and managing applications.
- Reliability: Ensures high uptime with robust error handling.
- Scalability: Supports growing user and application demands.
- Auditability: Logs user actions and deployments for troubleshooting.
- Namespace Isolation: Ensures user-specific resource management and security.
- Scalability: Supports dynamic allocation of resources for customer applications.
- Rollback and CI/CD: Facilitates seamless version control and deployment pipelines.
Detailed Requirements are defined here: CS 9549 Project Spreadsheet.xlsx