1---
2apiVersion: apiextensions.k8s.io/v1
3kind: CustomResourceDefinition
4metadata:
5 annotations:
6 controller-gen.kubebuilder.io/version: (unknown)
7 name: unpackedpallets.warehouse.edge.ncr.com
8spec:
9 group: warehouse.edge.ncr.com
10 names:
11 kind: UnpackedPallet
12 listKind: UnpackedPalletList
13 plural: unpackedpallets
14 singular: unpackedpallet
15 scope: Cluster
16 versions:
17 - additionalPrinterColumns:
18 - jsonPath: .status.shortDigest
19 name: Digest
20 type: string
21 - jsonPath: .status.conditions[?(@.type=="Ready")].status
22 name: Ready
23 type: string
24 - jsonPath: .status.conditions[?(@.type=="Ready")].message
25 name: Status
26 type: string
27 - jsonPath: .status.conditions[?(@.type=="Ready")].lastTransitionTime
28 name: Status Age
29 type: date
30 - jsonPath: .spec.suspend
31 name: Suspend
32 type: string
33 - jsonPath: .spec.prune
34 name: Prune
35 priority: 1
36 type: string
37 - jsonPath: .status.shipment
38 name: Shipment
39 priority: 1
40 type: string
41 - jsonPath: .spec.force
42 name: Force
43 priority: 1
44 type: string
45 - jsonPath: .status.dependencies
46 name: Dependencies
47 priority: 1
48 type: string
49 - jsonPath: .metadata.creationTimestamp
50 name: Age
51 type: date
52 deprecated: true
53 name: v1alpha1
54 schema:
55 openAPIV3Schema:
56 description: |-
57 UnpackedPallet is an individual package that will be unpacked and scheduled
58 to the cluster.
59
60
61 Generally, this object shouldn't be created directly, it should be created
62 via Shipment objects, similarly to how a Deployment schedules a ReplicaSet.
63 properties:
64 apiVersion:
65 description: |-
66 APIVersion defines the versioned schema of this representation of an object.
67 Servers should convert recognized schemas to the latest internal value, and
68 may reject unrecognized values.
69 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
70 type: string
71 kind:
72 description: |-
73 Kind is a string value representing the REST resource this object represents.
74 Servers may infer this from the endpoint the client submits requests to.
75 Cannot be updated.
76 In CamelCase.
77 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
78 type: string
79 metadata:
80 type: object
81 spec:
82 properties:
83 creds:
84 description: |-
85 Credentials is an optional secret reference pointing to a secret containing
86 registry credentials. The secret must be of type kubernetes.io/dockerconfigjson
87 properties:
88 name:
89 description: name is unique within a namespace to reference a
90 secret resource.
91 type: string
92 namespace:
93 description: namespace defines the space within which the secret
94 name must be unique.
95 type: string
96 type: object
97 x-kubernetes-map-type: atomic
98 dependsOn:
99 description: |-
100 DependsOn is the list of UnpackedPallets that need to be successfully
101 reconciled first.
102 items:
103 description: |-
104 LocalObjectReference contains enough information to locate the referenced
105 Kubernetes resource object.
106 properties:
107 name:
108 description: Name of the referent.
109 maxLength: 253
110 minLength: 1
111 type: string
112 required:
113 - name
114 type: object
115 type: array
116 digest:
117 description: |-
118 Digest is the sha256 digest of the OCI artifact to apply to the cluster.
119 Takes precedence over tag if set.
120 type: string
121 force:
122 default: false
123 description: |-
124 Force indicates whether or not objects should be forced by deleting and
125 re-creating when there is a conflict due to immutable fields changing.
126 type: boolean
127 interval:
128 default: 60s
129 description: |-
130 Interval is how often the object will be reconciled, in order to prevent
131 drift.
132 type: string
133 name:
134 description: |-
135 Name is the unique Warehouse package name. It is typically equal to the last segment
136 of an image repository string, depending on registry implementation e.g., gcr.io/foo/bar,
137 where bar is the name of the package and gcr.io/foo/bar is the provided Repository string.
138 Or, us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/nested/name where nested/name is
139 the Name and the us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/nested/name is
140 the Repository. An Artifact can not be resolved by Name alone.
141 type: string
142 packagePullOptions:
143 description: |-
144 PackagePullOptions are options used to configure pulling packages
145 from remote registry, memory cache or disk layout.
146 properties:
147 pullPolicy:
148 default: Always
149 description: |-
150 PackagePullPolicy is the strategy used to decide when a package should be pulled
151 from remote registry, memory cache or disk layout
152
153
154 TODO(aw185176): Support "Never" pull policy.
155 enum:
156 - Always
157 - IfNotPresent
158 type: string
159 type: object
160 parameters:
161 additionalProperties:
162 type: string
163 description: |-
164 Parameters are the key/value pairs that will be used while rendering manifests
165 from unpacked pallets.
166 type: object
167 prune:
168 description: |-
169 Prune indicates whether or not objects should be pruned between reconciles
170 or when the object is deleted. You may want to use this for deployments
171 that you really don't want deleted.
172 type: boolean
173 repo:
174 description: |-
175 Repository is the image repository that the tag or digest should be pulled
176 from, e.g., us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/lumperctl
177 type: string
178 retryInterval:
179 default: 10s
180 description: |-
181 RetryInterval is how often to retry previously failed reconciliations. Defaults
182 to Interval if not provided.
183 type: string
184 suspend:
185 description: |-
186 This flag tells the controller to suspend subsequent reconciliations,
187 it does not apply to already started reconciliations. Defaults to false.
188 type: boolean
189 tag:
190 description: |-
191 Tag is a mutable reference to the OCI artifact to apply. Defaults to "latest"
192 if neither Tag or Digest are set.
193 type: string
194 timeout:
195 default: 120s
196 description: |-
197 Timeout is how long the controller will wait for the applied objects to
198 reconcile.
199 type: string
200 unpack:
201 description: UnpackOptions
202 properties:
203 capabilities:
204 description: |-
205 Capabilities are additional runtime layers to apply.
206 If Runtime is set to false, this field must be empty.
207 items:
208 type: string
209 type: array
210 infra:
211 default: false
212 description: Infra is whether or not to schedule infrastructure
213 objects.
214 type: boolean
215 infraNamespace:
216 description: |-
217 InfraNamespace is the K8s namespace the infra objects should be scheduled to.
218 If provided, the metadata.namespace of unpacked infra objects is updated
219 using Kustomize filters on unpack.
220 type: string
221 provider:
222 description: |-
223 Provider is the K8s cluster provider that should be unpacked. By default,
224 it is the same cluster provider that Lumper was scheduled onto. If
225 Runtime is true, this option cannot be set to a value that conflicts with
226 Lumper's startup configuration (e.g., you cannot schedule non-GKE runtime
227 resources to a GKE cluster)
228 type: string
229 runtime:
230 default: false
231 description: |-
232 Runtime determines if runtime resources should be applied. By default,
233 only the base runtime layer is applied.
234 type: boolean
235 type: object
236 required:
237 - force
238 - name
239 - prune
240 - repo
241 type: object
242 status:
243 default:
244 observedGeneration: -1
245 description: |-
246 UnpackedPalletStatus contains the readiness of the reconciled resources and
247 an inventory of currently applied resources.
248 properties:
249 conditions:
250 items:
251 description: "Condition contains details for one aspect of the current
252 state of this API Resource.\n---\nThis struct is intended for
253 direct use as an array at the field path .status.conditions. For
254 example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
255 observations of a foo's current state.\n\t // Known .status.conditions.type
256 are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
257 +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
258 \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
259 patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
260 \ // other fields\n\t}"
261 properties:
262 lastTransitionTime:
263 description: |-
264 lastTransitionTime is the last time the condition transitioned from one status to another.
265 This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
266 format: date-time
267 type: string
268 message:
269 description: |-
270 message is a human readable message indicating details about the transition.
271 This may be an empty string.
272 maxLength: 32768
273 type: string
274 observedGeneration:
275 description: |-
276 observedGeneration represents the .metadata.generation that the condition was set based upon.
277 For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
278 with respect to the current state of the instance.
279 format: int64
280 minimum: 0
281 type: integer
282 reason:
283 description: |-
284 reason contains a programmatic identifier indicating the reason for the condition's last transition.
285 Producers of specific condition types may define expected values and meanings for this field,
286 and whether the values are considered a guaranteed API.
287 The value should be a CamelCase string.
288 This field may not be empty.
289 maxLength: 1024
290 minLength: 1
291 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
292 type: string
293 status:
294 description: status of the condition, one of True, False, Unknown.
295 enum:
296 - "True"
297 - "False"
298 - Unknown
299 type: string
300 type:
301 description: |-
302 type of condition in CamelCase or in foo.example.com/CamelCase.
303 ---
304 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
305 useful (see .node.status.conditions), the ability to deconflict is important.
306 The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
307 maxLength: 316
308 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])$
309 type: string
310 required:
311 - lastTransitionTime
312 - message
313 - reason
314 - status
315 - type
316 type: object
317 type: array
318 dependencies:
319 description: Dependencies is a stringified comman delimited list of
320 type: string
321 inventory:
322 description: |-
323 ResourceInventory contains a list of Kubernetes resource object references
324 that have been applied.
325 properties:
326 entries:
327 description: Entries of Kubernetes resource object references.
328 items:
329 description: ResourceRef contains the information necessary
330 to locate a resource within a cluster.
331 properties:
332 id:
333 description: |-
334 ID is the string representation of the Kubernetes resource object's metadata,
335 in the format '<namespace>_<name>_<group>_<kind>'.
336 type: string
337 v:
338 description: Version is the API version of the Kubernetes
339 resource object's kind.
340 type: string
341 required:
342 - id
343 - v
344 type: object
345 type: array
346 type: object
347 lastApplied:
348 description: |-
349 LastApplied is the digest of the last artifact the controller successfully
350 applied.
351 type: string
352 lastAttempted:
353 description: |-
354 LastAttempted is the digest of the last artifact the controller attempted
355 to applied.
356 type: string
357 lastHandledReconcileAt:
358 description: |-
359 LastHandledReconcileAt holds the value of the most recent
360 reconcile request value, so a change of the annotation value
361 can be detected.
362 type: string
363 observedGeneration:
364 description: |-
365 ObservedGeneration is the object.generation the last time that the controller
366 reconciled the object.
367 format: int64
368 type: integer
369 shipment:
370 description: Shipment is the parent shipment that created the child
371 unpackedpallet
372 type: string
373 shortDigest:
374 description: ShortDigest is a truncated form of the sha256 Digest.
375 type: string
376 statusAge:
377 description: StatusAge contains the time the status of an object was
378 set.
379 format: date-time
380 type: string
381 type: object
382 type: object
383 served: true
384 storage: false
385 subresources:
386 status: {}
387 - additionalPrinterColumns:
388 - jsonPath: .status.shortDigest
389 name: Digest
390 type: string
391 - jsonPath: .status.conditions[?(@.type=="Ready")].status
392 name: Ready
393 type: string
394 - jsonPath: .status.conditions[?(@.type=="Ready")].message
395 name: Status
396 type: string
397 - jsonPath: .status.conditions[?(@.type=="Ready")].lastTransitionTime
398 name: Status Age
399 type: date
400 - jsonPath: .spec.suspend
401 name: Suspend
402 type: string
403 - jsonPath: .spec.prune
404 name: Prune
405 priority: 1
406 type: string
407 - jsonPath: .status.shipment
408 name: Shipment
409 priority: 1
410 type: string
411 - jsonPath: .spec.force
412 name: Force
413 priority: 1
414 type: string
415 - jsonPath: .status.dependencies
416 name: Dependencies
417 priority: 1
418 type: string
419 - jsonPath: .metadata.creationTimestamp
420 name: Age
421 type: date
422 name: v1alpha2
423 schema:
424 openAPIV3Schema:
425 description: |-
426 UnpackedPallet is an individual package that will be unpacked and scheduled
427 to the cluster.
428
429
430 Generally, this object shouldn't be created directly, it should be created
431 via Shipment objects, similarly to how a Deployment schedules a ReplicaSet.
432 properties:
433 apiVersion:
434 description: |-
435 APIVersion defines the versioned schema of this representation of an object.
436 Servers should convert recognized schemas to the latest internal value, and
437 may reject unrecognized values.
438 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources
439 type: string
440 kind:
441 description: |-
442 Kind is a string value representing the REST resource this object represents.
443 Servers may infer this from the endpoint the client submits requests to.
444 Cannot be updated.
445 In CamelCase.
446 More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
447 type: string
448 metadata:
449 type: object
450 spec:
451 properties:
452 creds:
453 description: |-
454 Credentials is an optional secret reference pointing to a secret containing
455 registry credentials. The secret must be of type kubernetes.io/dockerconfigjson
456 properties:
457 name:
458 description: name is unique within a namespace to reference a
459 secret resource.
460 type: string
461 namespace:
462 description: namespace defines the space within which the secret
463 name must be unique.
464 type: string
465 type: object
466 x-kubernetes-map-type: atomic
467 dependsOn:
468 description: |-
469 DependsOn is the list of UnpackedPallets that need to be successfully
470 reconciled first.
471 items:
472 description: |-
473 LocalObjectReference contains enough information to locate the referenced
474 Kubernetes resource object.
475 properties:
476 name:
477 description: Name of the referent.
478 maxLength: 253
479 minLength: 1
480 type: string
481 required:
482 - name
483 type: object
484 type: array
485 digest:
486 description: |-
487 Digest is the sha256 digest of the OCI artifact to apply to the cluster.
488 Takes precedence over tag if set.
489 type: string
490 force:
491 default: false
492 description: |-
493 Force indicates whether or not objects should be forced by deleting and
494 re-creating when there is a conflict due to immutable fields changing.
495 type: boolean
496 interval:
497 default: 60s
498 description: |-
499 Interval is how often the object will be reconciled, in order to prevent
500 drift.
501 type: string
502 name:
503 description: |-
504 Name is the unique Warehouse package name. It is typically equal to the last segment
505 of an image repository string, depending on registry implementation e.g., gcr.io/foo/bar,
506 where bar is the name of the package and gcr.io/foo/bar is the provided Repository string.
507 Or, us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/nested/name where nested/name is
508 the Name and the us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/nested/name is
509 the Repository. An Artifact can not be resolved by Name alone.
510 type: string
511 packagePullOptions:
512 description: |-
513 PackagePullOptions are options used to configure pulling packages
514 from remote registry, memory cache or disk layout.
515 properties:
516 pullPolicy:
517 default: Always
518 description: |-
519 PackagePullPolicy is the strategy used to decide when a package should be pulled
520 from remote registry, memory cache or disk layout
521
522
523 TODO(aw185176): Support "Never" pull policy.
524 enum:
525 - Always
526 - IfNotPresent
527 type: string
528 type: object
529 parameters:
530 additionalProperties:
531 type: string
532 description: |-
533 Parameters are the key/value pairs that will be used while rendering manifests
534 from unpacked pallets.
535 type: object
536 prune:
537 description: |-
538 Prune indicates whether or not objects should be pruned between reconciles
539 or when the object is deleted. You may want to use this for deployments
540 that you really don't want deleted.
541 type: boolean
542 repo:
543 description: |-
544 Repository is the image repository that the tag or digest should be pulled
545 from, e.g., us-east1-docker.pkg.dev/ret-edge-pltf-infra/warehouse/lumperctl
546 type: string
547 retryInterval:
548 default: 10s
549 description: |-
550 RetryInterval is how often to retry previously failed reconciliations. Defaults
551 to Interval if not provided.
552 type: string
553 suspend:
554 description: |-
555 This flag tells the controller to suspend subsequent reconciliations,
556 it does not apply to already started reconciliations. Defaults to false.
557 type: boolean
558 tag:
559 description: |-
560 Tag is a mutable reference to the OCI artifact to apply. Defaults to "latest"
561 if neither Tag or Digest are set.
562 type: string
563 timeout:
564 default: 120s
565 description: |-
566 Timeout is how long the controller will wait for the applied objects to
567 reconcile.
568 type: string
569 unpack:
570 description: UnpackOptions
571 properties:
572 capabilities:
573 description: |-
574 Capabilities are additional runtime layers to apply.
575 If Runtime is set to false, this field must be empty.
576 items:
577 type: string
578 type: array
579 infra:
580 default: false
581 description: Infra is whether or not to schedule infrastructure
582 objects.
583 type: boolean
584 infraNamespace:
585 description: |-
586 InfraNamespace is the K8s namespace the infra objects should be scheduled to.
587 If provided, the metadata.namespace of unpacked infra objects is updated
588 using Kustomize filters on unpack.
589 type: string
590 provider:
591 description: |-
592 Provider is the K8s cluster provider that should be unpacked. By default,
593 it is the same cluster provider that Lumper was scheduled onto. If
594 Runtime is true, this option cannot be set to a value that conflicts with
595 Lumper's startup configuration (e.g., you cannot schedule non-GKE runtime
596 resources to a GKE cluster)
597 type: string
598 runtime:
599 default: false
600 description: |-
601 Runtime determines if runtime resources should be applied. By default,
602 only the base runtime layer is applied.
603 type: boolean
604 type: object
605 required:
606 - force
607 - name
608 - prune
609 - repo
610 type: object
611 status:
612 default:
613 observedGeneration: -1
614 description: |-
615 UnpackedPalletStatus contains the readiness of the reconciled resources and
616 an inventory of currently applied resources.
617 properties:
618 conditions:
619 items:
620 description: "Condition contains details for one aspect of the current
621 state of this API Resource.\n---\nThis struct is intended for
622 direct use as an array at the field path .status.conditions. For
623 example,\n\n\n\ttype FooStatus struct{\n\t // Represents the
624 observations of a foo's current state.\n\t // Known .status.conditions.type
625 are: \"Available\", \"Progressing\", and \"Degraded\"\n\t //
626 +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t
627 \ // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\"
628 patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t
629 \ // other fields\n\t}"
630 properties:
631 lastTransitionTime:
632 description: |-
633 lastTransitionTime is the last time the condition transitioned from one status to another.
634 This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.
635 format: date-time
636 type: string
637 message:
638 description: |-
639 message is a human readable message indicating details about the transition.
640 This may be an empty string.
641 maxLength: 32768
642 type: string
643 observedGeneration:
644 description: |-
645 observedGeneration represents the .metadata.generation that the condition was set based upon.
646 For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date
647 with respect to the current state of the instance.
648 format: int64
649 minimum: 0
650 type: integer
651 reason:
652 description: |-
653 reason contains a programmatic identifier indicating the reason for the condition's last transition.
654 Producers of specific condition types may define expected values and meanings for this field,
655 and whether the values are considered a guaranteed API.
656 The value should be a CamelCase string.
657 This field may not be empty.
658 maxLength: 1024
659 minLength: 1
660 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
661 type: string
662 status:
663 description: status of the condition, one of True, False, Unknown.
664 enum:
665 - "True"
666 - "False"
667 - Unknown
668 type: string
669 type:
670 description: |-
671 type of condition in CamelCase or in foo.example.com/CamelCase.
672 ---
673 Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be
674 useful (see .node.status.conditions), the ability to deconflict is important.
675 The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
676 maxLength: 316
677 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])$
678 type: string
679 required:
680 - lastTransitionTime
681 - message
682 - reason
683 - status
684 - type
685 type: object
686 type: array
687 dependencies:
688 description: Dependencies is a stringified comman delimited list of
689 type: string
690 inventory:
691 description: |-
692 ResourceInventory contains a list of Kubernetes resource object references
693 that have been applied.
694 properties:
695 entries:
696 description: Entries of Kubernetes resource object references.
697 items:
698 description: ResourceRef contains the information necessary
699 to locate a resource within a cluster.
700 properties:
701 id:
702 description: |-
703 ID is the string representation of the Kubernetes resource object's metadata,
704 in the format '<namespace>_<name>_<group>_<kind>'.
705 type: string
706 v:
707 description: Version is the API version of the Kubernetes
708 resource object's kind.
709 type: string
710 required:
711 - id
712 - v
713 type: object
714 type: array
715 type: object
716 lastApplied:
717 description: |-
718 LastApplied is the digest of the last artifact the controller successfully
719 applied.
720 type: string
721 lastAttempted:
722 description: |-
723 LastAttempted is the digest of the last artifact the controller attempted
724 to applied.
725 type: string
726 lastHandledReconcileAt:
727 description: |-
728 LastHandledReconcileAt holds the value of the most recent
729 reconcile request value, so a change of the annotation value
730 can be detected.
731 type: string
732 observedGeneration:
733 description: |-
734 ObservedGeneration is the object.generation the last time that the controller
735 reconciled the object.
736 format: int64
737 type: integer
738 shipment:
739 description: Shipment is the parent shipment that created the child
740 unpackedpallet
741 type: string
742 shortDigest:
743 description: ShortDigest is a truncated form of the sha256 Digest.
744 type: string
745 statusAge:
746 description: StatusAge contains the time the status of an object was
747 set.
748 format: date-time
749 type: string
750 type: object
751 type: object
752 served: true
753 storage: true
754 subresources:
755 status: {}
View as plain text