These are notes from a meeting to discuss the PNDA Platform Components and the development work required to migrate to Kubernetes.
PNDA Health Framework
The PNDA health framework is used to monitor component health and report it back to the PNDA Console. Each backend service has a platform-testing module that runs health tests on the service and reports it back to the PNDA console. The console itself has three main components:
- Console Backend Data Logger – provides an API for posting health messages to the console.
- Console Backend Data Manager – provides an API and a SocketIO interface to the console frontend for querying component metrics and health.
- Console Frontend – an AngularJS web UI served by Nginx.
PNDA Applications
Applications are managed on PNDA by two main components:
- Package Repository – provides an API for uploading or deleting application packages from the system. The packages are stored in a Kubernetes persistent volume.
- Deployment Manager – provides an API for deploying applications from the package repository to the cluster.
Accessing the Package Repository
It is possible to temporarily expose the package repository API with kubectl port forwarding:
kubectl -n pnda port-forward service/pnda-package-repository 8888
Then you can use curl to post a package to the package repository:
curl -XPUT "http://localhost:8888/packages/app-0.0.1.tar.gz?user.name=" --data-binary "@app-0.0.1.tar.gz"
Then you can verify the upload by fetching the list of packages:
curl "localhost:8888/packages?user.name="
[{"name": "app", "latest_versions": [{"version": "0.0.1", "file": "app-0.0.1.tar.gz"}]}]
Deployment Manager
The deployment manager is responsible for deploying apps into the PNDA cluster and configuring all components of the cluster, using descriptor files in the application .tar file. The deployment manager currently was quickly ported to Kubernetes, with sufficient changes to allow the PNDA console to work. There is not yet any functionality to deploy applications into Kubernetes.
Development Tips For Helm and Kubernetes
When developing Helm charts, run your in-development chart separately from the main PNDA Helm chart. This will let you iterate through the install/delete cycle much faster.
Use https://www.telepresence.io/ to proxy into a Kubernetes cluster. This lets you access the cluster services as if your laptop is part of the cluster. It lets you run a component locally in a debugger or try out development changes without having to build a new image and push it to the registry.