PaaKS is an open-source PaaS (Platform-as-a-Service) based on Kubernetes written in Go which allows to write Python apps.
- Docker
- Kubernetes
- Golang
- Python
PaaKS is a Platform-as-a-Service deployable on Kubernetes. It right now provides the following features:
- The ability to create/deploy and execute Tenant Services written in Python
- Multi-tenancy
- A Web frontend allowing to:
- See running tenant services
- See and edit files available to those services, including the Python code executed by those services
Future features:
- Administration interface (to manage tenants and users)
- The ability to start Websites for tenants
- Roles
- Git integration
- Modify
k8s-storage.yaml
so that thepath
variable points to the currentstorage
folder - Run
deploy_storage.sh
to create the file storage - In the following folders run
build.sh
thendeploy.sh
:frontend
,auth
,admin
,dispatcher
,filesystem
,svc-mgr
,db-mgr
,svc-python
The architecture contains the following services:
frontend
: a ReactJS project (accessible on port 3000) used by KAOS usersdispatcher
(accessible on port 8080): the endpoint to access micro-services deployed on KAOSauth
(internal): used to authenticate and generate a JWT tokenadmin
(internal): allows to create tenants and users (no UI yet)filesystem
(internal): allows to read and update files belonging to a given servicessvg-mgr
(internal): the Service Manager which is used to list existing Services and create tenant servicesdb-mgr
(internal): allows to access the system databasetnt-<company ID>-*
(internal): any Tenant Service, i.e. a service created by a tenant
Tenant Services are micro-serviced tied to particular tenant. These are Python micro-services using the Flask framework.
In order to create a new service newService
for account 12345678-1234-1234-abcdefghijkl
, the Service Manager performs the following operations:
- Create a
tnt-12345678-newService
directory inside thestorage
directory - Copy
storage/tnt-504f0000-service1/handler.py
tostorage/tnt-12345678-newService/
- Creates a Kubernetes deployment and service for that tenant service
From here, go to the frontend to look at the newly deployed service. Edit handler.py
to change the business logic
The UI is accessible on http://localhost:3000
and right now allows to see the deployed account services, see and edit their files.
It is possible to access these micro-services through an API: `http://localhost:8080/[service]/. Those accept multiple types of methods (GET, POST)