clusterforge/kueue/CustomResourceDefinition_topologies.kueue.x-k8s.io.yaml
2025-10-06 09:34:03 +00:00

96 lines
3.7 KiB
YAML

---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.17.3
labels:
app.kubernetes.io/instance: kueue
app.kubernetes.io/name: kueue
app.kubernetes.io/version: v0.12.3
control-plane: controller-manager
name: topologies.kueue.x-k8s.io
spec:
conversion:
strategy: Webhook
webhook:
clientConfig:
service:
name: kueue-webhook-service
namespace: kueue-system
path: /convert
conversionReviewVersions:
- v1
group: kueue.x-k8s.io
names:
kind: Topology
listKind: TopologyList
plural: topologies
singular: topology
scope: Cluster
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Topology is the Schema for the topology API
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: TopologySpec defines the desired state of Topology
properties:
levels:
description: levels define the levels of topology.
items:
description: TopologyLevel defines the desired state of TopologyLevel
properties:
nodeLabel:
description: |-
nodeLabel indicates the name of the node label for a specific topology
level.
Examples:
- cloud.provider.com/topology-block
- cloud.provider.com/topology-rack
maxLength: 316
minLength: 1
pattern: ^([a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*/)?(([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9])$
type: string
required:
- nodeLabel
type: object
maxItems: 8
minItems: 1
type: array
x-kubernetes-list-type: atomic
x-kubernetes-validations:
- message: field is immutable
rule: self == oldSelf
- message: must be unique
rule: size(self.filter(i, size(self.filter(j, j == i)) > 1)) == 0
- message: the kubernetes.io/hostname label can only be used at the lowest level of topology
rule: size(self.filter(i, i.nodeLabel == 'kubernetes.io/hostname')) == 0 || self[size(self) - 1].nodeLabel == 'kubernetes.io/hostname'
required:
- levels
type: object
required:
- spec
type: object
served: true
storage: true