Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

stevehoober254/devops-portfolio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

History

7 Commits

Repository files navigation

☁️ DevOps / Platform Engineer Portfolio β€” Stephen Gashoka

Infrastructure-as-Code, CI/CD pipelines, Kubernetes, and multi-cloud automation. Production-grade reliability engineering with a focus on cost efficiency and self-healing systems.

Terraform Kubernetes Docker GitHub Actions Prometheus


Projects

1. Multi-Cloud CI/CD Pipeline with Secrets Rotation & Policy Compliance

Problem: Maintaining deployments, secrets, and compliance across AWS and Azure simultaneously without a unified control plane.

Architecture:

  • GitHub Actions for pipeline orchestration
  • Terraform modules for AWS (EKS) and Azure (AKS) provisioning
  • HashiCorp Vault for dynamic secrets with auto-rotation
  • Open Policy Agent (OPA) for pre-deployment policy enforcement (no public S3 buckets, no privileged containers)
  • LaunchDarkly for canary/feature-flag releases
  • Slack webhooks for deployment notifications

Key decisions:

  • Chose Vault over AWS Secrets Manager to stay cloud-agnostic
  • OPA policies run as a GitHub Actions step before terraform apply β€” shift-left compliance
  • Canary deployments roll out to 5% traffic via weighted K8s services before full cutover

Stack: Terraform Β· GitHub Actions Β· Vault Β· OPA Β· Kubernetes Β· Helm Β· Slack API


2. Infrastructure Cost Tracker & Optimizer

Problem: Cloud spend spiralling due to idle resources and over-provisioned instances.

Architecture:

  • Infracost integrated into GitHub Actions PRs β€” cost diff shown before merge
  • AWS Lambda (scheduled) scans for idle EC2, unattached EBS volumes, and unused RDS snapshots
  • Results pushed to a Grafana dashboard (backed by TimescaleDB)
  • Slack alerts when weekly spend exceeds defined thresholds
  • Auto-generates Terraform destroy plans for approved idle resources

Key decisions:

  • TimescaleDB over plain Postgres for efficient time-series cost queries
  • Lambda runs on a cron β€” no always-on infra cost for the cost tracker itself (irony avoided)

Stack: Terraform Β· Pulumi Β· Infracost Β· AWS Lambda Β· Grafana Β· TimescaleDB Β· Slack API


3. Self-Healing Kubernetes Cluster for Event-Driven Systems

Problem: Event-driven microservices fail silently under Kafka lag spikes, causing downstream data loss.

Architecture:

  • KEDA for Kafka-lag-based autoscaling of consumer pods
  • Karpenter for dynamic node provisioning (scale-in within 2min of idle)
  • Prometheus + Alertmanager for metrics and alert routing
  • ArgoCD for GitOps-based continuous deployment
  • Chaos Engineering with Chaos Monkey for periodic failure injection tests

Key decisions:

  • KEDA over HPA because HPA can't natively scale on external event sources like Kafka
  • ArgoCD's sync waves used to enforce deployment ordering (infra β†’ services β†’ consumers)

Stack: Kubernetes Β· KEDA Β· Karpenter Β· ArgoCD Β· Helm Β· Prometheus Β· Grafana Β· Chaos Monkey


Skills demonstrated

Area Technologies
IaC Terraform, Ansible, Pulumi
CI/CD GitHub Actions, Jenkins, ArgoCD
Containers Docker, Kubernetes, Helm, Karpenter
Observability Prometheus, Grafana, Loki, Alertmanager
Cloud AWS (EKS, Lambda, Glue, RDS), GCP (GKE), Azure (AKS)
Security Vault, OPA, SOPS, Trivy
Cost Infracost, AWS Cost Explorer integration

πŸ“§ stephengachoka57@gmail.com | 🌐 stephengachoka.co.ke | πŸ“ Nairobi, Kenya

Releases

No releases published

Sponsor this project

Packages

Contributors

AltStyle γ«γ‚ˆγ£γ¦ε€‰ζ›γ•γ‚ŒγŸγƒšγƒΌγ‚Έ (->γ‚ͺγƒͺγ‚ΈγƒŠγƒ«) /