Réseaux et Infrastructure

Multi-Cloud IaC 2026 : Crossplane vs concurrents

Comparez Crossplane, Terraform et Pulumi pour votre infrastructure multi-cloud. Exemples de code, schémas d'architecture et comparatif complet.

10 min de lecture 26 févr. 2026 1 986 mots

La gestion des infrastructures multi-cloud reste un défi pour de nombreuses équipes : diversité d'APIs, contraintes de sécurité, et contrôles d'accès hétérogènes. Les solutions d'infrastructure as code (IaC) permettent d'automatiser et de standardiser ces déploiements. Crossplane se distingue aujourd'hui par son modèle déclaratif natif Kubernetes, utile lorsqu'on souhaite piloter des ressources cloud depuis le même plan de contrôle que les applications.

Crossplane (démarré en 2018) offre des abstractions Kubernetes pour provisionner des services cloud. Depuis la version 1.0 (2022), les stacks et la modularité des providers ont facilité l'adoption en production, notamment pour des architectures multi-cloud. Cet article compare Crossplane à Terraform et Pulumi, et propose des exemples pratiques et un schéma d'architecture pour vous aider à évaluer l'intégration dans votre parc.

Pour démarrer rapidement avec Terraform :

terraform init
terraform apply

Exemple minimal (bucket S3) pour illustrer l'approche Terraform — utile pour comparer rapidement avec un manifest Crossplane :

resource "aws_s3_bucket" "intro_bucket" {
  bucket = "example-intro-bucket-12345"
  acl    = "private"
}

Ces commandes et ce petit exemple montrent la logique HCL et la création d'une ressource cloud via Terraform.

Présentation de Crossplane et de ses Fonctionnalités

Qu'est-ce que Crossplane ?

Crossplane est un projet open-source qui expose des ressources cloud sous forme de CRD Kubernetes. Il permet de provisionner et d'orchestrer des services cloud (bases de données, réseaux, caches) depuis un cluster Kubernetes, en conservant un modèle déclaratif et en s'intégrant naturellement aux workflows GitOps.

Crossplane fournit un control loop qui veille à l'état désiré des ressources : les compositions (XRD + Composition) permettent de définir des abstractions métiers réutilisables pour standardiser des stacks cloud dans l'entreprise.

  • Intégration avec Kubernetes
  • Provisionnement de ressources
  • Plans de contrôle déclaratifs
  • Gestion simplifiée via GitOps

Pour une perspective "entreprise", Upbound (la société fondatrice) propose des offres commerciales et du support pour faciliter l'adoption en production. Upbound fournit également une registry de packages et un écosystème permettant de partager des compositions et des abstractions métier au sein d'une organisation.

Exemple : définition d'une instance MySQL avec une référence de ProviderConfig (authentification) :

# providerConfigRef : référence au ProviderConfig (credentials, région, profile).
# Créez un ProviderConfig (ex: aws-provider) qui contient les informations d'authentification nécessaires.
apiVersion: database.crossplane.io/v1alpha1
kind: MySQLInstance
metadata:
  name: example-mysql
spec:
  providerConfigRef:
    name: aws-provider
  classRef:
    name: mysql-class
  writeConnectionSecretToRef:
    name: mysql-secret
    namespace: crossplane-system

Le champ providerConfigRef est crucial : sans ProviderConfig correctement configuré, Crossplane ne pourra pas authentifier et créer des ressources chez le fournisseur.

Fonctionnalité Description Avantage
Provisionnement Création de ressources cloud Simplification des opérations
Déclarations Modèles déclaratifs Clarté et cohérence
Intégration S'intègre à Kubernetes Utilisation des outils familiers

Architecture Crossplane

Vue d'overview de la position de Crossplane dans l'architecture : le contrôleur Crossplane s'exécute dans le cluster Kubernetes et appelle les providers pour provisionner des ressources externes (AWS, Azure, GCP).

Architecture Crossplane et Kubernetes Diagramme montrant le flux de provisionnement de ressources cloud via Crossplane depuis un cluster Kubernetes, incluant l'utilisateur, le cluster K8s et le fournisseur cloud. Cluster Kubernetes Fournisseur Cloud Ingénieur DevOps API Server K8s Manifeste YAML (Claim/XR) Contrôleurs Crossplane Boucle de Réconciliation Ressource Managée (ex: RDS, S3, VPC) kubectl apply Provisionnement API Statut: Prêt
Architecture de provisionnement Crossplane : l'API Kubernetes agit comme interface unique pour orchestrer des ressources cloud externes via des contrôleurs dédiés.

Ce schéma illustre le flux : les manifestes GitOps sont appliqués dans Kubernetes, Crossplane traduit ces desiderata en appels vers les providers qui provisionnent les ressources externes.

Analyse des Concurrents de Crossplane

Comparaison avec d'autres solutions

Terraform, Pulumi et Ansible sont des alternatives répandues. Terraform se distingue par sa gestion d'état et son large écosystème de providers. Pulumi apporte une approche programmative (langages courants) et Ansible vise plutôt la configuration et l'orchestration.

  • Terraform : simplicité et gestion d'état
  • Pulumi : approche programmative
  • Crossplane : intégration Kubernetes
  • Ansible : orchestration et configuration

Exemple d'exécution Terraform :

terraform apply -auto-approve

Exemple Pulumi (TypeScript) : création d'un bucket S3 simple — utile pour comparer l'approche programmative de Pulumi avec le modèle déclaratif de Crossplane.

import * as pulumi from "@pulumi/pulumi"
import * as aws from "@pulumi/aws"

// Crée un bucket S3 privé
const bucket = new aws.s3.Bucket("my-bucket", {
  acl: "private",
});

export const bucketName = bucket.id;

Exemple Terraform concret (bucket S3 + backend d'état)

Exemple minimal pour illustrer l'approche HCL et la gestion d'état centralisée (recommandé en multi-cloud / équipe). Adaptez les noms (bucket, key, region) et sécurisez les credentials via IAM roles et MFA quand approprié.

terraform {
  required_version = ">= 1.0.0"
  required_providers {
    aws = {
      source  = "hashicorp/aws"
      version = "~> 4.0"
    }
  }
  backend "s3" {
    bucket         = "my-terraform-state-bucket"
    key            = "envs/prod/terraform.tfstate"
    region         = "eu-west-1"
    dynamodb_table = "terraform-locks"
  }
}

provider "aws" {
  region = "eu-west-1"
}

resource "aws_s3_bucket" "app_bucket" {
  bucket = "my-app-bucket-example-unique-12345"
  acl     = "private"

  tags = {
    Environment = "prod"
    ManagedBy    = "terraform"
  }
}

Bonnes pratiques associées :

  • Utiliser un backend d'état centralisé (S3) + verrouillage (DynamoDB) pour éviter les collisions.
  • Protéger les credentials via IAM roles (instance profiles / OIDC) plutôt que de stocker des clés statiques.
  • Versionner les modules et exécuter des plans dans des pipelines CI (pré-validation).
Outil Type Particularité
Terraform IaC Gestion d'état
Pulumi IaC Langages de programmation
Crossplane IaC Intégration Kubernetes
Ansible Configuration Orchestration des déploiements

Avantages et Inconvénients de chaque Solution

Crossplane

Avantages principaux : intégration étroite avec Kubernetes, audibilité via YAML et bonnes pratiques GitOps, et possibilité de créer des abstractions métiers réutilisables (Compositions).

Inconvénients : nécessite une familiarité Kubernetes — la phase initiale peut être plus longue pour des équipes non-Kubernetes. La compatibilité entre versions (Crossplane / Kubernetes / providers) exige une gestion active des versions et des tests automatisés.

  • Avantages : Intégration Kubernetes, gestion des versions simplifiée, audibilité.
  • Inconvénients : Courbe d'apprentissage pour les non-initiés, gestion proactive des compatibilités.

Alternatives à Crossplane

Terraform offre une large adoption et une gestion d'état centralisée. Pulumi permet d'écrire l'infrastructure en TypeScript/Python/Go, ce qui séduit les équipes développeurs mais introduit des dépendances applicatives supplémentaires.

  • Terraform : Adoption large, gestion multi-cloud, mais syntaxe HCL spécifique.
  • Pulumi : Utilisation de langages modernes, mais complexité liée aux dépendances et aux modèles applicatifs.

Études de Cas et Retours d'Expérience

Cas d'utilisation de Crossplane

Dans une plateforme SaaS, l'équipe a centralisé le provisioning via Crossplane : un seul manifest GitOps suffisait pour provisionner RDS sur AWS et une base managée sur Azure. Cela a réduit les efforts manuels et facilité le versioning des configurations. L'équipe a mis en place des tests d'intégration pour valider les changements de versions Kubernetes / Crossplane avant le roll-out en production.

  • Cas d'étude : Gestion d'infrastructure multicloud pour une plateforme SaaS.
  • Bénéfice : réduction du temps de déploiement et meilleure traçabilité via GitOps.

Expérience avec Terraform

Terraform a permis à une autre organisation de standardiser ses déploiements sur plusieurs environnements (prod / staging / dev). La communauté et les modules réutilisables ont accéléré l'adoption, bien qu'il ait fallu parfois recourir à des ressources spécifiques non couvertes par les providers officiels.

  • Cas d'étude : Automatisation de la gestion des infrastructures avec Terraform.
  • Bénéfice : Standardisation des déploiements et réduction des erreurs humaines.

Points Clés à Retenir

  • Crossplane propose une approche déclarative pour la gestion des infrastructures multi-cloud via des CRD Kubernetes.
  • L'intégration de Crossplane avec des providers (AWS, Azure, GCP) permet d'orchestrer des ressources depuis un cluster Kubernetes.
  • Les compositions Crossplane (XRD + Composition) permettent de créer des abstractions métiers réutilisables.
  • La gestion multi-cloud exige une approche rigoureuse des politiques de sécurité et des tests de compatibilité.

Questions Fréquentes

Comment Crossplane se compare-t-il à Terraform pour la gestion multi-cloud?
Crossplane et Terraform sont tous deux puissants pour la gestion multi-cloud, mais Crossplane s'intègre nativement à Kubernetes. Si vous opérez déjà des workloads via Kubernetes et GitOps, Crossplane permet d'unifier le déploiement applicatif et le provisioning d'infrastructure. Terraform reste un excellent choix si vous préférez un moteur IaC indépendant d'un cluster Kubernetes.
Quelles sont les meilleures pratiques pour sécuriser une infrastructure multi-cloud avec Crossplane?
Appliquez le principe du moindre privilège (IAM roles spécifiques), utilisez des ProviderConfig pour isoler les credentials, stockez les secrets dans des backends sécurisés (ex: KMS + Kubernetes SecretEncryption), et appliquez des politiques OPA/Rego pour valider les manifestes avant déploiement. Testez vos ProviderConfig en environnement contrôlé et automatisez la rotation des clés si possible.
Quels outils de monitoring devrais-je utiliser avec Crossplane?
Prometheus + Grafana sont des choix éprouvés pour collecter métriques et visualiser l'état des contrôleurs et des ressources. Ajoutez des alertes (Alertmanager) et des checks de santé (liveness/readiness) pour les controllers. L'observabilité permet d'identifier et corriger rapidement des régressions.
Faut-il tester Crossplane avant production ?
Oui. Lancez un pilote dans un cluster non productif, automatisez des tests d'intégration (création/suppression de ressources), et validez les versions des providers et la compatibilité avec votre version de Kubernetes avant tout roll-out.
Quand préférer Pulumi ou Terraform plutôt que Crossplane ?
Choisissez Pulumi si votre équipe souhaite écrire l'infrastructure dans un langage de programmation familier (TypeScript, Python, Go) et tirer parti de SDK/logiciels applicatifs. Préférez Terraform si vous avez besoin d'un outil indépendant du cluster Kubernetes avec une gestion d'état mature et un large écosystème de modules. Crossplane est pertinent si vous souhaitez centraliser provisioning et applications dans Kubernetes et adopter un modèle GitOps uniforme.
Que propose Upbound et quand en tenir compte ?
Upbound propose support commercial, des services d'accompagnement et une registry de packages permettant de partager des compositions métiers. En entreprise, tenez compte de l'offre commerciale si vous avez besoin de SLA, d'assistance et d'outils supplémentaires pour gouvernance et distribution interne.
Peut-on mixer Terraform et Crossplane dans le même parc ?
Oui, mais définissez clairement les frontières : par exemple, Terraform pour la création initiale de comptes ou de ressources d'infrastructure partagées, et Crossplane pour le provisioning lié aux environnements applicatifs gérés via Kubernetes. Automatisez la validation (CI) et surveillez les interactions (ownership, tagging, IAM) pour éviter les conflits.

Conclusion

Crossplane est particulièrement adapté quand vous souhaitez piloter l'infrastructure depuis Kubernetes et bénéficier d'un modèle déclaratif intégré aux workflows GitOps. Pour choisir la meilleure solution, évaluez la maturité Kubernetes de vos équipes, vos contraintes d'authentification (ProviderConfig) et vos exigences de gouvernance.

Je recommande de lancer un projet pilote dans un environnement non productif pour valider l'intégration Crossplane (providers, ProviderConfig, tests automatisés) avant un déploiement à grande échelle.