Skip to content

Crossplane + kind + Azure provider family bootstrap. One-command local setup with reliable waits, cleanup, and Makefile targets.

License

Notifications You must be signed in to change notification settings

hutstep/crossplane-kind-azure-bootstrap

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

crossplane-kind-azure-bootstrap

lint e2e-kind License: MIT

🚀 Bootstrap a local kind cluster with Crossplane, the Crossplane provider family for Azure, and selected Composition Functions. Designed to be robust, idempotent, and non-interactive friendly for both local use and CI.

✨ Features

  • 🧰 Creates or reuses a kind cluster (or targets current kubectl context)
  • 📦 Installs Crossplane via Helm chart (chart version controllable)
  • ☁️ Installs provider family for Azure (provider-family-azure)
  • 🧩 Installs Crossplane Composition Functions:
    • function-patch-and-transform
    • function-environment-configs
  • ✅ Reliable health waits with JSONPath fallback
  • 🧹 Cleanup modes (keep cluster, delete cluster, and force-clean leftovers)
  • 🧰 Makefile with common targets

✅ Prerequisites

Tip: Ensure all scripts in scripts/ are executable so you can run them directly (chmod +x scripts/*).

🚦 Quick start

  • Non-interactive default install (creates kind cluster if missing):

    scripts/bootstrap-crossplane-kind.sh --yes
  • Use existing context (no cluster creation):

    scripts/bootstrap-crossplane-kind.sh --yes --skip-cluster
  • Recreate cluster and override versions:

    scripts/bootstrap-crossplane-kind.sh --yes --recreate \
      --cluster-name xp-dev --kind-node-image kindest/node:v1.33.1 \
      --crossplane-version v1.20.1 \
      --provider-azure-version v1.13.0 \
      --func-pat-version v0.9.0 \
      --func-envcfg-version v0.4.0

🧰 Makefile targets

  • Bootstrap (idempotent):

    make bootstrap
  • Dry-run (print planned actions):

    make dry-run
  • Recreate cluster then bootstrap:

    make recreate
  • Use current context (no cluster creation):

    make skip-cluster
  • Tools check (versions, network reachability):

    make tools-check
  • Cleanup providers/functions/Helm release (keep cluster):

    make clean
  • Cleanup plus remove Function package CRDs (keeps cluster):

    make clean-force
  • Cleanup and delete kind cluster:

    make clean-delete-cluster

⚙️ Script flags (most-used)

Flag Description Default
--yes Non-interactive assume-yes false
--cluster-name NAME Kind cluster name crossplane-kind
--kind-node-image IMAGE Node image kindest/node:v1.33.1
--crossplane-version VER Crossplane Helm chart version v1.20.1
--provider-azure-version V provider-family-azure version v1.13.0
--func-pat-version V function-patch-and-transform version v0.9.0
--func-envcfg-version V function-environment-configs version v0.4.0
--skip-cluster Target current kubectl context; do not create kind false
--recreate Delete existing kind cluster with the same name first false
--wait-timeout DURATION Timeout for waits (e.g., 10m) 10m
--cleanup Remove providers/functions and Crossplane Helm release false
--delete-cluster With --cleanup, delete the kind cluster too false
--force-clean With --cleanup, also remove Function package CRDs false
--dry-run Print planned actions only false
--verbose Shell tracing (set -x) false

📦 What gets installed

  • Crossplane Helm chart from charts.crossplane.io (chart version you choose)
  • Provider family Azure package:
    • xpkg.crossplane.io/crossplane-contrib/provider-family-azure:v1.13.0
  • Composition Functions:
    • xpkg.crossplane.io/crossplane-contrib/function-patch-and-transform:v0.9.0
    • xpkg.crossplane.io/crossplane-contrib/function-environment-configs:v0.4.0

🔍 Verify installation

helm list -n crossplane-system
kubectl get providers.pkg.crossplane.io -o wide
kubectl get functions.pkg.crossplane.io -o wide
kubectl get pods -A

🧹 Cleanup

  • Keep cluster, remove providers/functions and Crossplane Helm release:

    scripts/bootstrap-crossplane-kind.sh --cleanup
  • If function pods linger or are recreated by FunctionRevisions, use force-clean:

    scripts/bootstrap-crossplane-kind.sh --cleanup --force-clean
  • Delete cluster too:

    scripts/bootstrap-crossplane-kind.sh --cleanup --delete-cluster --yes

🧪 CI notes

  • Ensure Docker-in-Docker or Docker is available on the runner (kind requires Docker).
  • Cache Helm repository data to speed up runs:
    • $HOME/.cache/helm
    • optionally $HOME/.config/helm/repositories.yaml

📜 License

This project is licensed under the MIT License - see LICENSE for details.

About

Crossplane + kind + Azure provider family bootstrap. One-command local setup with reliable waits, cleanup, and Makefile targets.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published