1apiVersion: apiextensions.k8s.io/v1
2kind: CustomResourceDefinition
3metadata:
4 name: shipments.warehouse.edge.ncr.com
5 annotations:
6 controller-gen.kubebuilder.io/version: (unknown)
7spec:
8 group: warehouse.edge.ncr.com
9 names:
10 kind: Shipment
11 listKind: ShipmentList
12 plural: shipments
13 singular: shipment
14 scope: Cluster
15 versions:
16 - name: v1alpha1
17 additionalPrinterColumns:
18 - name: Age
19 type: date
20 jsonPath: .metadata.creationTimestamp
21 - name: Ready
22 type: string
23 jsonPath: .status.conditions[?(@.type=="Ready")].status
24 - name: Status
25 type: string
26 jsonPath: .status.conditions[?(@.type=="Ready")].message
27 schema:
28 openAPIV3Schema:
29 type: object
30 description: Shipment is one or more Pallets that will be unpacked and scheduled to the cluster.
31 properties:
32 apiVersion:
33 type: string
34 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'
35 kind:
36 type: string
37 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'
38 metadata:
39 type: object
40 spec:
41 type: object
42 properties:
43 creds:
44 type: object
45 description: Credentials is an optional secret reference pointing to a secret containing registry credentials. The secret must be of type kubernetes.io/dockerconfigjson
46 properties:
47 name:
48 type: string
49 description: name is unique within a namespace to reference a secret resource.
50 namespace:
51 type: string
52 description: namespace defines the space within which the secret name must be unique.
53 force:
54 type: boolean
55 default: false
56 description: Force indicates whether or not objects should be forced by deleting and re-creating when there is a conflict due to immutable fields changing.
57 interval:
58 type: string
59 default: 60s
60 description: Interval is how often the object will be reconciled, in order to prevent drift.
61 pallets:
62 type: array
63 description: "Pallets is the set of Pallet packages that will be pulled and reconciled, without the repository string. Each Pallet reference is completed from the Repository field. \n All Pallets are resolved into a single, deduped graph to ensure that there is no more than one version of a package. How conflicts are resolved is configurable via Resolution"
64 items:
65 type: object
66 description: BaseArtifact describes a reference to a Warehouse package without a repository that can be embedded in a K8s resource spec.
67 properties:
68 name:
69 type: string
70 description: Name is the unique package name for the Warehouse package. It is appended to the provided Repository to produce the full repository string, e.g., gcr.io/foo/bar, where bar is the name of the package and gcr.io/foo is the provided Repository string
71 digest:
72 type: string
73 description: Digest is the sha256 digest of the OCI artifact to apply to the cluster. Takes precedence over tag if set.
74 tag:
75 type: string
76 description: Tag is a mutable reference to the OCI artifact to apply. Defaults to "latest" if neither Tag or Digest are set.
77 required:
78 - name
79 minItems: 1
80 prune:
81 type: boolean
82 description: Prune indicates whether or not objects should be pruned between reconciles or when the object is deleted. You may want to use this for deployments that you really don't want deleted.
83 rendering:
84 type: array
85 description: Rendering is the configuration controlling how the unpacked K8s manifests are rendered before applying.
86 items:
87 type: object
88 properties:
89 configMapRef:
90 type: object
91 description: ConfigMapRef references a K8s ConfigMap to pull parameters from. Mutually exclusive with Variables.
92 properties:
93 name:
94 type: string
95 description: Name of the referent.
96 maxLength: 253
97 minLength: 1
98 namespace:
99 type: string
100 description: Namespace of the referent, when not specified it acts as LocalObjectReference.
101 maxLength: 253
102 minLength: 1
103 required:
104 - name
105 mapping:
106 type: object
107 additionalProperties:
108 type: string
109 description: 'Mapping of rendering parameters to specific keys in the referenced ConfigMap, e.g.: {gcp_project_id: gcp.projectId} where ''gcp.projectId'' is a key in the ConfigMap.'
110 parameters:
111 type: object
112 additionalProperties:
113 type: string
114 description: Parameters are inlined parameters. Mutually exclusive with ConfigMapRef.
115 repo:
116 type: string
117 description: Repository is the image repository that all Pallets will be pulled from. It MUST be the entire repository string up to the Pallet package name, e.g. gcr.io/foo if packages are gcr.io/foo/bar, gcr.io/foo/bax, ... All packages must come from the same repository because resolving the graph of packages may discover the same digest in multiple repositories. This controller won't make value judgements as to which repository should be used in conflict.
118 resolution:
119 type: object
120 description: Resolution is the rules for resolving conflicts in the resolved graph for the pallets included in this shipment. By default, a Shipment will be marked Stalled if it references a list of pallets which don't produce a consistent (e.g., no conflicting digests) resolved graph.
121 properties:
122 acceptFirst:
123 type: boolean
124 description: AcceptFirst will accept the first digest it encounters for each package during graph resolution. If the package exists in the graph with a differing digest, it is dropped. This is the simplest way to force a set of conflicting packages to produce a consistent graph, but doesn't provide any additional control
125 pins:
126 type: array
127 description: Pins are a mapping of package names to digests that are forced during graph resolution, analogous to pinning transitive dependency versions using `replace` directives in a `go.mod` file.
128 items:
129 type: object
130 description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages.
131 properties:
132 name:
133 type: string
134 digest:
135 type: string
136 description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest())
137 resolvedDigest:
138 type: string
139 description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled.
140 required:
141 - digest
142 - name
143 - resolvedDigest
144 retryInterval:
145 type: string
146 default: 10s
147 description: RetryInterval is how often to retry previously failed reconciliations. Defaults to Interval if not provided.
148 suspend:
149 type: boolean
150 description: This flag tells the controller to suspend subsequent reconciliations, it does not apply to already started reconciliations. Defaults to false.
151 timeout:
152 type: string
153 default: 120s
154 description: Timeout is how long the controller will wait for the applied objects to reconcile.
155 unpack:
156 type: object
157 description: UnpackOptions
158 properties:
159 capabilities:
160 type: array
161 description: Capabilities are additional runtime layers to apply. If Runtime is set to false, this field must be empty.
162 items:
163 type: string
164 infra:
165 type: boolean
166 default: false
167 description: Infra is whether or not to schedule infrastructure objects.
168 infraNamespace:
169 type: string
170 description: InfraNamespace is the K8s namespace the infra objects should be scheduled to. If provided, the metadata.namespace of unpacked infra objects is updated using Kustomize filters on unpack.
171 provider:
172 type: string
173 description: Provider is the K8s cluster provider that should be unpacked. By default, it is the same cluster provider that Lumper was scheduled onto. If Runtime is true, this option cannot be set to a value that conflicts with Lumper's startup configuration (e.g., you cannot schedule non-GKE runtime resources to a GKE cluster)
174 runtime:
175 type: boolean
176 default: false
177 description: Runtime determines if runtime resources should be applied. By default, only the base runtime layer is applied.
178 required:
179 - force
180 - pallets
181 - prune
182 - repo
183 status:
184 type: object
185 default:
186 observedGeneration: -1
187 description: ShipmentStatus contains the readiness of the reconciled resources and an inventory of currently applied resources.
188 properties:
189 conditions:
190 type: array
191 items:
192 type: object
193 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 }"
194 properties:
195 type:
196 type: string
197 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)
198 maxLength: 316
199 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])$
200 status:
201 type: string
202 description: status of the condition, one of True, False, Unknown.
203 enum:
204 - "True"
205 - "False"
206 - Unknown
207 lastTransitionTime:
208 type: string
209 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.
210 format: date-time
211 message:
212 type: string
213 description: message is a human readable message indicating details about the transition. This may be an empty string.
214 maxLength: 32768
215 observedGeneration:
216 type: integer
217 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.
218 format: int64
219 minimum: 0
220 reason:
221 type: string
222 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.
223 maxLength: 1024
224 minLength: 1
225 pattern: ^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$
226 required:
227 - lastTransitionTime
228 - message
229 - reason
230 - status
231 - type
232 inventory:
233 type: object
234 description: Inventory is the K8s resources that this object manages.
235 properties:
236 entries:
237 type: array
238 description: Entries of Kubernetes resource object references.
239 items:
240 type: object
241 description: ResourceRef contains the information necessary to locate a resource within a cluster.
242 properties:
243 id:
244 type: string
245 description: ID is the string representation of the Kubernetes resource object's metadata, in the format '<namespace>_<name>_<group>_<kind>'.
246 v:
247 type: string
248 description: Version is the API version of the Kubernetes resource object's kind.
249 required:
250 - id
251 - v
252 lastApplied:
253 type: array
254 description: LastApplied is the last set of resolved artifacts that were applied.
255 items:
256 type: object
257 description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages.
258 properties:
259 name:
260 type: string
261 digest:
262 type: string
263 description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest())
264 resolvedDigest:
265 type: string
266 description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled.
267 required:
268 - digest
269 - name
270 - resolvedDigest
271 lastAttempted:
272 type: array
273 description: LastAttempted is the last set of resolved artifacts that the controller attempted to apply.
274 items:
275 type: object
276 description: Pin is a specific digest associated with a package name, used to "pin" the package to that digest when resolving package graphs or reflect the result of a resolved set of packages.
277 properties:
278 name:
279 type: string
280 digest:
281 type: string
282 description: Digest is the digest for the package reference (e.g., `shoot:latest`, Pallet.Digest())
283 resolvedDigest:
284 type: string
285 description: ResolvedDigest is the digest of the provider-specific variant pulled from the package based on where it is being scheduled.
286 required:
287 - digest
288 - name
289 - resolvedDigest
290 lastHandledReconcileAt:
291 type: string
292 description: LastHandledReconcileAt holds the value of the most recent reconcile request value, so a change of the annotation value can be detected.
293 observedGeneration:
294 type: integer
295 format: int64
296 served: true
297 storage: true
298 subresources:
299 status: {}
View as plain text