Module 01

Introduction to Kargo

Progressive Delivery for GitOps Pipelines

You've mastered ArgoCD. Now let's master promotion.

"You deployed to dev. Everything looks great. Tests pass. The team is happy.

Now what?

How do you get that exact same change to staging? And then to production? Safely, reliably, and with a clear audit trail?"

The Promotion Problem

📝

Manual PRs

Someone opens a PR to change a tag in staging, then another for prod. Error-prone, slow.

Custom Scripts

CI pipelines cobble together sed/yq commands. Fragile, hard to audit.

😱

YOLO Deploys

"Just merge to main and let ArgoCD sync." No gates, no verification, no rollback plan.

What Teams Actually Want

Enter Kargo

A Kubernetes-native promotion engine
built for GitOps workflows.

Open Source Akuity Kubernetes Native

What is Kargo?

Kargo is a progressive delivery tool that manages the lifecycle of changes as they move through a series of stages (environments).


It watches for new versions, packages them as Freight, and promotes them through your pipeline — automatically or with approval gates.

Think: "GitOps promotion pipeline as a Kubernetes resource"

What Kargo is NOT

Not a CD tool

ArgoCD (or Flux) still does the actual sync. Kargo orchestrates what gets promoted where.

Not a CI system

Kargo does not build images or run tests. It consumes artifacts that CI already produced.

Not a replacement

It complements your existing GitOps stack. It fills the gap ArgoCD intentionally leaves open.

Quiz 1 — Check Your Understanding

1. What is the primary purpose of Kargo?

2. What does Kargo do when it detects a new container image version?

3. Which tool actually syncs Kubernetes resources to the cluster?

Core Concepts — The Cast of Characters

Project Warehouse Freight Stage Promotion

Each is a Kubernetes Custom Resource. Let's meet them one by one.

1 Project

The Boundary

A Project is a namespace-scoped grouping of all Kargo resources for a particular application or team.

apiVersion: kargo.akuity.io/v1alpha1
kind: Project
metadata:
  name: my-app

2 Warehouse

The Watchtower

A Warehouse watches for new versions of your artifacts — container images, Git commits, or Helm charts.

Think: "The warehouse receives new shipments and packages them for delivery."

3 Freight

The Package

Freight is an immutable collection of artifact references that travel together through your pipeline.

Think: "A sealed box of changes. Same box goes dev → staging → prod."

4 Stage

The Checkpoint

A Stage represents an environment or checkpoint in your delivery pipeline.

5 Promotion

The Action

A Promotion is a request to move specific Freight to a specific Stage.

How It All Fits Together

Warehouse watches registries / repos
discovers new version
Creates Freight (e.g. image:v1.2.3 + commit:abc123)
auto-promotion enabled
Stage: dev → Promotion runs → Git updated → ArgoCD syncs
verification passes
Stage: staging → manual approval → Promotion runs
verification passes
Stage: prod → approved → Promotion runs → Live!

Quiz 2 — Core Concepts

1. What does a Warehouse do in Kargo?

2. What is Freight?

3. What is a Kargo Project?

Kargo + ArgoCD

ArgoCD

Syncs desired state from Git to cluster. Detects drift. Handles rollout. Deploys.

Kargo

Updates Git with new versions. Orchestrates which version goes where. Promotes.

Kargo updates Git repo ArgoCD detects change ArgoCD syncs cluster

The Complete GitOps Loop

CI builds image v1.2.3

Warehouse detects new image

Freight created with image:v1.2.3

Promotion updates values.yaml in Git (image.tag: v1.2.3)

ArgoCD sees Git change, syncs to cluster

Verification confirms health

Kargo Architecture

API Server

Serves the Kargo API and UI. Handles RBAC and authentication.

Controller

Reconciles Kargo resources. Watches Warehouses, manages Freight, executes Promotions.

CRDs

Project, Warehouse, Freight, Stage, Promotion — all stored in the Kubernetes API.

Webhooks

Validates and mutates Kargo resources on creation/update.

Installing Kargo on AKS

Kargo is installed via Helm into your Kubernetes cluster.

# Add the Kargo Helm repo
helm repo add kargo https://charts.kargo.io
helm repo update

# Install Kargo
helm install kargo kargo/kargo \
  --namespace kargo \
  --create-namespace \
  --set api.adminAccount.enabled=true \
  --set api.adminAccount.password=admin \
  --set api.adminAccount.tokenSigningKey=shared-signing-key

Verify the Installation

# Check pods are running
kubectl get pods -n kargo

# Expected output:
# kargo-api-...         Running
# kargo-controller-...  Running
# kargo-webhooks-...    Running

# Check CRDs installed
kubectl get crds | grep kargo
# freights.kargo.akuity.io
# projects.kargo.akuity.io
# promotions.kargo.akuity.io
# stages.kargo.akuity.io
# warehouses.kargo.akuity.io

The Kargo UI

Visual Pipeline View

# Access the UI via port-forward
kubectl port-forward svc/kargo-api -n kargo 8443:443

The Kargo CLI

# Install the CLI
brew install akuity/tap/kargo   # macOS

# Login
kargo login https://localhost:8443 \
  --admin --password admin --insecure-skip-tls-verify

# Common commands
kargo get projects
kargo get stages --project my-app
kargo get freight --project my-app
kargo promote --project my-app \
  --stage staging \
  --freight abc123def

Quiz 3 — Architecture & Tooling

1. How is Kargo typically installed on a Kubernetes cluster?

2. In the Kargo + ArgoCD workflow, who updates the Git repository with new image tags?

3. Which Kargo component reconciles resources and executes Promotions?

Your First Kargo Project

Let's create a simple project that promotes a web app through dev → staging → prod.

apiVersion: kargo.akuity.io/v1alpha1
kind: Project
metadata:
  name: my-web-app
spec:
  promotionPolicies:
  - stage: dev
    autoPromotionEnabled: true
  - stage: staging
    autoPromotionEnabled: false
  - stage: prod
    autoPromotionEnabled: false

Apply and Verify

# Apply the project
kubectl apply -f project.yaml

# Verify - a namespace is created
kubectl get ns my-web-app

# Check the project
kargo get projects
# NAME          AGE
# my-web-app    5s

# The namespace is where all your
# Warehouses, Stages, and Freight will live

Next module: We'll create a Warehouse and see Freight appear automatically!

Key Takeaways

Up Next

Module 02: Warehouses & Freight

The watchtower that spots new versions and the packages that carry them.

Subscriptions Image Selection Freight Discovery
← Back