Progressive Infrastructure Delivery with Kargo and Argo CD

CNCF [Cloud Native Computing Foundation]

Summary:

This lightning talk by Engin Diri from Pulumi introduces progressive infrastructure delivery using Kargo and Argo CD, addressing the pain points of promoting infrastructure changes across multiple environments in GitOps.

Overview of Kargo's role in a CI/CD pipeline for progressive delivery
Overview of Kargo's role in a CI/CD pipeline for progressive delivery [ 00:07:59 ]

  • GitOps requires Kubernetes operators like Crossplane or Pulumi for infrastructure deployment.
  • Deploying infrastructure via GitOps with Argo CD typically only syncs to a single environment (e.g., dev).
  • Promoting infrastructure changes beyond dev often leads to complex, obscure, and difficult-to-maintain CI/CD pipelines.
  • Using Git branches for environment promotion is problematic due to configuration drift, merge conflicts, and scalability issues.
  • A better approach is to model environments using separate folders in a Git repository, leveraging tools like Helm and Kustomize.
  • Kargo, an open-source GitOps-native project, provides multi-stage promotion capabilities for various artifacts (container images, Kubernetes manifests, Helm charts).
  • Kargo enforces a strict separation of CI (building artifacts) and CD (everything else), offering flexible, manual, and automatic promotion pipelines with native Argo CD integration.
  • It also enables progressive delivery by listening to monitoring systems and can roll back unsuccessful deployments.

Introduction to Progressive Infrastructure Delivery and Pain Points [0:00:00]

The speaker, Engin Diri from Pulumi, introduces the topic of progressive infrastructure delivery using Kargo and Argo CD. He highlights the common pain points experienced in large-scale GitOps environments, particularly when promoting artifacts and infrastructure changes between different environments.

Pain level chart for GitOps in enterprise environments
Pain level chart for GitOps in enterprise environments [ 00:00:25 ]

GitOps and Operators for Infrastructure [0:01:04]

The presentation delves into the foundational concepts of GitOps and the role of Kubernetes operators in deploying infrastructure.

Diagram illustrating the Kubernetes Operator workflow
Diagram illustrating the Kubernetes Operator workflow [ 00:01:25 ]

Challenges of Environment Promotion in GitOps [0:02:30]

A core problem discussed is how to effectively promote infrastructure changes beyond the initial development environment to staging, UAT, and production environments.

Complex, tangled CI/CD pipeline diagram
Complex, tangled CI/CD pipeline diagram [ 00:03:15 ]

Promotion Patterns: Why Not Branches? [0:03:39]

The talk addresses a common but problematic approach to environment promotion: using Git branches.

Promotion Patterns: Using Folders for Environments [0:05:08]

The recommended best practice for modeling GitOps environments is to use a folder-based approach.

GitHub repository structure showing environment folders with Helm and Kustomize integration
GitHub repository structure showing environment folders with Helm and Kustomize integration [ 00:05:51 ]

Introducing Kargo for Smoother Promotions [0:06:01]

Kargo is presented as a solution designed to streamline multi-stage environment promotions in a GitOps-native way.

Overview of Kargo's role in a CI/CD pipeline for progressive delivery
Overview of Kargo's role in a CI/CD pipeline for progressive delivery [ 00:07:59 ]

Demo of Kargo with Pulumi and Crossplane [0:08:23]

The speaker demonstrates Kargo's capabilities by deploying infrastructure defined using Pulumi and Crossplane.

Argo CD UI displaying various deployed applications
Argo CD UI displaying various deployed applications [ 00:08:25 ]

Key Takeaways [0:13:07]

The presentation concludes with three main takeaways regarding Kargo and progressive infrastructure delivery.

Key takeaways: Kargo enforces CI/CD separation, is GitOps native, and elegantly solves promotion pain
Key takeaways: Kargo enforces CI/CD separation, is GitOps native, and elegantly solves promotion pain [ 00:13:17 ]