The capstone project integrates every capability built across this course into a single coherent platform: a secure, fully automated GitOps delivery pipeline that takes code from a developer's commit to a production Kubernetes workload through verified security gates, cryptographic supply chain attestation, progressive canary deployment with automated rollback, and real-time observability. This platform is the reference architecture for a production-grade CI/CD system on AWS, and completing it demonstrates mastery of the entire CI/CD, GitOps, DevSecOps, and Observability stack.
The platform is built incrementally across three lab sessions: Lesson 37 completes the secure CI pipeline with SAST, SCA, Trivy scanning, and Cosign signing; Lesson 38 deploys a canary rollout via ArgoCD with automated rollback driven by Prometheus error-rate analysis; and Lesson 39 completes the observability layer with PrometheusRule alerts, Alertmanager routing, and the Grafana golden signals dashboard. Lesson 40 is the capstone submission where you deliver all three artefacts as a complete platform.
Platform Architecture
The capstone platform consists of four integrated layers. The CI layer—built in Lesson 37—takes a code commit through automated security gates before producing a signed container image. The delivery layer—built in Lesson 38—deploys the signed image through ArgoCD with a Kyverno admission gate that rejects unsigned images, using Argo Rollouts for progressive canary deployment with automated analysis. The cloud security layer—from Module 4—provides the AWS account guardrails: SCPs, KMS encryption, and Security Hub compliance monitoring that the platform operates within. The observability layer—completed in Lesson 39—provides real-time visibility into the platform's health and feeds the Prometheus metrics that drive Argo Rollouts' automated rollback decisions.
The critical integration point that makes the platform coherent is the connection between the CI pipeline and the GitOps repository. When the CI pipeline signs an image and pushes it to ECR, it also commits the new image tag to the GitOps repository. ArgoCD detects the commit, Kyverno verifies the Cosign signature on admission, Argo Rollouts begins a canary promotion, and the Prometheus AnalysisTemplate continuously evaluates whether the canary's error rate justifies continuing promotion. This chain—from code commit to verified canary to full promotion—is the platform's core value: it automates the entire delivery lifecycle with security gates at every transition.
# Capstone platform architecture — reference diagram.
# ╔══════════════════════════════════════════════════════════════════════╗
# ║ DEVELOPER WORKFLOW ║
# ║ git push → GitHub PR → GitHub Actions CI Pipeline ║
# ║ ║
# ║ CI PIPELINE (M1 + M3): ║
# ║ ┌──────┐ ┌──────┐ ┌─────────────────────────────────────────┐ ║
# ║ │ Lint │→ │ Test │→ │ SAST (Semgrep) + SCA (Snyk) │ ║
# ║ └──────┘ └──────┘ └─────────────────┬───────────────────────┘ ║
# ║ │ both pass ║
# ║ ┌─────────────────▼───────────────────────┐ ║
# ║ │ Build → Trivy Scan → Cosign Sign → ECR │ ║
# ║ └─────────────────┬───────────────────────┘ ║
# ║ │ image digest ║
# ╚═════════════════════════════════════════╪════════════════════════════╝
# │
# ╔═════════════════════════════════════════▼════════════════════════════╗
# ║ GITOPS DEPLOYMENT (M2): ║
# ║ ║
# ║ GitOps Repo ──► ArgoCD ──► EKS Cluster ║
# ║ (image tag commit) ↑ ║
# ║ Kyverno ║
# ║ (verifyImages) ← M3: only signed images admitted ║
# ║ ║
# ║ Argo Rollouts: Stable ─── 10% canary ─── 50% ─── 100% ║
# ║ ↓ ║
# ║ AnalysisTemplate (error-rate from Prometheus) ║
# ║ Auto-rollback on analysis failure ║
# ╚══════════════════════════════════════════════════════════════════════╝
#
# ╔══════════════════════════════════════════════════════════════════════╗
# ║ CLOUD SECURITY (M4): ║
# ║ AWS IAM SCPs + Permission Boundaries + Access Analyzer ║
# ║ KMS CMK for ECR image encryption + CloudTrail audit ║
# ║ Security Hub (CIS Benchmark) + GuardDuty threat detection ║
# ╚══════════════════════════════════════════════════════════════════════╝
#
# ╔══════════════════════════════════════════════════════════════════════╗
# ║ OBSERVABILITY (M5): ║
# ║ ║
# ║ App → OTel Collector → Prometheus → Grafana dashboard ║
# ║ → Jaeger (traces) ║
# ║ ║
# ║ PrometheusRule alerts → Alertmanager → Slack/PagerDuty on-call ║
# ║ Argo Rollouts AnalysisTemplate ← Prometheus error-rate metric ║
# ╚══════════════════════════════════════════════════════════════════════╝What You Will Build
The deliverable for the capstone is three artefacts submitted as a single GitHub repository. The first artefact is the complete GitHub Actions workflow YAML implementing the secure CI pipeline from Lesson 37. The second artefact is the ArgoCD GitOps repository containing the Argo Rollouts Rollout resource, the Kyverno ClusterPolicy for image signature verification, and the Prometheus AnalysisTemplate from Lesson 38. The third artefact is evidence of a live Grafana dashboard showing the golden signals from Lesson 39, documented with a screenshot of the dashboard with real metrics from a deployment event.
The three artefacts must function together: the CI pipeline must produce images that the Kyverno policy admits; the Rollout must reference an AnalysisTemplate that queries real Prometheus metrics; and the Grafana dashboard must show metrics that include the error rate metric used by the AnalysisTemplate. A platform where each component works in isolation but the connections between them are broken does not satisfy the capstone requirement. The submission checklist in Lesson 40 verifies each integration point explicitly.
Success Criteria
The capstone platform is complete when five criteria are met simultaneously. First: a code commit to the application repository triggers the CI pipeline and produces a Cosign-signed image in ECR within 10 minutes. Second: an ArgoCD sync deploys the signed image to the squad-prod namespace, with Kyverno admitting the signed image and rejecting a manually crafted unsigned pod in the same namespace. Third: an Argo Rollouts canary promotion is active or has completed for the latest image, with the AnalysisTemplate referencing real Prometheus metrics from the running application.
Fourth: a PrometheusRule is deployed and evaluated by Prometheus, with at least the error rate and P99 latency alert rules appearing in the Prometheus Alerts page. Fifth: a Grafana dashboard is live showing request rate, error rate, and P99 latency for the india-squad-api service with at least 30 minutes of real metrics data.
The capstone is deliberately holistic rather than prescriptive: there is more than one correct way to connect these components, and the evaluation focuses on whether the integration works end-to-end rather than whether specific YAML lines match a reference implementation. A student who innovates—adding SBOM generation, enabling Flux CD instead of ArgoCD, or using Tempo instead of Jaeger—satisfies the criteria as long as all five integration points are functional.
How the Modules Connect
Module 1 provided the GitHub Actions workflow patterns, OIDC federation for ECR push, and Trivy scanning that form the CI pipeline's skeleton. Module 2 provided the ArgoCD deployment architecture, Argo Rollouts canary strategy, and Helm chart packaging for the application. Module 3 provided the Semgrep and Snyk security gates, the Cosign signing workflow, and the Kyverno admission policies that enforce supply chain security at runtime.
Module 4 provided the AWS IAM and KMS configuration that the CI pipeline operates within—OIDC roles, ECR encryption—and the Security Hub compliance monitoring that provides the account-level security context. Module 5 provided the Prometheus scraping, PromQL alerting rules, Alertmanager routing, and Grafana dashboard that complete the observability layer and feed the Argo Rollouts analysis.
The dependency order matters for implementation: the cloud security layer (Module 4) must be in place before the CI pipeline can push to ECR securely; the CI pipeline (Modules 1 and 3) must be working before ArgoCD can sync a signed image; the observability stack (Module 5) must be deployed before the Argo Rollouts AnalysisTemplate can query Prometheus metrics. Following this order minimises debugging effort by ensuring each layer's dependencies are satisfied before the next layer is built on top of them.