2026
Workflow Engine Platform on AWS EKS
The full path from git push to running pods for a workflow automation engine and its command-line tool.
View the code on GitHub
Some context
SeyoAWE is an existing workflow automation engine with a Python command-line tool. The application isn't mine. My part was everything around it: packaging it, testing every change, provisioning the cloud, deploying to Kubernetes and monitoring it once it runs.
How it works
- A push to GitHub starts a Jenkins pipeline. The engine and the CLI each have their own, and each checks what actually changed.
- The code is linted with flake8, then goes through unit, integration and end-to-end tests.
- Docker images are built and pushed to Amazon ECR and Docker Hub, and the release is tagged on GitHub.
- When CI succeeds, the CD job compares the new image digest in ECR with what the pods are running.
- If there's something new, Kustomize writes an overlay with the new tags, kubectl applies it to EKS, and the job waits for the rollout to finish.
- Prometheus and Grafana run inside the cluster and scrape the workloads. If a pipeline fails, a message goes to Slack.
Decisions I made
No credentials in Jenkins
Jenkins reaches AWS through its EC2 instance profile. The Docker Hub login and GitHub token are read from AWS Secrets Manager when a pipeline runs.
Deploy only when something changed
The CD job checks image digests first, so a pipeline run with no new image doesn't touch the cluster.
The whole setup is code
Terraform creates the Jenkins server, the EKS cluster and IAM, and Ansible configures Jenkins with its plugins and seed jobs. Nothing depends on clicking around in a console.
Where it stands
The pipelines run end to end. A failed deploy alerts Slack, but it doesn't roll back on its own yet.
AWS · Terraform · Ansible · Jenkins · Docker · Kubernetes · Kustomize · Prometheus · Grafana