Skip to content

vanHeemstraSystems/learning-crossplane

Repository files navigation

Learning Crossplane

A comprehensive learning resource for Crossplane v2.1+, the cloud-native control plane framework for building platforms without writing code.

Crossplane Logo

License: MIT Crossplane Version CNCF Graduated

πŸ“š Table of Contents

About This Repository

This repository serves as a structured learning resource for mastering Crossplane, covering everything from basic concepts to advanced composition functions and production deployments. It includes practical examples, hands-on labs, and real-world patterns for building cloud-native control planes.

Current Crossplane Version Coverage: v2.1 (November 2025) Status: CNCF Graduated Project (October 28, 2025)

What is Crossplane

Crossplane is a framework for building cloud-native control planes without needing to write code. It provides:

  • Universal Control Plane: Orchestrate applications and infrastructure across any cloud
  • Declarative API: Define resources using familiar Kubernetes patterns
  • Extensible Backend: Build control planes using providers and composition functions
  • Configurable Frontend: Control the schema of your declarative API
  • Platform Engineering: Enable self-service infrastructure for development teams

Key Features in Crossplane v2.1

  • Namespaced Composite Resources: XRs are now namespaced by default
  • Simplified Architecture: No more need for Claims abstraction
  • Enhanced Composition Functions: Advanced templating with Python, Go, KCL, and more
  • Better Application Support: First-class support for managing apps alongside infrastructure
  • Improved Developer Experience: Streamlined workflows and better tooling

Prerequisites

Required Knowledge

  • Basic understanding of Kubernetes concepts (Pods, Services, Deployments)
  • Familiarity with YAML syntax
  • Command-line interface (CLI) experience
  • Basic cloud infrastructure concepts

Required Tools

  • Kubernetes Cluster: v1.25+ (can use kind, minikube, or cloud provider)
  • kubectl: v1.25+ (Installation Guide)
  • Crossplane CLI: v1.17+ (Installation Guide)
  • Docker: v24+ (for testing composition functions)
  • Helm: v3.0+ (for Crossplane installation)

Optional Tools

  • k9s: Terminal UI for Kubernetes
  • yq: YAML processor
  • jq: JSON processor
  • VS Code: With Kubernetes and YAML extensions

Directory Structure

learning-crossplane/
β”‚
β”œβ”€β”€ README.md                          # This file
β”œβ”€β”€ LICENSE                            # MIT License
β”œβ”€β”€ .gitignore                        # Git ignore patterns
β”‚
β”œβ”€β”€ 01-fundamentals/                  # Crossplane fundamentals
β”‚   β”œβ”€β”€ README.md                     # Fundamentals overview
β”‚   β”œβ”€β”€ 01-installation/              # Installation methods
β”‚   β”‚   β”œβ”€β”€ helm-install.yaml
β”‚   β”‚   β”œβ”€β”€ helm-values.yaml
β”‚   β”‚   └── verify-installation.sh
β”‚   β”œβ”€β”€ 02-providers/                 # Provider basics
β”‚   β”‚   β”œβ”€β”€ provider-aws.yaml
β”‚   β”‚   β”œβ”€β”€ provider-azure.yaml
β”‚   β”‚   β”œβ”€β”€ provider-gcp.yaml
β”‚   β”‚   β”œβ”€β”€ provider-kubernetes.yaml
β”‚   β”‚   └── provider-config.yaml
β”‚   β”œβ”€β”€ 03-managed-resources/         # Managed resources
β”‚   β”‚   β”œβ”€β”€ s3-bucket.yaml
β”‚   β”‚   β”œβ”€β”€ rds-instance.yaml
β”‚   β”‚   β”œβ”€β”€ vpc.yaml
β”‚   β”‚   └── README.md
β”‚   └── 04-basic-concepts/            # Core concepts
β”‚       β”œβ”€β”€ crds.yaml
β”‚       β”œβ”€β”€ custom-resources.yaml
β”‚       └── resource-lifecycle.md
β”‚
β”œβ”€β”€ 02-compositions/                  # Composition fundamentals
β”‚   β”œβ”€β”€ README.md                     # Composition overview
β”‚   β”œβ”€β”€ 01-xrd-basics/                # XRD fundamentals
β”‚   β”‚   β”œβ”€β”€ simple-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ namespaced-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ cluster-scoped-xrd.yaml
β”‚   β”‚   └── schema-definition.yaml
β”‚   β”œβ”€β”€ 02-basic-compositions/        # Basic compositions
β”‚   β”‚   β”œβ”€β”€ patch-and-transform.yaml
β”‚   β”‚   β”œβ”€β”€ resource-templates.yaml
β”‚   β”‚   └── composition-metadata.yaml
β”‚   β”œβ”€β”€ 03-composite-resources/       # Working with XRs
β”‚   β”‚   β”œβ”€β”€ namespaced-xr.yaml
β”‚   β”‚   β”œβ”€β”€ cluster-xr.yaml
β”‚   β”‚   β”œβ”€β”€ xr-status.yaml
β”‚   β”‚   └── README.md
β”‚   └── 04-v2-migration/              # v1 to v2 migration
β”‚       β”œβ”€β”€ legacy-composition.yaml
β”‚       β”œβ”€β”€ v2-composition.yaml
β”‚       └── migration-guide.md
β”‚
β”œβ”€β”€ 03-composition-functions/         # Composition functions
β”‚   β”œβ”€β”€ README.md                     # Functions overview
β”‚   β”œβ”€β”€ 01-patch-and-transform/       # P&T function
β”‚   β”‚   β”œβ”€β”€ function-install.yaml
β”‚   β”‚   β”œβ”€β”€ simple-transform.yaml
β”‚   β”‚   β”œβ”€β”€ conditional-patching.yaml
β”‚   β”‚   └── examples/
β”‚   β”œβ”€β”€ 02-function-pipeline/         # Function pipelines
β”‚   β”‚   β”œβ”€β”€ pipeline-composition.yaml
β”‚   β”‚   β”œβ”€β”€ multi-function.yaml
β”‚   β”‚   └── function-chaining.yaml
β”‚   β”œβ”€β”€ 03-templating-functions/      # Template-based functions
β”‚   β”‚   β”œβ”€β”€ go-templating/
β”‚   β”‚   β”‚   β”œβ”€β”€ function-config.yaml
β”‚   β”‚   β”‚   └── template-examples.yaml
β”‚   β”‚   β”œβ”€β”€ kcl-function/
β”‚   β”‚   β”‚   β”œβ”€β”€ function-install.yaml
β”‚   β”‚   β”‚   └── kcl-examples/
β”‚   β”‚   └── helm-function/
β”‚   β”‚       └── helm-composition.yaml
β”‚   β”œβ”€β”€ 04-custom-functions/          # Writing custom functions
β”‚   β”‚   β”œβ”€β”€ python-function/
β”‚   β”‚   β”‚   β”œβ”€β”€ function.py
β”‚   β”‚   β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”‚   β”‚   β”œβ”€β”€ requirements.txt
β”‚   β”‚   β”‚   └── README.md
β”‚   β”‚   β”œβ”€β”€ go-function/
β”‚   β”‚   β”‚   β”œβ”€β”€ main.go
β”‚   β”‚   β”‚   β”œβ”€β”€ go.mod
β”‚   β”‚   β”‚   β”œβ”€β”€ Dockerfile
β”‚   β”‚   β”‚   └── README.md
β”‚   β”‚   └── function-testing/
β”‚   β”‚       β”œβ”€β”€ test-inputs.yaml
β”‚   β”‚       └── render-tests.sh
β”‚   └── 05-advanced-patterns/         # Advanced function patterns
β”‚       β”œβ”€β”€ conditional-logic.yaml
β”‚       β”œβ”€β”€ loops-iteration.yaml
β”‚       β”œβ”€β”€ external-data.yaml
β”‚       └── error-handling.yaml
β”‚
β”œβ”€β”€ 04-real-world-examples/           # Production-ready examples
β”‚   β”œβ”€β”€ README.md                     # Examples overview
β”‚   β”œβ”€β”€ 01-database-platform/         # Database self-service
β”‚   β”‚   β”œβ”€β”€ xrd/
β”‚   β”‚   β”‚   └── database-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ compositions/
β”‚   β”‚   β”‚   β”œβ”€β”€ postgres-composition.yaml
β”‚   β”‚   β”‚   β”œβ”€β”€ mysql-composition.yaml
β”‚   β”‚   β”‚   └── mongodb-composition.yaml
β”‚   β”‚   β”œβ”€β”€ claims/
β”‚   β”‚   β”‚   └── sample-database.yaml
β”‚   β”‚   └── README.md
β”‚   β”œβ”€β”€ 02-application-platform/      # App deployment platform
β”‚   β”‚   β”œβ”€β”€ xrd/
β”‚   β”‚   β”‚   └── app-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ composition/
β”‚   β”‚   β”‚   └── app-composition.yaml
β”‚   β”‚   β”œβ”€β”€ examples/
β”‚   β”‚   β”‚   β”œβ”€β”€ frontend-app.yaml
β”‚   β”‚   β”‚   └── backend-app.yaml
β”‚   β”‚   └── README.md
β”‚   β”œβ”€β”€ 03-network-platform/          # Network infrastructure
β”‚   β”‚   β”œβ”€β”€ vpc-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ vpc-composition.yaml
β”‚   β”‚   β”œβ”€β”€ subnet-composition.yaml
β”‚   β”‚   └── security-group-composition.yaml
β”‚   β”œβ”€β”€ 04-observability-platform/    # Monitoring & logging
β”‚   β”‚   β”œβ”€β”€ monitoring-xrd.yaml
β”‚   β”‚   β”œβ”€β”€ prometheus-composition.yaml
β”‚   β”‚   β”œβ”€β”€ grafana-composition.yaml
β”‚   β”‚   └── loki-composition.yaml
β”‚   └── 05-multi-cloud/               # Multi-cloud patterns
β”‚       β”œβ”€β”€ provider-selection.yaml
β”‚       β”œβ”€β”€ aws-composition.yaml
β”‚       β”œβ”€β”€ azure-composition.yaml
β”‚       └── gcp-composition.yaml
β”‚
β”œβ”€β”€ 05-security/                      # Security best practices
β”‚   β”œβ”€β”€ README.md                     # Security overview
β”‚   β”œβ”€β”€ 01-rbac/                      # Access control
β”‚   β”‚   β”œβ”€β”€ roles.yaml
β”‚   β”‚   β”œβ”€β”€ rolebindings.yaml
β”‚   β”‚   └── service-accounts.yaml
β”‚   β”œβ”€β”€ 02-secrets-management/        # Secrets handling
β”‚   β”‚   β”œβ”€β”€ external-secrets.yaml
β”‚   β”‚   β”œβ”€β”€ sealed-secrets.yaml
β”‚   β”‚   └── vault-integration.yaml
β”‚   β”œβ”€β”€ 03-policy-enforcement/        # Policy as code
β”‚   β”‚   β”œβ”€β”€ opa-policies/
β”‚   β”‚   β”œβ”€β”€ kyverno-policies/
β”‚   β”‚   └── admission-control.yaml
β”‚   └── 04-compliance/                # Compliance patterns
β”‚       β”œβ”€β”€ audit-logging.yaml
β”‚       └── compliance-checks.yaml
β”‚
β”œβ”€β”€ 06-operations/                    # Operational excellence
β”‚   β”œβ”€β”€ README.md                     # Operations overview
β”‚   β”œβ”€β”€ 01-monitoring/                # Monitoring setup
β”‚   β”‚   β”œβ”€β”€ prometheus-rules.yaml
β”‚   β”‚   β”œβ”€β”€ grafana-dashboards/
β”‚   β”‚   └── alerts.yaml
β”‚   β”œβ”€β”€ 02-troubleshooting/           # Debug procedures
β”‚   β”‚   β”œβ”€β”€ debug-commands.sh
β”‚   β”‚   β”œβ”€β”€ common-issues.md
β”‚   β”‚   └── logs-analysis.md
β”‚   β”œβ”€β”€ 03-backup-restore/            # DR procedures
β”‚   β”‚   β”œβ”€β”€ backup-strategy.md
β”‚   β”‚   └── restore-procedures.md
β”‚   β”œβ”€β”€ 04-upgrades/                  # Upgrade strategies
β”‚   β”‚   β”œβ”€β”€ upgrade-checklist.md
β”‚   β”‚   β”œβ”€β”€ rollback-plan.md
β”‚   β”‚   └── version-migration.yaml
β”‚   └── 05-performance/               # Performance tuning
β”‚       β”œβ”€β”€ scaling-config.yaml
β”‚       └── optimization-guide.md
β”‚
β”œβ”€β”€ 07-ci-cd-integration/             # CI/CD pipelines
β”‚   β”œβ”€β”€ README.md                     # CI/CD overview
β”‚   β”œβ”€β”€ 01-gitops/                    # GitOps workflows
β”‚   β”‚   β”œβ”€β”€ argocd/
β”‚   β”‚   β”‚   β”œβ”€β”€ application.yaml
β”‚   β”‚   β”‚   └── app-of-apps.yaml
β”‚   β”‚   └── flux/
β”‚   β”‚       β”œβ”€β”€ kustomization.yaml
β”‚   β”‚       └── helmrelease.yaml
β”‚   β”œβ”€β”€ 02-github-actions/            # GitHub workflows
β”‚   β”‚   β”œβ”€β”€ validate-composition.yaml
β”‚   β”‚   β”œβ”€β”€ test-functions.yaml
β”‚   β”‚   └── deploy-crossplane.yaml
β”‚   β”œβ”€β”€ 03-gitlab-ci/                 # GitLab pipelines
β”‚   β”‚   └── .gitlab-ci.yaml
β”‚   └── 04-testing/                   # Automated testing
β”‚       β”œβ”€β”€ composition-tests/
β”‚       β”œβ”€β”€ function-tests/
β”‚       └── integration-tests/
β”‚
β”œβ”€β”€ 08-advanced-topics/               # Advanced scenarios
β”‚   β”œβ”€β”€ README.md                     # Advanced topics overview
β”‚   β”œβ”€β”€ 01-custom-providers/          # Building providers
β”‚   β”‚   β”œβ”€β”€ provider-template/
β”‚   β”‚   └── upjet-provider/
β”‚   β”œβ”€β”€ 02-function-development/      # Advanced function dev
β”‚   β”‚   β”œβ”€β”€ sdk-usage/
β”‚   β”‚   β”œβ”€β”€ grpc-implementation/
β”‚   β”‚   └── optimization-patterns/
β”‚   β”œβ”€β”€ 03-webhooks/                  # Validation webhooks
β”‚   β”‚   β”œβ”€β”€ admission-webhook.yaml
β”‚   β”‚   └── validation-logic.go
β”‚   └── 04-event-driven/              # Event-driven patterns
β”‚       β”œβ”€β”€ triggers.yaml
β”‚       └── event-handlers/
β”‚
β”œβ”€β”€ 09-reference/                     # Reference materials
β”‚   β”œβ”€β”€ README.md                     # Reference overview
β”‚   β”œβ”€β”€ 01-api-reference/             # API documentation
β”‚   β”‚   β”œβ”€β”€ xrd-api.md
β”‚   β”‚   β”œβ”€β”€ composition-api.md
β”‚   β”‚   └── function-api.md
β”‚   β”œβ”€β”€ 02-cli-reference/             # CLI commands
β”‚   β”‚   β”œβ”€β”€ crossplane-cli.md
β”‚   β”‚   └── kubectl-crossplane.md
β”‚   β”œβ”€β”€ 03-glossary/                  # Terms & definitions
β”‚   β”‚   └── glossary.md
β”‚   └── 04-cheat-sheets/              # Quick references
β”‚       β”œβ”€β”€ commands.md
β”‚       β”œβ”€β”€ patterns.md
β”‚       └── troubleshooting.md
β”‚
β”œβ”€β”€ 10-labs/                          # Hands-on laboratories
β”‚   β”œβ”€β”€ README.md                     # Labs overview
β”‚   β”œβ”€β”€ lab-01-installation/          # Lab 1: Setup
β”‚   β”‚   β”œβ”€β”€ instructions.md
β”‚   β”‚   β”œβ”€β”€ lab-files/
β”‚   β”‚   └── solutions/
β”‚   β”œβ”€β”€ lab-02-first-composition/     # Lab 2: Basic composition
β”‚   β”‚   β”œβ”€β”€ instructions.md
β”‚   β”‚   β”œβ”€β”€ lab-files/
β”‚   β”‚   └── solutions/
β”‚   β”œβ”€β”€ lab-03-functions/             # Lab 3: Functions
β”‚   β”‚   β”œβ”€β”€ instructions.md
β”‚   β”‚   β”œβ”€β”€ lab-files/
β”‚   β”‚   └── solutions/
β”‚   β”œβ”€β”€ lab-04-database-platform/     # Lab 4: Database platform
β”‚   β”‚   β”œβ”€β”€ instructions.md
β”‚   β”‚   β”œβ”€β”€ lab-files/
β”‚   β”‚   └── solutions/
β”‚   └── lab-05-production/            # Lab 5: Production
β”‚       β”œβ”€β”€ instructions.md
β”‚       β”œβ”€β”€ lab-files/
β”‚       └── solutions/
β”‚
β”œβ”€β”€ 11-case-studies/                  # Real-world case studies
β”‚   β”œβ”€β”€ README.md                     # Case studies overview
β”‚   β”œβ”€β”€ platform-team-adoption/       # Platform engineering
β”‚   β”œβ”€β”€ multi-tenant-saas/            # SaaS platforms
β”‚   β”œβ”€β”€ hybrid-cloud/                 # Hybrid deployments
β”‚   └── edge-computing/               # Edge scenarios
β”‚
β”œβ”€β”€ scripts/                          # Utility scripts
β”‚   β”œβ”€β”€ install-crossplane.sh
β”‚   β”œβ”€β”€ setup-providers.sh
β”‚   β”œβ”€β”€ validate-compositions.sh
β”‚   β”œβ”€β”€ cleanup.sh
β”‚   └── test-functions.sh
β”‚
β”œβ”€β”€ docs/                             # Additional documentation
β”‚   β”œβ”€β”€ architecture/                 # Architecture guides
β”‚   β”‚   β”œβ”€β”€ control-plane-design.md
β”‚   β”‚   └── composition-patterns.md
β”‚   β”œβ”€β”€ tutorials/                    # Step-by-step tutorials
β”‚   β”‚   β”œβ”€β”€ getting-started.md
β”‚   β”‚   β”œβ”€β”€ building-platforms.md
β”‚   β”‚   └── advanced-compositions.md
β”‚   └── videos/                       # Video resources
β”‚       └── video-links.md
β”‚
└── examples/                         # Quick reference examples
    β”œβ”€β”€ simple-s3-bucket/
    β”œβ”€β”€ complete-database/
    β”œβ”€β”€ app-deployment/
    └── multi-resource-composition/

Getting Started

Quick Start (5 minutes)

  1. Install Crossplane:

    # Create a Kubernetes cluster (if needed)
    kind create cluster --name crossplane-playground
    
    # Install Crossplane using Helm
    helm repo add crossplane-stable https://charts.crossplane.io/stable
    helm repo update
    helm install crossplane \
      --namespace crossplane-system \
      --create-namespace \
      crossplane-stable/crossplane
  2. Verify Installation:

    kubectl get pods -n crossplane-system
  3. Install Crossplane CLI:

    curl -sL "https://raw.githubusercontent.com/crossplane/crossplane/main/install.sh" | sh
    sudo mv crossplane /usr/local/bin
  4. Run Your First Example:

    cd 01-fundamentals/01-installation
    ./verify-installation.sh

Detailed Setup

See 01-fundamentals/README.md for comprehensive installation and setup instructions.

Learning Path

🌱 Beginner Track (Weeks 1-2)

Goal: Understand Crossplane fundamentals and basic resource management

  1. Fundamentals (01-fundamentals/)

    • Install Crossplane
    • Understand providers and managed resources
    • Learn about Custom Resource Definitions (CRDs)
  2. Basic Compositions (02-compositions/01-xrd-basics/)

    • Create your first XRD
    • Build simple compositions
    • Deploy composite resources

Lab: Complete 10-labs/lab-01-installation/ and lab-02-first-composition/

🌿 Intermediate Track (Weeks 3-4)

Goal: Master composition functions and build reusable platform APIs

  1. Composition Functions (03-composition-functions/)

    • Work with Patch & Transform
    • Build function pipelines
    • Use templating functions (KCL, Go templates)
  2. Real-World Patterns (04-real-world-examples/)

    • Database self-service platform
    • Application deployment automation
    • Network infrastructure management

Lab: Complete 10-labs/lab-03-functions/ and lab-04-database-platform/

🌳 Advanced Track (Weeks 5-6)

Goal: Implement production-ready control planes with security and operations

  1. Security & Compliance (05-security/)

    • RBAC and access control
    • Secrets management
    • Policy enforcement
  2. Operations (06-operations/)

    • Monitoring and observability
    • Troubleshooting patterns
    • Backup and disaster recovery
  3. CI/CD Integration (07-ci-cd-integration/)

    • GitOps workflows
    • Automated testing
    • Deployment pipelines

Lab: Complete 10-labs/lab-05-production/

πŸš€ Expert Track (Ongoing)

Goal: Extend Crossplane and contribute to the ecosystem

  1. Advanced Topics (08-advanced-topics/)

    • Build custom providers
    • Develop custom functions
    • Implement webhooks
  2. Community Contribution

    • Contribute to open-source functions
    • Share composition patterns
    • Write blog posts and tutorials

Key Concepts

Composite Resource Definition (XRD)

Defines the schema for your custom API:

apiVersion: apiextensions.crossplane.io/v2
kind: CompositeResourceDefinition
metadata:
  name: databases.example.io
spec:
  scope: Namespaced  # New in v2: Namespaced by default
  group: example.io
  names:
    kind: Database
    plural: databases
  versions:
  - name: v1
    served: true
    referenceable: true
    schema:
      openAPIV3Schema:
        type: object
        properties:
          spec:
            type: object
            properties:
              size:
                type: string
                enum: [small, medium, large]
              engine:
                type: string
                enum: [postgres, mysql]

Composition

Templates that define what resources to create:

apiVersion: apiextensions.crossplane.io/v1
kind: Composition
metadata:
  name: database-aws
spec:
  compositeTypeRef:
    apiVersion: example.io/v1
    kind: Database
  mode: Pipeline  # Use function pipeline
  pipeline:
  - step: patch-and-transform
    functionRef:
      name: crossplane-contrib-function-patch-and-transform
    input:
      apiVersion: pt.fn.crossplane.io/v1beta1
      kind: Resources
      resources:
      - name: rds-instance
        base:
          apiVersion: rds.aws.crossplane.io/v1alpha1
          kind: Instance
          spec:
            forProvider:
              engine: postgres

Composition Functions

Extend composition with custom logic:

apiVersion: pkg.crossplane.io/v1
kind: Function
metadata:
  name: function-patch-and-transform
spec:
  package: xpkg.crossplane.io/crossplane-contrib/function-patch-and-transform:v0.8.2

Popular functions:

  • function-patch-and-transform: Traditional P&T compositions
  • function-go-templating: Go template-based composition
  • function-kcl: KCL language for composition
  • function-auto-ready: Automatic readiness detection
  • Custom functions: Written in Go or Python

What's New in Crossplane v2

  • Namespaced XRs: Composite resources are namespaced by default
  • No More Claims: Simplified architecture removes the claim abstraction
  • Better App Support: First-class support for managing applications
  • Backward Compatible: v1 compositions continue to work

Hands-On Labs

Each lab includes:

  • Detailed step-by-step instructions
  • Starter files and templates
  • Complete solutions
  • Validation tests

Available Labs

  1. Lab 1: Installation & Setup (30 min)
  2. Lab 2: First Composition (45 min)
  3. Lab 3: Composition Functions (60 min)
  4. Lab 4: Database Platform (90 min)
  5. Lab 5: Production Deployment (120 min)

See 10-labs/README.md for detailed lab instructions.

Best Practices

Composition Design

βœ… DO:

  • Use meaningful, descriptive names for XRDs and compositions
  • Version your XRDs appropriately
  • Leverage function pipelines for complex logic
  • Document composition behavior in annotations
  • Use namespaced XRs unless you need cluster scope

❌ DON'T:

  • Embed sensitive data directly in compositions
  • Create overly complex single compositions
  • Skip validation schemas in XRDs
  • Mix v1 and v2 patterns in the same platform

Security

  • Use RBAC to restrict access to compositions
  • Leverage external secrets management
  • Implement policy enforcement with OPA or Kyverno
  • Enable audit logging
  • Regularly scan provider images

Operations

  • Monitor composition reconciliation metrics
  • Set up alerting for composition failures
  • Implement backup strategies for XR state
  • Test compositions with crossplane render
  • Use GitOps for composition lifecycle

Function Development

  • Write comprehensive tests for custom functions
  • Use the official SDKs (Go, Python)
  • Document function inputs clearly
  • Handle errors gracefully
  • Consider performance implications

Resources

Official Documentation

Community

Learning Materials

Tools & Extensions

Providers

Composition Functions

Contributing

Contributions are welcome! This is a learning resource for the community.

How to Contribute

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/new-example)
  3. Add your example or improvement
  4. Ensure documentation is updated
  5. Submit a pull request

Contribution Guidelines

  • Follow existing directory structure
  • Include comprehensive README files
  • Add comments to complex YAML
  • Provide working examples
  • Test all configurations before submitting
  • Follow Crossplane best practices

What to Contribute

  • New composition examples
  • Custom function implementations
  • Real-world case studies
  • Improved documentation
  • Bug fixes and clarifications
  • Additional labs and tutorials

Roadmap

Planned Content

  • Advanced multi-cloud patterns
  • Service mesh integration examples
  • Cost optimization strategies
  • Disaster recovery blueprints
  • Edge computing scenarios
  • Machine learning platform examples

Stay Updated

Watch this repository for updates as Crossplane evolves. Major updates planned for:

  • Crossplane v2.2 (February 2026)
  • Crossplane v2.3 (May 2026)

License

This repository is licensed under the MIT License. See LICENSE for details.

Acknowledgments

  • Crossplane maintainers and community
  • CNCF for hosting the project
  • All contributors to this learning resource
  • The platform engineering community

Author

Willem van Heemstra

  • Security Domain Expert & Cloud Engineer
  • Focus: DevSecOps, Cloud Security, Platform Engineering
  • Location: Eersel, Netherlands

⭐ If you find this resource helpful, please star the repository!

🀝 Contributions and feedback are always welcome!

πŸ“§ Questions? Open an issue or join the Crossplane Slack


Last Updated: December 24, 2025 Crossplane Version: v2.1 (November 2025) CNCF Status: Graduated Project (October 2025)

About

Learning Crossplane

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published