This page describes how to deploy the FTGO application to a Kubernetes cluster. It covers the location of the Kubernetes manifests, how to deploy and undeploy all services using the provided scripts, how to clean up persistent volumes, and the available Skaffold configuration for iterative development.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/microservices-patterns/ftgo-application/llms.txt
Use this file to discover all available pages before exploring further.
Prerequisites
Before deploying, make sure you have:kubectlinstalled and configured to point to your target cluster- A running Kubernetes cluster — local (e.g., Minikube, Docker Desktop Kubernetes) or remote
- Sufficient cluster resources to run stateful services (MySQL, Kafka, Zookeeper, DynamoDB Local) alongside all application services
Manifest locations
Kubernetes YAML manifests are organized in two locations within the repository:deployment/kubernetes/— infrastructure and stateful services, organized into subdirectories:deployment/kubernetes/stateful-services/— MySQL, Kafka, Zookeeper, DynamoDB Local, and the database secretdeployment/kubernetes/cdc-service/— the Eventuate CDC servicedeployment/kubernetes/scripts/— helper shell scripts
*/src/deployment/kubernetes/— each application service’s own Kubernetes manifest (one per service module, e.g.,ftgo-consumer-service/src/deployment/kubernetes/ftgo-consumer-service.yml)
*/src/deployment/kubernetes/ are:
ftgo-accounting-serviceftgo-api-gatewayftgo-consumer-serviceftgo-kitchen-serviceftgo-order-history-serviceftgo-order-serviceftgo-restaurant-service
Deploying the application
Deploy all services
Run the deploy script from the repository root. This applies the stateful service manifests first, waits for those pods to become ready, then applies the CDC service and all application service manifests:The script waits for
ftgo-mysql-0, ftgo-kafka-0, ftgo-dynamodb-local-0, and ftgo-zookeeper-0 to be ready before proceeding with the CDC and application services.Verify pods are running
Check that all pods have started successfully:All pods should reach
Running status. Stateful services (Kafka, Zookeeper, MySQL, DynamoDB Local) are deployed as StatefulSets and may take a minute to initialize.Access services via port forwarding
The repository provides a port-forwarding script that forwards local ports to the running pods:This sets up the following local port mappings:
To stop all active port-forwards:
| Service | Local port |
|---|---|
ftgo-consumer-service | 8081 |
ftgo-order-service | 8082 |
ftgo-kitchen-service | 8083 |
ftgo-restaurant-service | 8084 |
ftgo-accounting-service | 8085 |
ftgo-api-gateway | 8087 |
Undeploying the application
To delete all deployed resources (services, deployments, StatefulSets, and configmaps):*/src/deployment/kubernetes/*.yml and deployment/kubernetes/*/*.yml.
Deleting persistent volumes
Thekubernetes-delete-all.sh script does not remove persistent volume claims (PVCs). Stateful services — Kafka, Zookeeper, MySQL, and DynamoDB Local — each use a PVC to retain data across pod restarts.
To delete all four PVCs:
Skaffold support
The repository includes askaffold.yaml configuration at the root, which enables Skaffold-based development workflows. The configuration builds the msapatterns/ftgo-consumer-service image and deploys the full manifest set — stateful services, CDC service, and the consumer service — using kubectl apply.
To use Skaffold for continuous development:
The
skaffold.yaml currently includes only ftgo-consumer-service in its build artifacts. To build and deploy other services with Skaffold, add their image definitions to the build.artifacts section of skaffold.yaml.Stateful services
The following services use Kubernetes StatefulSets with persistent volume claims and must be running before application services start:| Service | StatefulSet | Manifest |
|---|---|---|
| MySQL | ftgo-mysql | stateful-services/ftgo-mysql-deployment.yml |
| Apache Kafka | ftgo-kafka | stateful-services/ftgo-kafka-deployment.yml |
| Zookeeper | ftgo-zookeeper | stateful-services/ftgo-zookeeper-deployment.yml |
| DynamoDB Local | ftgo-dynamodb-local | stateful-services/ftgo-dynamodb-local.yml |
stateful-services/ftgo-db-secret.yml. The deploy script applies this secret as part of the stateful services step.