--- apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: controller-gen.kubebuilder.io/version: v0.19.0 name: clusterblueprints.rig.appstack.io spec: group: rig.appstack.io names: kind: ClusterBlueprint listKind: ClusterBlueprintList plural: clusterblueprints shortNames: - cbp singular: clusterblueprint scope: Namespaced versions: - additionalPrinterColumns: - jsonPath: .status.phase name: Phase type: string - jsonPath: .spec.kubernetesVersion name: K8s Version type: string - jsonPath: .spec.infraBlueprintRef name: Infra type: string name: v1alpha1 schema: openAPIV3Schema: properties: apiVersion: description: |- APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources type: string kind: description: |- Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds type: string metadata: type: object spec: description: ClusterBlueprintSpec defines the desired state of ClusterBlueprint properties: controlPlaneHA: description: ControlPlaneHA determines if we provision 3 CP nodes (true) or 1 (false). type: boolean infraBlueprintRef: description: |- InfraBlueprintRef points to the InfraBlueprint (IBP) that manages the quotas and provider details for this cluster. type: string kubernetesVersion: description: KubernetesVersion is the target RKE2/K3s version (e.g., v1.28.0+rke2r1). type: string workerPools: description: WorkerPools is the list of worker node groups to provision. items: description: |- GenericPoolReq defines a request for a set of nodes with specific sizing. This is provider-agnostic. properties: cpuCores: description: CpuCores is the number of vCPUs per node. minimum: 1 type: integer diskGb: description: DiskGB is the root disk size per node in Gigabytes. minimum: 10 type: integer memoryGb: description: MemoryGB is the amount of RAM per node in Gigabytes. minimum: 1 type: integer name: description: Name is the identifier for this node pool (e.g. "workers-gpu"). type: string quantity: description: Quantity is the number of nodes desired. minimum: 0 type: integer required: - cpuCores - diskGb - memoryGb - name - quantity type: object type: array required: - infraBlueprintRef - kubernetesVersion type: object status: description: ClusterBlueprintStatus defines the observed state of ClusterBlueprint properties: identity: description: Identity tracks the cloud credentials generated for this cluster. properties: secretRef: description: SecretRef is the name of the generated secret used by this cluster. type: string serviceAccount: description: ServiceAccount is the name of the SA created on the provider (if applicable). type: string type: object phase: description: Phase can be "Pending", "Provisioning", "Deployed", or "Failed" type: string ready: description: Ready indicates if the Helm Chart has been successfully applied. type: boolean required: - ready type: object type: object served: true storage: true subresources: status: {}