MigratoryData Platform — Kubernetes Deployment
Deploys MigratoryData Server (messaging plane), MigratoryData Portal (management plane), and Demo Publishers — sample services that continuously stream live data to the Server, providing ready-made subjects to explore and test the Portal — on Kubernetes using a migratorydata namespace.
Find the complete source code and configuration in the migratorydata-platform-sandbox repository on GitHub.
Directory Tree
kubernetes/
├── 01-portal.yaml # MigratoryData Portal (Services, PVC, ConfigMap, Deployment)
├── 02-migratorydata.yaml # MigratoryData Server (Service, ConfigMap, Deployment)
├── 03-demos.yaml # Demo data publishers (stocks, traffic, crypto, parking, seismic)
└── README.md # This file
Architecture Overview
┌─────────────────────────────────┐
│ migratorydata namespace │
│ │
Browser / Rest ──►│ migratorydata-portal-external │
:8080 │ (LoadBalancer) │
│ │ │
│ migratorydata-portal │
│ │ │
│ migratorydata-portal-internal │
│ (ClusterIP) │
│ │ │
Client SDK ──────►│ migratorydata-server-external │
:8800 │ (LoadBalancer) │
│ │ │
│ migratorydata-server │
│ (Deployment) │
│ │
│ demo-* (5 Deployments) │
└─────────────────────────────────┘
| Service | Type | Port | Purpose |
|---|---|---|---|
migratorydata-portal-external |
LoadBalancer | 8080 |
MigratoryData Portal (management plane) |
migratorydata-portal-internal |
ClusterIP | 8080 |
MigratoryData Portal — internal cluster communication |
migratorydata-server-external |
LoadBalancer | 8800 |
MigratoryData Server (messaging plane) |
Prerequisites
Verify your setup:
kubectl version --client
minikube version
Setup Instructions
1. Clone the repository (if not already done)
git clone git@github.com:migratorydata/migratorydata-platform-sandbox.git
cd migratorydata-platform-sandbox/kubernetes
2. Start Minikube (local development only)
minikube start
Optionally, open the Kubernetes dashboard:
minikube dashboard
3. Create the namespace
All resources are deployed into the migratorydata namespace:
kubectl create namespace migratorydata
Switch your active context to the new namespace so subsequent commands default to it:
kubectl config set-context --current --namespace=migratorydata
4. Deploy the Portal
Deploys the MigratoryData Portal with its external and internal Services, a 5 Gi PersistentVolumeClaim for the SQLite database, a ConfigMap for configuration, and the Portal Deployment.
kubectl apply -f 01-portal.yaml
5. Deploy the MigratoryData Server
Deploys the MigratoryData Server with a LoadBalancer Service and a ConfigMap-backed configuration:
kubectl apply -f 02-migratorydata.yaml
6. Deploy Demo Applications (optional)
Deploys the Demo Publishers — sample services that continuously stream live data to the Server, providing ready-made subjects to explore and test the Portal:
kubectl apply -f 03-demos.yaml
7. Expose LoadBalancer Services (Minikube only)
Minikube does not automatically assign external IPs to LoadBalancer services. Run the tunnel in a separate terminal to enable access:
minikube tunnel
Verify Installation
Check that all pods reach Running status:
kubectl get pods
Expected output similar to the following:
NAME READY STATUS RESTARTS AGE
migratorydata-portal-5c94794f9-gzxbs 1/1 Running 0 3m
migratorydata-server-bd4c75658-5rhx8 1/1 Running 0 2m
demo-stocks-7bdd96c4fc-6lps5 1/1 Running 0 1m
demo-traffic-6d4d5d4868-vkrv9 1/1 Running 0 1m
demo-cryptocurrency-846789989b-wctzl 1/1 Running 0 1m
demo-parking-8679cc64fb-xtl2h 1/1 Running 0 1m
demo-seismic-76479b5d55-8m9j6 1/1 Running 0 1m
Verify Services and their external IPs:
kubectl get svc
Expected output similar to the following:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
migratorydata-portal-external LoadBalancer 10.43.158.123 127.0.0.1 8080:30856/TCP 3m
migratorydata-portal-internal ClusterIP 10.43.199.88 <none> 8080/TCP 3m
migratorydata-server-external LoadBalancer 10.43.237.196 127.0.0.1 8800:31735/TCP 2m
Getting Started
Open the Portal
Navigate to the Portal in your browser at: http://127.0.0.1:8080.
Log in with the default credentials defined in the ConfigMap inside 01-portal.yaml:
| Field | Value |
|---|---|
admin@admin.com |
|
| Password | password |
Useful Commands
View logs
# Portal logs
kubectl logs -f deployment/migratorydata-portal
# MigratoryData Server logs
kubectl logs -f deployment/migratorydata-server
Inspect a pod
kubectl describe pod <pod-name>
Open a shell inside a pod
kubectl exec -it <pod-name> -- /bin/bash
Update configuration
Configuration is stored in ConfigMaps inside each manifest. To apply a config change:
- Edit the relevant
ConfigMapsection in the YAML file. - Re-apply the manifest:
kubectl apply -f 01-portal.yaml # for portal config changes
kubectl apply -f 02-migratorydata.yaml # for server config changes
- Restart the affected deployment to pick up the new ConfigMap:
kubectl rollout restart deployment/migratorydata-portal
kubectl rollout restart deployment/migratorydata-server
Uninstall
Remove all resources by deleting the namespace:
kubectl delete namespace migratorydata
Then restore the default namespace context:
kubectl config set-context --current --namespace=default