$ whoami

Ashok Shelke

Senior Infrastructure Engineer

I build and operate the boring, reliable systems that let other engineers ship — Kubernetes at fleet scale, Infrastructure-as-Code discipline, GitOps delivery, and CI/CD that engineers actually trust. 10+ years running production platforms real people depend on.

10+ Years in Production
300+ EKS Clusters
200+ Microservices
24/7 On-Call Ownership
$ cat about.md
Ashok Shelke

I started as a Linux systems admin managing thousands of physical servers, moved into cloud and DevOps as the industry did, and today spend most of my time running multi-tenant Kubernetes platforms for regulated, high-availability workloads. My work sits at the intersection of platform engineering, site reliability, and internal developer experience — with a particular interest in observability that has a signal-to-noise obsession, not just dashboards for their own sake.

The lens I bring to infrastructure is that it should feel invisible when it works, and it should teach you something when it breaks. I treat internal tooling as a product — measured by adoption, iterated on real feedback — and I use modern AI tools daily as a force multiplier for debugging, log analysis, and toil reduction, with the discipline that AI proposes and the engineer commits. Based in Pune, India, fully remote and async-friendly across US, LATAM, and European time zones.

$ ls capabilities/

What I Do

Six capabilities, one habit — treat infrastructure like a product, and use AI as a force multiplier without touching production trust.

Kubernetes at Fleet Scale

Multi-tenant Kubernetes platforms across hundreds of clusters and services — EKS lifecycle, Karpenter autoscaling, Istio service mesh, and progressive delivery (canary, blue-green) via GitOps.

EKS Helm Istio ArgoCD

Infrastructure as Code

8+ years of Terraform — reusable module composition, remote state with locking, and drift detection across hundreds of stacks. Also comfortable with Pulumi, Ansible, and CloudFormation-compatible patterns.

Terraform Pulumi Ansible

CI/CD & Developer Experience

Reusable CI/CD workflows serving hundreds of microservices via language-agnostic caller patterns. SHA-pinned actions, OIDC cloud auth, image scanning that gates criticals — no static keys, no snowflake pipelines.

GitHub Actions OIDC Trivy

Observability & Reliability

Alert catalogue design with an anti-noise obsession — every alert actionable and tuned against real historical data. 24x7 on-call, structured incident response, and blameless postmortems that drive systemic fixes.

Prometheus Grafana Datadog

AI-Assisted Engineering

Daily use of Claude, Cursor, and MCP-based automation — log analysis during incidents, infra boilerplate matched to codebase conventions, and low-risk toil automation. AI proposes, the engineer commits.

Claude Code MCP Cursor

Security & Compliance

Security gates built into the pipeline, not bolted on after — Trivy image/dependency scanning, OIDC-only cloud auth with zero static keys, least-privilege IAM, and secret rotation. Operated under SOC 2 and PCI-DSS regimes.

Trivy OIDC SOC 2 / PCI-DSS
$ ./deploy.sh --watch

How I Ship Infrastructure

Same pattern behind every platform I run: code triggers CI, a security gate scans it, Terraform plans the change, AWS and Kubernetes apply it, and observability watches it land.

Git Push
CI / Actions
Security Scan
Terraform Plan
AWS
EKS / Apps
Observability

Security Scan = Trivy image/dependency scanning + OIDC-only cloud auth, no static keys. A critical finding blocks the pipeline right there — Terraform never gets to plan a change built on a vulnerable image.

$ watch -n2 ./automations --status

Automation in Production

Five things running on autopilot right now, doing the toil so engineers don't have to — including the one that says no.

ops@platform — automations
$ terraform apply -auto-approve tenant-provision.tf
AWS account + VPC + EKS + ECR + GitHub repo ready — under 2 hours, was 2+ days manual
$ trivy image registry.internal/svc-payments:sha256:9e2a1c…
1 CRITICAL CVE in base image — merge blocked, #platform-alerts notified
$ eventbridge: dev-cluster-hibernate --node-groups=all
Node groups scaled 4→0 outside business hours — part of a 10-15% AWS spend cut
$ argocd app sync --all --prune
Fleet synced across every tenant — 0 drift
$ alert-catalogue audit --prune-duplicates
Duplicate PrometheusRules killed — alert fatigue down, pager trusted again
$
$ ls -la projects/

Featured Projects

Real production work, anonymized — the platforms and pipelines I've designed, built, and operated.

Kubernetes • Multi-Tenant • IaC

Multi-Tenant Kubernetes Platform for Regulated Workloads

Problem

Onboarding a new tenant meant assembling an entire footprint by hand — AWS account, VPC and networking, EKS cluster, container registry, git repo, IAM roles, monitoring integration, ArgoCD registration. Every new tenant took days of coordinated manual work across teams. For a platform expecting to scale into dozens of regulated financial customers, that model doesn't survive contact with growth.

Approach

Built a Terraform-driven self-service workflow that provisions the entire tenant footprint from a single command. The design decision worth naming: account-per-tenant isolation was chosen over namespace-per-tenant, even though namespace isolation is cheaper. For regulated financial workloads, account-level isolation gives clean blast-radius boundaries, simplified compliance scope per tenant, and per-tenant data residency without engineering acrobatics. ArgoCD ApplicationSets handle add-on and configuration fanout so the fleet stays consistent as it grows.

Outcome

< 2 hrs
Tenant onboarding, down from days
300+
Clusters supported
Account
Per-tenant blast-radius isolation
Kubernetes at scale Multi-tenant architecture IaC composition GitOps
CI/CD • Supply Chain • GitHub Actions

Reusable CI/CD Platform for 200+ Microservices

Problem

Hundreds of microservices spread across languages and repositories, each carrying its own copy of build, test, and deploy pipeline logic. Small changes to security or deployment policy meant hunting through hundreds of workflow files, drift accumulated silently, and the security posture was only as strong as the least-maintained pipeline. That pattern doesn't scale past a small number of services.

Approach

Built reusable GitHub Actions workflows that every service repository calls through a language-agnostic, Makefile-based pattern — so per-service repos declare intent (build, scan, deploy) but the actual logic lives in one place. The security work went in the shared layer: SHA-pinned actions preventing supply-chain drift, OIDC-based cloud authentication eliminating static access keys entirely, Trivy image scanning that fails builds on critical vulnerabilities, External Secrets Operator syncing runtime secrets from AWS Secrets Manager. Reduced local iteration friction with the act tool so engineers could test workflow changes on their laptop instead of pushing and waiting.

Outcome

200+
Services on one pipeline
Zero
Static cloud credentials
Gated
Every deploy scanned
CI/CD architecture Supply chain security Reusable patterns
Migration • Zero Downtime • ECS

Legacy-to-Modern Platform Migration, Zero Downtime

Problem

Migrate 40+ regulated workloads from a legacy environment to a modern Kubernetes-based platform. The customer connectivity constraint made this hard: bank customers connected via legacy VPNs with fixed endpoints and long change-approval cycles. Asking 40+ banks to coordinate network changes on the platform's timeline was a non-starter — the obvious cutover patterns all required customer cooperation on someone else's schedule.

Approach

Rather than force customer network changes, architected an ECS-based transparent proxy layer that bridged legacy VPN connections to the new EKS clusters through VPC endpoints. From every customer's perspective, nothing changed — same endpoints, same source IPs, no coordinated cutover window. Workloads migrated in parallel behind the proxy layer, then the legacy platform was decommissioned once traffic had fully shifted. The tradeoff worth naming: the proxy layer added real complexity and operational surface area during the migration window, but that was a cost worth paying to avoid 40+ separate customer change requests.

Outcome

40+
Workloads migrated
~8 wks
End to end
Zero
Customer-visible downtime
Migration architecture Proxy pattern Cutover discipline
Observability • Alert Design • SRE

Observability Modernization & Alert Catalogue Redesign

Problem

A monitoring stack across Prometheus, AlertManager, Grafana, Sysdig, and CloudWatch had accumulated years of drift — duplicate alerting rules, false-RESOLVED conditions, thresholds set against baselines that no longer applied, and enough noise that on-call engineers had stopped trusting the pager. Alert fatigue isn't a nuisance in production infrastructure; it's a reliability risk, because engineers who stop trusting alerts miss the real ones.

Approach

Full audit of alert configurations across the fleet. Killed duplicate PrometheusRule objects, fixed alerting logic that produced false resolutions, and rebuilt the catalogue around three principles enforced through code review: every alert must be actionable (map to a specific human action), every alert must be symptom-aligned (map to real user impact, not raw infrastructure counters), and every threshold must be tuned against real historical data rather than round-number guesses. Designed a phased auto-remediation roadmap using Robusta for well-understood patterns like OOM loops and CPU throttling — the humans handle the interesting incidents, automation handles the repeats.

Outcome

High-signal
Every page expects action
Reduced
Alert fatigue, fleet-wide
Phased
Auto-remediation roadmap
Observability architecture Signal-to-noise Incident response
$ git log --oneline career

Experience

Senior Infrastructure Platform Engineer

Jul 2021 — Present
Multi-Tenant Fintech Platform · Remote, Globally Distributed Team
  • Own individual platform modules powering payment connectivity and multi-tenant VPN/SFTP integration for 40+ enterprise clients — design the Terraform modules, Helm charts, and runbooks; on-call for their reliability
  • Built self-service tenant provisioning: a Terraform-driven workflow that spins up a tenant's AWS account, VPC, EKS access, ECR, and GitHub repo in one command — cut onboarding from multi-day manual work to under 2 hours
  • Designed a reusable CI/CD platform serving 200+ microservices via a language-agnostic GitHub Actions caller pattern — SHA-pinned actions, OIDC auth, Trivy scanning gating criticals
  • Led observability modernization across Prometheus, Grafana, Sysdig, and CloudWatch — built a high-signal alert catalogue and cut AWS spend 10-15% via automated dev-cluster hibernation
  • Resolved Sev-1 incidents including a VPN route-loss outage the cloud provider initially misattributed, a GitOps/Kubernetes garbage-collector race condition, and a crash hidden behind an async Promise executor — drove every postmortem into a systemic fix, not a restart-and-hope
  • Integrated Claude, Cursor, and MCP-based automation into daily workflow for incident log analysis and toil reduction; leads a 4-person platform operations team
EKS Terraform ArgoCD GitHub Actions Prometheus OIDC Claude / AI

DevOps Engineer

Sep 2017 — Jul 2021
Compliance & Audit SaaS Platform · Mumbai, India
  • Led on-premise to AWS migration — architected VPC, EC2, ELB, Auto Scaling, S3, Lambda, and API Gateway foundations
  • Introduced Terraform as standard IaC across the platform in 2017 and paired it with Ansible for configuration management
  • Implemented vulnerability management (Rapid7 InsightIDR, Nexpose) and led SOC 2 and PCI-DSS audits
  • Managed enterprise firewalls (Palo Alto, Fortinet) across hybrid on-prem/cloud networks
  • Built Terraform modules and Ansible playbooks integrated with GitLab and Jenkins pipelines
Terraform Ansible AWS Rapid7 SOC 2 / PCI-DSS Jenkins

Linux Administrator (L2)

Aug 2015 — Sep 2017
Enterprise Datacenter Operations · Mumbai, India
  • Operated 10,000+ servers (IBM, Dell, HP) with EMC, NetApp, and Hitachi storage across a nationwide datacenter network
  • Ran 24x7 on-call as part of an Emergency Response Team, focused on high availability and fault tolerance
  • Administered Linux services (NFS, DNS, SMTP) across RHEL, CentOS, SUSE, and Ubuntu
Linux RHEL Storage Networking 24x7 On-Call

Linux Administrator

Oct 2013 — Aug 2015
Systems Operations & HA Infrastructure · Mumbai, India
  • Deployed and operated LAMP stack environments with HA clusters (Heartbeat + DRBD) and HAProxy load balancing
  • Managed MySQL backup/replication and network configuration for production systems
LAMP HAProxy MySQL HA Clusters
$ tail -f /var/log/incidents.log

War Stories

14 Sev-1s and deep-dive investigations, anonymized, spanning about five months of production work. Root cause, fix, and lesson — the short version here, the full RCA one click away.

The Auth Failure That Wasn't an Auth Problem

Login looped forever after a platform migration. Four hypotheses, each disproved with direct evidence — the real cause was a browser capture showing not one Set-Cookie header in 90 requests.

When source-level reasoning stalls, go get a direct capture of what's actually on the wire.

Read the full story →

AI-Augmented Engineering, With the Overrides Included

Where AI genuinely sped up a six-week platform build, and the five specific times I had to catch it — a signing key that would've broken auth, a chart interface it imagined, a stale branch it trusted.

Verify anything load-bearing by running it. Keep the architectural calls for yourself.

Read the full story →

The VPN Flap That Wasn't Just a VPN Flap

A VPN flap that should have self-healed in minutes instead cascaded into a multi-hour outage — three separate factors compounded, not one.

Default settings are load-bearing until the day they aren't.

Read the full story →

Proving the Cloud Provider Wrong With a Bash Script

AWS called a VPN outage self-resolving. My own BGP route snapshots proved the routes were gone before AWS's maintenance window even started.

Don't let the vendor write the incident timeline.

Read the full story →

The Consent Screen Nobody Could Click

A pod kept crashing behind perfectly reasonable try/catch blocks — because the real failure happened somewhere try/catch structurally can't reach.

Async Promise executors can hide exceptions from every try/catch around them.

Read the full story →

A Kubernetes Race Condition, Twice

ArgoCD self-heal and Kubernetes' garbage collector raced each other over a manually deleted Deployment — twice, on two different apps.

Pause the automation before you touch a self-healing resource by hand.

Read the full story →

Four Problems Wearing One Costume

A vague "things feel slow" complaint, no red dashboards anywhere. Digging anyway turned up four distinct, real problems.

Four bugs is not one bug wearing a trenchcoat — but it's tempting to think so.

Read the full story →

The Timeout That Was Fine Until It Wasn't

A routine EKS upgrade started crash-looping a service, 64ms after every request. The upgrade wasn't the bug — a hardcoded timeout was.

Your upgrade isn't the bug — it's the flashlight.

Read the full story →

One Symptom, Four Different Root Causes

OTP auth failed across several tenants at once. One tempting shared cause — until the timestamps for one tenant didn't fit at all.

Correlation isn't causation, even when the timing looks suspicious.

Read the full story →

The Certificate Authority That Never Existed

A "just wire up TLS" ticket turned up zero real certificate infrastructure — just a self-signed issuer never meant to face real clients.

When "just wire it up" is secretly an architecture decision, stop and surface it.

Read the full story →

The Trigger With No Lock on the Door

Investigating an out-of-order email trigger turned up something worse: an automation that could move real production money had zero sender validation.

"It's always worked correctly" is not evidence an authorization boundary exists.

Read the full story →

The HTTP Status Code Lied

A banking connector returned 403 Forbidden — with a response body that said InternalServerError. The mismatch was the actual clue.

When the status code and the body disagree, believe the disagreement.

Read the full story →

The Image That Wouldn't Update

A GitOps app sat on a stale image for half a day. Two real bugs turned up along the way — neither one explained it. The answer was in last week's commit history.

Check what changed, not just what's currently configured.

Read the full story →

Killing Alert Noise Without Killing Alerts

A noisy, zero-action alert couldn't be filtered where it seemed like it should be — that layer simply didn't support filtering at all.

When the obvious fix layer can't do it, trace the pipeline's real order of operations.

Read the full story →

Istio Sidecar Version Skew

A service mesh's control plane had moved ahead of a subset of workload sidecars still on an older Envoy proxy. Newer config fields got rejected outright by the older proxies, which then failed health probes and restarted repeatedly. Fixed by identifying the exact 10 workloads on the stale sidecar version and rolling them.

The Empty Rule That Broke Auth

An Istio AuthorizationPolicy kept failing to sync because a template rendered an empty rule as null instead of an empty array. The first fix patched the values file; the real fix — found after auth broke for real users post-merge — guarded the field at the Helm template level so it only renders when populated.

A Vendor's Hidden Isolation Gap

A file-processing integration used a single shared external cloud account with bucket-wide read access across all customers. True per-customer isolation required a separate storage bucket per customer, not simple folder separation — a subtle but important distinction for any multi-tenant vendor integration.

The CPU Spike That Wasn't the App

A production database CPU spike wasn't application load at all — traced to a data-governance/cataloging tool performing thousands of sequential table scans per second against a metadata table it wasn't supposed to be hammering that hard.

The Storage Alert That Cried Wolf

An RDS storage alert fired, looking urgent. Actual disk usage was around 7% — the alert was triggered by an autoscale threshold setting, not real capacity risk. Turned into a right-sizing recommendation that also cut monthly cost.

A Regional Outage, Felt Everywhere at Once

A flood of simultaneous "load balancer unhealthy" and "VPN both tunnels down" alerts fired across many unrelated accounts in the same region within minutes of each other. The pattern itself — many unrelated customers, same failure mode, same window — was the tell: a regional provider-side networking failure, not independent per-customer problems.

A Stuck Node and a Number Worth Double-Checking

Ahead of a production cutover, a business-reported "calls per day" figure turned out to be a business-layer metric, not the proxy-level number it was being used as — worth catching before it shaped a capacity decision. Separately, a stuck NotReady node was cordoned and force-replaced, which also surfaced that the node group had zero scaling headroom left (maxSize=4, desiredSize=4) — a second finding worth its own follow-up.

The SOP That Started as a Debugging Session

A recurring pattern worth naming: real production debugging sessions — alert scripts, threshold decisions, actual incident tickets — kept getting formalized afterward into structured runbooks, complete with the real alert names, thresholds, and escalation paths used in production. Documentation as a byproduct of good incident hygiene, not a separate chore nobody gets to.

The Terraform State That Wouldn't Let Go

Deleting a resource tied to a provider whose API keys had expired meant every plan or destroy tried to refresh it first — authenticating with credentials that no longer worked, failing before Terraform could even get to deleting anything. terraform state rm was the tempting shortcut; the safer fix addressed the provider block itself instead of reaching for state surgery.

Respecting the Teardown Order

A terraform destroy failed with ResourceInUseException on a Route53 Resolver endpoint. AWS enforces a strict dependency chain here — disassociate the rule from the VPC, delete the rule, then delete the endpoint. Terraform was correctly refusing to proceed out of order; the fix was doing the teardown in the order AWS actually requires.

PII in the Ticket Queue

While investigating a stale-data report, a customer pasted log output containing real names, tax IDs, and account balances directly into a shared ticketing tool. The technical issue (a stale cache downstream) was minor; the real finding was stopping to flag the plaintext PII exposure and push for redaction in the health-check tooling itself.

Confirming It Wasn't a Fluke

A customer's alarming metrics screenshot turned out to match a known, already-fixed cause exactly — restarts isolated entirely to the monitoring stack's own pods, correlating with known restart windows. Rather than assume, I cross-referenced hour by hour, confirmed their query was correct, and handed back a refined query that excludes a namespace they don't own.

The Partner Whose System Took 8 Seconds to Wake Up

Ahead of a real-time payments launch, an internal architecture walkthrough surfaced the actual biggest launch risk: a partner's decision system took 8-10 seconds to wake from idle — well past the payment network's strict cancellation deadline. Distilling a long meeting into one prioritized risk, instead of a flat transcript, was what made the risk actionable.

Scaling Around a Disabled Autoscaler

With automatic node provisioning temporarily off, a stuck pending pod needed a manual node group scale-up — done deliberately in pairs, to preserve even distribution across both availability zones instead of accidentally concentrating capacity in one.

Two Homebrews, One Very Confusing Afternoon

A new Apple Silicon machine's package manager broke with built for x86_64 errors — two separate installs, one for Intel and one for the native chip, fighting over the same shell config. Diagnosed down to the architecture mismatch, then migrated safely by backing up what was installed before removing anything.

Escalating a Bug to a Government Agency

A public government data API was silently truncating its bulk export, breaking a compliance-dependent downstream service. Finding the right support channel, writing a reproducible bug report, and leaving a clear handover plan — including how to detect if they'd silently fixed it — closed the loop on an escalation with no technical point of contact on the other end.

Timeout vs. Reset: Reading the Failure Correctly

A network-level timeout (no response) and an active connection reset (the far end actively rejecting the connection) look similar but mean different things. Reading it correctly here pointed the investigation at the customer's own core banking infrastructure, and shaped exactly what to ask their team about recent firewall or certificate changes.

When the "Bug" Was Just an Unasked Question

A nicely formatted internal document reportedly lost its formatting when pasted into the team wiki. Before reaching for a more complex export format, the right move was pausing to clarify exactly what had happened — a plain document paste worked fine all along. Not every reported bug needs a technical fix; some need one clarifying question.

Three Unrelated Problems, One Live Incident

During a live "online banking is down" incident, the same health-check output surfaced a missing secret breaking one banking partner's auth, an unrelated cancellation exception in a message-processing service, and several false-positive "errors" that were just log-level noise — three genuinely separate problems that had to be triaged and untangled in real time, not treated as one.

$ kubectl get skills -o wide

Skills & Tools

AWS / EKS
Kubernetes
Terraform
ArgoCD
Helm
GitHub Actions
Datadog
Linux
CI/CD
Security / RBAC
Prometheus
AI Tooling

Cloud & IaC

AWS (EKS, EC2, VPC, IAM) S3 / SQS / SNS / ECR Lambda RDS Terraform (8+ yrs) Pulumi GCP / Azure

Kubernetes & Containers

EKS at Fleet Scale Helm Karpenter Istio ArgoCD Flux Progressive Delivery

CI/CD

GitHub Actions GitLab CI Jenkins OIDC Federated Auth SHA-Pinned Actions

Observability & Reliability

Prometheus Grafana Thanos Datadog Sysdig CloudWatch SLO / SLI Design

Languages & Automation

Python (boto3) Bash SQL Go (reading) TypeScript (light)

Linux & Systems

RHEL / CentOS / Ubuntu TCP/IP & DNS HTTP/TLS Load Balancing Block / Object / NFS

AI-Assisted Engineering

Claude Claude Code Cursor MCP Automation

Security & Compliance

Least-Privilege IAM Secret Rotation Trivy Scanning SOC 2 PCI-DSS
$ cat /etc/certs.d/*

Certifications

$ ls ~/writing/

Writing

I write about infrastructure problems I've solved and lessons learned along the way. 17 posts and counting.

Debugging Aug 15, 2026 8 min read

The Authentication Failure That Wasn't an Authentication Problem

Login looped forever after a migration. Four hypotheses, each disproved with direct evidence — the real cause was zero Set-Cookie headers in a 2.7MB browser capture.

Read more →
AI Engineering Aug 15, 2026 7 min read

AI-Augmented Engineering in Practice

Where AI genuinely sped up a six-week platform build, and the five specific times I had to catch it being confidently wrong.

Read more →
Security Aug 15, 2026 5 min read

When "Just Wire It Up" Is Actually "Make an Architecture Decision for Us"

A routine TLS ticket turned up zero real certificate infrastructure — just a self-signed issuer never meant to face real clients.

Read more →
Incident Response Aug 14, 2026 6 min read

Why Your Incident Probably Has Two Root Causes, Not One

A VPN flap that should have self-healed instead cascaded into a multi-hour outage — three factors compounded, not one.

Read more →
Networking Aug 12, 2026 7 min read

Don't Let the Vendor Write the Incident Timeline

AWS's dashboard said a VPN outage self-resolved. My own BGP monitoring data said otherwise — and won the argument.

Read more →
Kubernetes Aug 10, 2026 8 min read

Managing 300+ Kubernetes Clusters: Lessons from Production

What I learned operating a fleet of k3s, k8s, and EKS clusters for banking clients — from GitOps workflows to upgrade strategies.

Read more →
Node.js Aug 8, 2026 6 min read

The Bug Your Try/Catch Can't See

An async Promise executor anti-pattern turned a routine API failure into an unrecoverable crash, invisible to every try/catch.

Read more →
GitOps Aug 5, 2026 7 min read

The GitOps Footgun Nobody Warns You About

ArgoCD self-heal and Kubernetes' garbage collector can race each other and deadlock a Deployment — a runbook for when it happens.

Read more →
$ ssh ashok@connect

Get in Touch

Interested in working together? Let's connect.

Build Secure, Scalable Cloud Platforms

ATS Cloud Solutions helps startups and enterprises modernize infrastructure with AWS, Kubernetes, Terraform, GitOps, and 24/7 platform operations.

AWS AWS Kubernetes Kubernetes Terraform Terraform GitOps GitOps Observability Observability 24/7 Platform Ops 24/7 Platform Ops

What we do

End-to-end cloud and platform engineering services that keep your infrastructure secure, reliable, and ready to scale.

Cloud Architecture

Design and build secure, cost-efficient AWS environments tailored to your workloads and compliance needs.

Learn more →

Kubernetes & EKS

Deploy, scale, and operate production-grade Kubernetes clusters with EKS, Helm, and GitOps workflows.

Learn more →

DevOps Automation

Automate CI/CD, infrastructure provisioning, and deployments with Terraform, GitHub Actions, and ArgoCD.

Learn more →

Built by engineers, for engineers

Led by Ashok Shelke, a Platform & DevOps Engineer with 13+ years of experience across Linux, AWS, Terraform, Kubernetes, CI/CD, monitoring, and production infrastructure operations.

Meet the founder

Skills & Certifications

The technologies and credentials behind the platform engineering work.

Skills

Linux
AWS
Terraform
Kubernetes
CI/CD
Monitoring

Licenses & Certifications

CKA
Certified Kubernetes Administrator
CKA
CKAD
Certified Kubernetes Application Developer
CKAD
Terraform
HashiCorp Terraform Associate
Terraform Associate
RHCSA
Red Hat Certified System Administrator
RHCSA

Need help with AWS, Kubernetes, or DevOps?

Book a 30-minute architecture review and get actionable recommendations for your infrastructure.

Book an architecture review