# ============================================================================= # COMPOSITION # Configure comment créer les ressources réelles # ============================================================================= apiVersion: apiextensions.crossplane.io/v1 kind: Composition metadata: # Format: .. # Exemple: database.aws.mathod.io, network.gcp.mathod.io name: ..mathod.io labels: provider: type: spec: # Référence vers le XRD compositeTypeRef: apiVersion: mathod.io/v1alpha1 kind: X # Mode Pipeline (recommandé pour Crossplane v2) mode: Pipeline pipeline: - step: patch-and-transform functionRef: name: function-patch-and-transform input: apiVersion: pt.fn.crossplane.io/v1beta1 kind: Resources resources: # ============================================= # RESSOURCE MANAGÉE #1 # ============================================= - name: base: # API de la ressource (provider specific) apiVersion: .aws.upbound.io/v1beta1 kind: spec: forProvider: # Configuration de base : # Référence au ProviderConfig providerConfigRef: name: aws-provider patches: # ------------------------------------- # FromCompositeFieldPath # Copie depuis le XR vers la ressource # ------------------------------------- - type: FromCompositeFieldPath fromFieldPath: spec.parameters. toFieldPath: spec.forProvider. # ------------------------------------- # ToCompositeFieldPath # Copie depuis la ressource vers le XR # ------------------------------------- - type: ToCompositeFieldPath fromFieldPath: status.atProvider. toFieldPath: status. # ------------------------------------- # Transform - Map # Transforme une valeur avec un mapping # ------------------------------------- - type: FromCompositeFieldPath fromFieldPath: spec.parameters. toFieldPath: spec.forProvider. transforms: - type: map map: "true": Enabled "false": Disabled # ------------------------------------- # Transform - String # Formate une string # ------------------------------------- - type: FromCompositeFieldPath fromFieldPath: spec.parameters. toFieldPath: spec.forProvider. transforms: - type: string string: fmt: "prefix-%s-suffix" # ------------------------------------- # Transform - Math # Opération mathématique # ------------------------------------- - type: FromCompositeFieldPath fromFieldPath: spec.parameters. toFieldPath: spec.forProvider. transforms: - type: math math: multiply: 2 # ------------------------------------- # CombineFromComposite # Combine plusieurs champs # ------------------------------------- - type: CombineFromComposite combine: variables: - fromFieldPath: spec.parameters. - fromFieldPath: spec.parameters. strategy: string string: fmt: "%s-%s" toFieldPath: spec.forProvider. # ============================================= # RESSOURCE MANAGÉE #2 (avec référence) # ============================================= - name: base: apiVersion: .aws.upbound.io/v1beta1 kind: spec: forProvider: # Référence vers une autre ressource Ref: name: "" providerConfigRef: name: aws-provider patches: # Patch la référence - type: FromCompositeFieldPath fromFieldPath: spec.parameters. toFieldPath: spec.forProvider.Ref.name ---