-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathonload.amd.com_onloads.yaml
294 lines (294 loc) · 14.7 KB
/
onload.amd.com_onloads.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
# SPDX-License-Identifier: MIT
# SPDX-FileCopyrightText: (c) Copyright 2023 Advanced Micro Devices, Inc.
---
apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
annotations:
controller-gen.kubebuilder.io/version: v0.12.1
name: onloads.onload.amd.com
spec:
group: onload.amd.com
names:
kind: Onload
listKind: OnloadList
plural: onloads
singular: onload
scope: Namespaced
versions:
- name: v1alpha1
schema:
openAPIV3Schema:
description: Onload is the Schema for the onloads 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: Spec is the top-level specification for Onload and related
products that are controlled by the Onload Operator
properties:
devicePlugin:
description: DevicePlugin is further specification for the Onload
Device Plugin which uses the device plugin framework to provide
an `amd.com/onload` resource. Image location is not configured here;
see Onload Operator deployment.
properties:
baseMountPath:
default: /opt/onload
description: BaseMountPath is a prefix to be applied to all Onload
file mounts in the container's filesystem.
type: string
binMountPath:
default: /usr/bin
description: BinMountPath is the location to mount Onload binaries
in the container's filesystem.
type: string
hostOnloadPath:
default: /opt/onload/
description: HostOnloadPath is the base location of Onload files
on the host filesystem.
type: string
imagePullPolicy:
description: 'ImagePullPolicy is the policy used when pulling
images. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
type: string
libMounthPath:
default: /usr/lib64
description: LibMountPath is the location to mount Onload libraries
in the container's filesystem.
type: string
maxPodsPerNode:
default: 100
description: MaxPodsPerNode is the number of Kubernetes devices
that the Onload Device Plugin should register with the kubelet.
Notionally this is equivalent to the number of pods that can
request an Onload resource on each node.
type: integer
mountOnload:
default: false
description: MountOnload is used by the Onload Device Plugin to
decide whether to mount the `onload` script as a file in the
container's filesystem. `onload` is mounted at `<baseMountPath>/<binMountpath>`
Mutually exclusive with Preload
type: boolean
setPreload:
default: true
description: Preload determines whether the Onload Device Plugin
will set LD_PRELOAD for pods using Onload. Mutually exclusive
with MountOnload
type: boolean
type: object
x-kubernetes-validations:
- message: SetPreload and MountOnload mutually exclusive
rule: '!(self.setPreload && self.mountOnload)'
onload:
description: Onload is the specification of the version of Onload
to be used by this CR
properties:
controlPlane:
description: ControlPlane allows fine-tuning of the Onload control
plane server.
properties:
parameters:
default:
- -K
description: Parameters is an optional list of parameters
passed to the Onload control plane server when launched
by the Onload kernel module.
items:
type: string
type: array
type: object
imagePullPolicy:
description: 'ImagePullPolicy is the policy used when pulling
images. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images'
type: string
kernelMappings:
description: KernelMappings is a list of pairs of kernel versions
and container images. This allows for flexibility when there
are heterogenous kernel versions on the nodes in the cluster.
items:
properties:
build:
description: Build specifies the parameters that are to
be passed to the Kernel Module Management operator when
building the images that contain the module. The build
process creates a new image which will be written to the
location specified by the `KernelModuleImage` parameter.
If empty, no builds will take place.
properties:
buildArgs:
description: BuildArgs is an array of build variables
that are provided to the image building backend.
items:
description: BuildArg represents a build argument
used when building a container image.
properties:
name:
type: string
value:
type: string
required:
- name
- value
type: object
type: array
dockerfileConfigMap:
description: ConfigMap that holds Dockerfile contents
properties:
name:
description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
TODO: Add other useful fields. apiVersion, kind,
uid?'
type: string
type: object
x-kubernetes-map-type: atomic
required:
- dockerfileConfigMap
type: object
kernelModuleImage:
description: KernelModuleImage is the image that contains
the out-of-tree kernel modules used by Onload. Absent
image tags may be built by KMM.
type: string
regexp:
description: Regexp is a regular expression that is used
to match against the kernel versions of the nodes in the
cluster. Use also in place of literal strings.
type: string
sfc:
description: SFC optionally specifies that the controller
will manage the SFC kernel module. Incompatible with boot-time
loading approaches.
type: object
required:
- kernelModuleImage
- regexp
type: object
type: array
userImage:
description: UserImage is the image that contains the built userland
objects, used within the Onload Device Plugin DaemonSet.
type: string
version:
description: Version string to associate with this Onload CR.
type: string
required:
- kernelMappings
- userImage
- version
type: object
selector:
additionalProperties:
type: string
description: Selector defines the set of nodes that this Onload CR
will run on.
type: object
serviceAccountName:
description: ServiceAccountName is the name of the service account
that the objects created by the Onload Operator will use.
type: string
required:
- devicePlugin
- onload
- selector
- serviceAccountName
type: object
status:
description: Status contains the statuses for Onload and related products
that are controlled by the Onload Operator
properties:
conditions:
description: Conditions store the status conditions of Onload
items:
description: "Condition contains details for one aspect of the current
state of this API Resource. --- This struct is intended for direct
use as an array at the field path .status.conditions. For example,
\n type FooStatus struct{ // Represents the observations of a
foo's current state. // Known .status.conditions.type are: \"Available\",
\"Progressing\", and \"Degraded\" // +patchMergeKey=type // +patchStrategy=merge
// +listType=map // +listMapKey=type Conditions []metav1.Condition
`json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\"
protobuf:\"bytes,1,rep,name=conditions\"` \n // other fields }"
properties:
lastTransitionTime:
description: lastTransitionTime is the last time the condition
transitioned from one status to another. This should be when
the underlying condition changed. If that is not known, then
using the time when the API field changed is acceptable.
format: date-time
type: string
message:
description: message is a human readable message indicating
details about the transition. This may be an empty string.
maxLength: 32768
type: string
observedGeneration:
description: observedGeneration represents the .metadata.generation
that the condition was set based upon. For instance, if .metadata.generation
is currently 12, but the .status.conditions[x].observedGeneration
is 9, the condition is out of date with respect to the current
state of the instance.
format: int64
minimum: 0
type: integer
reason:
description: reason contains a programmatic identifier indicating
the reason for the condition's last transition. Producers
of specific condition types may define expected values and
meanings for this field, and whether the values are considered
a guaranteed API. The value should be a CamelCase string.
This field may not be empty.
maxLength: 1024
minLength: 1
pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
type: string
status:
description: status of the condition, one of True, False, Unknown.
enum:
- "True"
- "False"
- Unknown
type: string
type:
description: type of condition in CamelCase or in foo.example.com/CamelCase.
--- Many .condition.type values are consistent across resources
like Available, but because arbitrary conditions can be useful
(see .node.status.conditions), the ability to deconflict is
important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
maxLength: 316
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:
- lastTransitionTime
- message
- reason
- status
- type
type: object
type: array
devicePlugin:
description: Status of Onload Device Plugin
type: object
onload:
description: Status of Onload components
type: object
required:
- devicePlugin
- onload
type: object
type: object
served: true
storage: true
subresources:
status: {}