Ron Shitrit
All work

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
Diagram of the CI pipeline in Jenkins, the CD pipeline to Amazon EKS, and the supporting infrastructure.

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

  1. A push to GitHub starts a Jenkins pipeline. The engine and the CLI each have their own, and each checks what actually changed.
  2. The code is linted with flake8, then goes through unit, integration and end-to-end tests.
  3. Docker images are built and pushed to Amazon ECR and Docker Hub, and the release is tagged on GitHub.
  4. When CI succeeds, the CD job compares the new image digest in ECR with what the pods are running.
  5. 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.
  6. 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