Certification

View as Markdown

Certification is the top-level resource that defines a suite of certification categories to run against a GPU node pool.

Example

1apiVersion: cre.nvidia.com/v1alpha1
2kind: Certification
3metadata:
4 name: gpu-cluster-cert
5 namespace: cluster-readiness-engine
6spec:
7 target:
8 nodeSelector:
9 nvidia.com/gpu.present: "true"
10 enableMNNVL: false
11 categories:
12 - domain: communication
13 variant: nccl-all-reduce
14 - domain: training
15 variant: nemotron5-8b
16 options:
17 maxSteps: 50
18 nodesPerJob: 8

Spec fields

Generated from CRD schema — coming soon.

spec.categories is immutable after the Certification is created (self == oldSelf validation). To change the category list, delete the Certification and recreate it. The minimum is 1 category.

Status fields

FieldTypeDescription
conditions[]ConditionInProgress, Succeeded, Failed (mutually exclusive)
categoryStatuses[]CertificationCategoryStatusPer-category status including domain, variant, status, workflowRef, succeededNodesRef, and failedNodesRef

Each categoryStatuses entry includes a failedNodesRef — a TypedLocalObjectReference pointing to a ConfigMap that stores the failed-node list (name, reason, message) for that category. To read the failed nodes:

$# Get the ConfigMap name from the category status
$kubectl get certification <name> -o jsonpath='{.status.categoryStatuses[0].failedNodesRef.name}'
$# Read the ConfigMap contents
$kubectl get configmap <ref-name> -o yaml

Lifecycle

  1. Controller creates one Workflow per entry in spec.categories. The category list cannot be changed after creation — delete and recreate to modify it.
  2. Workflows run sequentially — the controller processes one category at a time. maxConcurrent controls job/group parallelism within a single Workflow (how many node groups run at once), not across categories.
  3. When all Workflows complete, Certification is marked Succeeded or Failed.
  4. Failed nodes are recorded in ConfigMaps referenced by status.categoryStatuses[].failedNodesRef. CRE does not taint or cordon nodes.