Development workflow¶
Whether it's a small interaction for an single course, or a larger, more complicated application for an entire program, we develop and operate containerized apps that can be deployed on Kubernetes.
Development Strategy
Rather than building every functional component into one large monolith, the approach is to build smaller apps that have one purpose, and then connect them together in a microservice architecture.
This makes it easier to update a specific component without having to change to something that already works well.
Our infrastructure makes it easy to adopt a modern, automated, development workflow:
- local development using
docker compose - centralized version control, image registries, and automated deployment using GitLab
- a progressive release strategy using
review,latest, andstableenvironments -
baseandoverlayrelease packaging using Kustomize - continuous deployment using FluxCD
- secrets management using Hashicorp Vault
- automatic semantic versioning using semantic-release
Workflow Overview¶

-
Create an Issue, a Merge Request (MR), and new branch for development
-
Checkout the new branch, develop, commit, and push
-
Push your code to trigger a pipeline that builds an image and pushes the image to the project registry
-
The pipeline deploys the deployment to a cluster for
review -
Use
docker composeto develop app functionality locally. -
Each push to the branch triggers an additional pipeline. View your changes by clicking the View App button in the merge request.