Project Overview
What You Will Learn
- What this project is and what the end result looks like
- The four steps you will follow to get your Godot game running on the cluster
- What you need before you start
The Mission
You are going to take a Godot game, export it as an HTML5 web app, package it into a container, and deploy it to the Junovy Kubernetes cluster. When you are done, anyone with the URL will be able to play your game in their browser.
Think of it like publishing a game to a platform -- except you are building the platform layer yourself. You already know how to get a game from Godot to a browser. This project adds the infrastructure that makes it accessible to the world.
The End Result
When this project is complete, your game will be live at:
https://game.godot-demo.junovy.com
It will be served over HTTPS with an automatically provisioned TLS certificate. It will be running inside a container, managed by Kubernetes, deployed through GitOps.
The Four Steps
Here is what you will do, broken into one page per step:
| Step | Page | What Happens |
|---|---|---|
| 1 | Export and Containerize | Export your Godot project as HTML5 and wrap it in a Docker image |
| 2 | Create the Tenant | Set up the namespace and directory structure in the Flux repo |
| 3 | Write the Kustomize Patches | Define the Deployment, Service, and Ingress manifests |
| 4 | Deploy and Verify | Push to Git, let Flux deploy it, and confirm it works |
Each step builds on the previous one. By the end, you will have touched every layer of the Junovy deployment pipeline.
Prerequisites
Before you start, make sure you have the following ready:
| Prerequisite | How to Check |
|---|---|
| A Godot project with HTML5 export configured | Open Godot, go to Project > Export, confirm "Web" is listed |
| Docker Desktop installed and running | docker version shows output without errors |
| Access to the Junovy VPN (WireGuard) | ping robin.spynl.net responds |
The dds-k8s-cluster repo cloned locally |
ls ~/workspace/junovy/dds-k8s-cluster/clients/ shows existing tenants |
| AWS ECR credentials configured | aws ecr get-login-password --region eu-central-1 returns a token |
kubectl configured for the cluster |
kubectl cluster-info --context admin@dds-prod-de-fsn1 shows the API server |
If any of these are not set up yet, refer back to Chapter 6 (Your Toolbox) for installation instructions.
How This Connects to What You Have Learned
This project ties together concepts from nearly every chapter so far:
| Chapter | Concept You Will Use |
|---|---|
| Chapter 2 - Containers | Building a Docker image from a Dockerfile |
| Chapter 3 - Kubernetes Basics | Deployments, Services, Ingress, Pods, Namespaces |
| Chapter 4 - GitOps and Flux CD | Pushing manifests to Git and letting Flux reconcile |
| Chapter 5 - The Junovy Platform Map | Tenant naming (hst-*), file numbering, directory layout |
| Chapter 6 - Your Toolbox | kubectl, flux CLI, Docker, Git |
In Godot terms: you have been learning individual nodes and scenes. This is where you connect them into a running project.
Key Takeaways
- This project deploys a Godot HTML5 export as a live web app on the Junovy cluster
- There are four clear steps: Export, Containerize, Create Tenant, Deploy
- The final URL will be
https://game.godot-demo.junovy.com - You need Docker, VPN access, ECR credentials, and kubectl configured before starting
What Is Next
Next up: Export and Containerize where you will turn your Godot HTML5 export into a Docker image ready for the cluster.