# One VM to a GKE platform

Building IoT platform (Primustech), 2026. Case study by Li ZhenXi. Page: https://portfolio-emsghin2iq-as.a.run.app/work/gke

> Moved a live building-operations platform off a single Docker Compose VM and onto Kubernetes.

- **1 VM**: before: one Docker Compose host, one failure domain
- **3**: Kafka brokers, beside Cloud SQL, EMQX and Redis
- **1**: restore drill passed before deletion protection went on

## The problem

The IoT platform behind the company's facility-management product ran on one Docker Compose VM: one failure domain, hand-run deploys and no autoscaling.

## What I did

1. Split it into GKE microservices: a three-broker Kafka cluster, Cloud SQL PostgreSQL, EMQX MQTT and Redis.
2. Provisioned everything with Terraform, behind Cloud Armor WAF and Google-managed TLS, with pod and node autoscaling.
3. Migrated the production database, cut the public domain over, then turned on deletion protection and passed a restore drill.

## Result

The platform now runs on autoscaling GKE with a WAF in front, and every change goes through code review.

Tools: GKE, Terraform, Kafka, Cloud SQL, EMQX, Redis, Cloud Armor.

## Go further

- [How traffic, telemetry and commands move through the platform](https://portfolio-emsghin2iq-as.a.run.app/iot#platform-paths)
- [What I alert on there, and the SLOs](https://portfolio-emsghin2iq-as.a.run.app/iot#platform-signals)
