# TP26 partie 3 : définition de l'API de plateforme « WebApp » (CompositeResourceDefinition, Crossplane v2).
# scope: Cluster, car la composition crée une ressource AWS (cluster) ET des objets dans un namespace.
apiVersion: apiextensions.crossplane.io/v2
kind: CompositeResourceDefinition
metadata:
  name: webapps.platform.lab.local
spec:
  scope: Cluster
  group: platform.lab.local
  names:
    kind: WebApp
    plural: webapps
  versions:
    - name: v1alpha1
      served: true
      referenceable: true
      schema:
        openAPIV3Schema:
          type: object
          properties:
            spec:
              type: object
              properties:
                namespace:
                  type: string
                  description: Namespace de l'application
                image:
                  type: string
                  default: traefik/whoami:v1.10.0
                replicas:
                  type: integer
                  default: 1
                  minimum: 1
                  maximum: 5
                # TODO : ajouter un champ "environment" (enum dev, staging, prod)
              required: [namespace]
            status:
              type: object
              properties:
                bucketName:
                  type: string
