diff --git a/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigrevisions.yaml b/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigrevisions.yaml index 26e82748c..af063fae7 100644 --- a/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigrevisions.yaml +++ b/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigrevisions.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.11.3" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "envoyconfigrevisions.marin3r.3scale.net" spec: group: "marin3r.3scale.net" @@ -42,13 +42,13 @@ spec: name: "v1alpha1" schema: openAPIV3Schema: - description: "EnvoyConfigRevision is an internal resource that stores a specific version of an EnvoyConfig resource. EnvoyConfigRevisions are automatically created and deleted by the EnvoyConfig controller and are not intended to be directly used. Use EnvoyConfig objects instead." + description: "EnvoyConfigRevision is an internal resource that stores a specific version of an EnvoyConfig\nresource. EnvoyConfigRevisions are automatically created and deleted by the EnvoyConfig\ncontroller and are not intended to be directly used. Use EnvoyConfig objects instead." 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -64,12 +64,12 @@ spec: description: "EnvoyResources holds the different types of resources suported by the envoy discovery service" properties: clusters: - description: "Clusters is a list of the envoy Cluster resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto" + description: "Clusters is a list of the envoy Cluster resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -79,12 +79,12 @@ spec: type: "object" type: "array" endpoints: - description: "Endpoints is a list of the envoy ClusterLoadAssignment resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto" + description: "Endpoints is a list of the envoy ClusterLoadAssignment resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -94,12 +94,12 @@ spec: type: "object" type: "array" extensionConfigs: - description: "ExtensionConfigs is a list of the envoy ExtensionConfig resource type API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto" + description: "ExtensionConfigs is a list of the envoy ExtensionConfig resource type\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -109,12 +109,12 @@ spec: type: "object" type: "array" listeners: - description: "Listeners is a list of the envoy Listener resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto" + description: "Listeners is a list of the envoy Listener resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -124,12 +124,12 @@ spec: type: "object" type: "array" routes: - description: "Routes is a list of the envoy Route resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto" + description: "Routes is a list of the envoy Route resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -139,12 +139,12 @@ spec: type: "object" type: "array" runtimes: - description: "Runtimes is a list of the envoy Runtime resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto" + description: "Runtimes is a list of the envoy Runtime resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -154,12 +154,12 @@ spec: type: "object" type: "array" scopedRoutes: - description: "ScopedRoutes is a list of the envoy ScopeRoute resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto" + description: "ScopedRoutes is a list of the envoy ScopeRoute resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -171,13 +171,13 @@ spec: secrets: description: "Secrets is a list of references to Kubernetes Secret objects." items: - description: "EnvoySecretResource holds a reference to a k8s Secret from where to take a secret from. Only Secrets within the same namespace can be referred." + description: "EnvoySecretResource holds a reference to a k8s Secret from where\nto take a secret from. Only Secrets within the same namespace can\nbe referred." properties: name: - description: "Name of the envoy tslCerticate secret resource. The certificate will be fetched from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name." + description: "Name of the envoy tslCerticate secret resource. The certificate will be fetched\nfrom a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name." type: "string" ref: - description: "DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field." + description: "DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the\nKubernetes Secret must match the 'name' field." properties: name: description: "name is unique within a namespace to reference a secret resource." @@ -193,40 +193,40 @@ spec: type: "array" type: "object" nodeID: - description: "NodeID holds the envoy identifier for the discovery service to know which set of resources to send to each of the envoy clients that connect to it." + description: "NodeID holds the envoy identifier for the discovery service to know which set\nof resources to send to each of the envoy clients that connect to it." type: "string" resources: description: "Resources holds the different types of resources suported by the envoy discovery service" items: - description: "Resource holds serialized representation of an envoy resource" + description: "Resource holds serialized representation of an envoy\nresource" properties: blueprint: - description: "Blueprint specifies a template to generate a configuration proto. It is currently only supported to generate secret configuration resources from k8s Secrets" + description: "Blueprint specifies a template to generate a configuration proto. It is currently\nonly supported to generate secret configuration resources from k8s Secrets" enum: - "tlsCertificate" - "validationContext" type: "string" generateFromEndpointSlices: - description: "Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource" + description: "Specifies a label selector to watch for EndpointSlices that will\nbe used to generate the endpoint resource" properties: clusterName: type: "string" selector: - description: "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects." + description: "A label selector is a label query over a set of resources. The result of matchLabels and\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\nlabel selector matches no objects." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -238,7 +238,7 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" @@ -250,7 +250,7 @@ spec: - "targetPort" type: "object" generateFromOpaqueSecret: - description: "The name of a Kubernetes Secret of type \"Opaque\". It will generate an envoy \"generic secret\" proto." + description: "The name of a Kubernetes Secret of type \"Opaque\". It will generate an\nenvoy \"generic secret\" proto." properties: alias: description: "A unique name to refer to the name:key combination" @@ -282,7 +282,7 @@ spec: - "extensionConfig" type: "string" value: - description: "Value is the protobufer message that configures the resource. The proto must match the envoy configuration API v3 specification for the given resource type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types)" + description: "Value is the protobufer message that configures the resource. The proto\nmust match the envoy configuration API v3 specification for the given resource\ntype (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types)" type: "object" x-kubernetes-preserve-unknown-fields: true required: @@ -290,7 +290,7 @@ spec: type: "object" type: "array" serialization: - description: "Serialization specicifies the serialization format used to describe the resources. \"json\" and \"yaml\" are supported. \"json\" is used if unset." + description: "Serialization specicifies the serialization format used to describe the resources. \"json\" and \"yaml\"\nare supported. \"json\" is used if unset." enum: - "json" - "b64json" @@ -309,23 +309,23 @@ spec: conditions: description: "Conditions represent the latest available observations of an object's state" 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 }" + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" 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." + description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis 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." + description: "message is a human readable message indicating details about the transition.\nThis 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." + description: "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance." format: "int64" minimum: 0.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." + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty." maxLength: 1024 minLength: 1 pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" @@ -338,7 +338,7 @@ spec: - "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)" + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe 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" @@ -351,11 +351,11 @@ spec: type: "object" type: "array" lastPublishedAt: - description: "LastPublishedAt indicates the last time this config review transitioned to published" + description: "LastPublishedAt indicates the last time this config review transitioned to\npublished" format: "date-time" type: "string" providesVersions: - description: "ProvidesVersions keeps track of the version that this revision publishes in the xDS server for each resource type" + description: "ProvidesVersions keeps track of the version that this revision\npublishes in the xDS server for each resource type" properties: clusters: type: "string" @@ -375,10 +375,10 @@ spec: type: "string" type: "object" published: - description: "Published signals if the EnvoyConfigRevision is the one currently published in the xds server cache" + description: "Published signals if the EnvoyConfigRevision is the one currently published\nin the xds server cache" type: "boolean" tainted: - description: "Tainted indicates whether the EnvoyConfigRevision is eligible for publishing or not" + description: "Tainted indicates whether the EnvoyConfigRevision is eligible for publishing\nor not" type: "boolean" type: "object" type: "object" diff --git a/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigs.yaml b/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigs.yaml index b65b93d11..360d5fc4b 100644 --- a/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigs.yaml +++ b/crd-catalog/3scale-ops/marin3r/marin3r.3scale.net/v1alpha1/envoyconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.11.3" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "envoyconfigs.marin3r.3scale.net" spec: group: "marin3r.3scale.net" @@ -34,13 +34,13 @@ spec: name: "v1alpha1" schema: openAPIV3Schema: - description: "EnvoyConfig holds the configuration for a given envoy nodeID. The spec of an EnvoyConfig object holds the Envoy resources that conform the desired configuration for the given nodeID and that the discovery service will send to any envoy client that identifies itself with that nodeID." + description: "EnvoyConfig holds the configuration for a given envoy nodeID. The spec of an EnvoyConfig\nobject holds the Envoy resources that conform the desired configuration for the given nodeID\nand that the discovery service will send to any envoy client that identifies itself with that\nnodeID." 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -53,15 +53,15 @@ spec: - "v3" type: "string" envoyResources: - description: "EnvoyResources holds the different types of resources suported by the envoy discovery service DEPRECATED. Use the `resources` field instead." + description: "EnvoyResources holds the different types of resources suported by the envoy discovery service\nDEPRECATED. Use the `resources` field instead." properties: clusters: - description: "Clusters is a list of the envoy Cluster resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto" + description: "Clusters is a list of the envoy Cluster resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -71,12 +71,12 @@ spec: type: "object" type: "array" endpoints: - description: "Endpoints is a list of the envoy ClusterLoadAssignment resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto" + description: "Endpoints is a list of the envoy ClusterLoadAssignment resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -86,12 +86,12 @@ spec: type: "object" type: "array" extensionConfigs: - description: "ExtensionConfigs is a list of the envoy ExtensionConfig resource type API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto" + description: "ExtensionConfigs is a list of the envoy ExtensionConfig resource type\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -101,12 +101,12 @@ spec: type: "object" type: "array" listeners: - description: "Listeners is a list of the envoy Listener resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto" + description: "Listeners is a list of the envoy Listener resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -116,12 +116,12 @@ spec: type: "object" type: "array" routes: - description: "Routes is a list of the envoy Route resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto" + description: "Routes is a list of the envoy Route resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -131,12 +131,12 @@ spec: type: "object" type: "array" runtimes: - description: "Runtimes is a list of the envoy Runtime resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto" + description: "Runtimes is a list of the envoy Runtime resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -146,12 +146,12 @@ spec: type: "object" type: "array" scopedRoutes: - description: "ScopedRoutes is a list of the envoy ScopeRoute resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto" + description: "ScopedRoutes is a list of the envoy ScopeRoute resource type.\nAPI V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto" items: - description: "EnvoyResource holds serialized representation of an envoy resource" + description: "EnvoyResource holds serialized representation of an envoy\nresource" properties: name: - description: "Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type." + description: "Name of the envoy resource.\nDEPRECATED: this field has no effect and will be removed in an\nupcoming release. The name of the resources for discovery purposes\nis included in the resource itself. Refer to the envoy API reference\nto check how the name is specified for each resource type." type: "string" value: description: "Value is the serialized representation of the envoy resource" @@ -163,13 +163,13 @@ spec: secrets: description: "Secrets is a list of references to Kubernetes Secret objects." items: - description: "EnvoySecretResource holds a reference to a k8s Secret from where to take a secret from. Only Secrets within the same namespace can be referred." + description: "EnvoySecretResource holds a reference to a k8s Secret from where\nto take a secret from. Only Secrets within the same namespace can\nbe referred." properties: name: - description: "Name of the envoy tslCerticate secret resource. The certificate will be fetched from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name." + description: "Name of the envoy tslCerticate secret resource. The certificate will be fetched\nfrom a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name." type: "string" ref: - description: "DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field." + description: "DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the\nKubernetes Secret must match the 'name' field." properties: name: description: "name is unique within a namespace to reference a secret resource." @@ -185,40 +185,40 @@ spec: type: "array" type: "object" nodeID: - description: "NodeID holds the envoy identifier for the discovery service to know which set of resources to send to each of the envoy clients that connect to it." + description: "NodeID holds the envoy identifier for the discovery service to know which set\nof resources to send to each of the envoy clients that connect to it." type: "string" resources: description: "Resources holds the different types of resources suported by the envoy discovery service" items: - description: "Resource holds serialized representation of an envoy resource" + description: "Resource holds serialized representation of an envoy\nresource" properties: blueprint: - description: "Blueprint specifies a template to generate a configuration proto. It is currently only supported to generate secret configuration resources from k8s Secrets" + description: "Blueprint specifies a template to generate a configuration proto. It is currently\nonly supported to generate secret configuration resources from k8s Secrets" enum: - "tlsCertificate" - "validationContext" type: "string" generateFromEndpointSlices: - description: "Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource" + description: "Specifies a label selector to watch for EndpointSlices that will\nbe used to generate the endpoint resource" properties: clusterName: type: "string" selector: - description: "A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects." + description: "A label selector is a label query over a set of resources. The result of matchLabels and\nmatchExpressions are ANDed. An empty label selector matches all objects. A null\nlabel selector matches no objects." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -230,7 +230,7 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" @@ -242,7 +242,7 @@ spec: - "targetPort" type: "object" generateFromOpaqueSecret: - description: "The name of a Kubernetes Secret of type \"Opaque\". It will generate an envoy \"generic secret\" proto." + description: "The name of a Kubernetes Secret of type \"Opaque\". It will generate an\nenvoy \"generic secret\" proto." properties: alias: description: "A unique name to refer to the name:key combination" @@ -274,7 +274,7 @@ spec: - "extensionConfig" type: "string" value: - description: "Value is the protobufer message that configures the resource. The proto must match the envoy configuration API v3 specification for the given resource type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types)" + description: "Value is the protobufer message that configures the resource. The proto\nmust match the envoy configuration API v3 specification for the given resource\ntype (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types)" type: "object" x-kubernetes-preserve-unknown-fields: true required: @@ -282,7 +282,7 @@ spec: type: "object" type: "array" serialization: - description: "Serialization specicifies the serialization format used to describe the resources. \"json\" and \"yaml\" are supported. \"json\" is used if unset." + description: "Serialization specicifies the serialization format used to describe the resources. \"json\" and \"yaml\"\nare supported. \"json\" is used if unset." enum: - "json" - "yaml" @@ -294,28 +294,28 @@ spec: description: "EnvoyConfigStatus defines the observed state of EnvoyConfig" properties: cacheState: - description: "CacheState summarizes all the observations about the EnvoyConfig to give the user a concrete idea on the general status of the discovery servie cache. It is intended only for human consumption. Other controllers should relly on conditions to determine the status of the discovery server cache." + description: "CacheState summarizes all the observations about the EnvoyConfig\nto give the user a concrete idea on the general status of the discovery servie cache.\nIt is intended only for human consumption. Other controllers should relly on conditions\nto determine the status of the discovery server cache." type: "string" conditions: description: "Conditions represent the latest available observations of an object's state" 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 }" + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" 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." + description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis 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." + description: "message is a human readable message indicating details about the transition.\nThis 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." + description: "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance." format: "int64" minimum: 0.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." + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty." maxLength: 1024 minLength: 1 pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" @@ -328,7 +328,7 @@ spec: - "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)" + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe 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" @@ -341,39 +341,39 @@ spec: type: "object" type: "array" desiredVersion: - description: "DesiredVersion represents the resources version described in the spec of the EnvoyConfig object" + description: "DesiredVersion represents the resources version described in\nthe spec of the EnvoyConfig object" type: "string" publishedVersion: - description: "PublishedVersion is the config version currently served by the envoy discovery service for the give nodeID" + description: "PublishedVersion is the config version currently\nserved by the envoy discovery service for the give nodeID" type: "string" revisions: - description: "ConfigRevisions is an ordered list of references to EnvoyConfigRevision objects" + description: "ConfigRevisions is an ordered list of references to EnvoyConfigRevision\nobjects" items: description: "ConfigRevisionRef holds a reference to EnvoyConfigRevision object" properties: ref: - description: "Ref is a reference to the EnvoyConfigRevision object that holds the configuration matching the Version field." + description: "Ref is a reference to the EnvoyConfigRevision object that\nholds the configuration matching the Version field." properties: apiVersion: description: "API version of the referent." type: "string" fieldPath: - description: "If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: \"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered the event) or if no container name is specified \"spec.containers[2]\" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future." + description: "If referring to a piece of an object instead of an entire object, this string\nshould contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2].\nFor example, if the object reference is to a container within a pod, this would take on a value like:\n\"spec.containers{name}\" (where \"name\" refers to the name of the container that triggered\nthe event) or if no container name is specified \"spec.containers[2]\" (container with\nindex 2 in this pod). This syntax is chosen only to have some well-defined way of\nreferencing a part of an object.\nTODO: this design is not final and this field is subject to change in the future." type: "string" kind: - description: "Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" + description: "Kind of the referent.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" name: - description: "Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" namespace: - description: "Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" + description: "Namespace of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/" type: "string" resourceVersion: - description: "Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" + description: "Specific resourceVersion to which this reference is made, if any.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency" type: "string" uid: - description: "UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" + description: "UID of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids" type: "string" type: "object" x-kubernetes-map-type: "atomic" diff --git a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservicecertificates.yaml b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservicecertificates.yaml index fbe9215dd..0d6000baa 100644 --- a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservicecertificates.yaml +++ b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservicecertificates.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.11.3" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "discoveryservicecertificates.operator.marin3r.3scale.net" spec: group: "operator.marin3r.3scale.net" @@ -28,13 +28,13 @@ spec: name: "v1alpha1" schema: openAPIV3Schema: - description: "DiscoveryServiceCertificate is an internal resource used to create certificates. This resource is used by the DiscoveryService controller to create the required certificates for the different components. Direct use of DiscoveryServiceCertificate objects is discouraged." + description: "DiscoveryServiceCertificate is an internal resource used to create certificates. This resource\nis used by the DiscoveryService controller to create the required certificates for the different\ncomponents. Direct use of DiscoveryServiceCertificate objects is discouraged." 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -42,7 +42,7 @@ spec: description: "DiscoveryServiceCertificateSpec defines the desired state of DiscoveryServiceCertificate" properties: certificateRenewal: - description: "CertificateRenewalConfig configures the certificate renewal process. If unset default behavior is to renew the certificate but not notify of renewals." + description: "CertificateRenewalConfig configures the certificate renewal process. If unset default\nbehavior is to renew the certificate but not notify of renewals." properties: enabled: description: "Enabled is a flag to enable or disable renewal of the certificate" @@ -54,7 +54,7 @@ spec: description: "CommonName is the CommonName of the certificate" type: "string" hosts: - description: "Hosts is the list of hosts the certificate is valid for. Only use when 'IsServerCertificate' is true. If unset, the CommonName field will be used to populate the valid hosts of the certificate." + description: "Hosts is the list of hosts the certificate is valid for. Only\nuse when 'IsServerCertificate' is true. If unset, the CommonName\nfield will be used to populate the valid hosts of the certificate." items: type: "string" type: "array" @@ -62,7 +62,7 @@ spec: description: "IsCA is a boolean specifying that the certificate is a CA" type: "boolean" secretRef: - description: "SecretRef is a reference to the secret that will hold the certificate and the private key." + description: "SecretRef is a reference to the secret that will hold the certificate\nand the private key." properties: name: description: "name is unique within a namespace to reference a secret resource." @@ -73,10 +73,10 @@ spec: type: "object" x-kubernetes-map-type: "atomic" server: - description: "IsServerCertificate is a boolean specifying if the certificate should be issued with server auth usage enabled" + description: "IsServerCertificate is a boolean specifying if the certificate should be\nissued with server auth usage enabled" type: "boolean" signer: - description: "Signer specifies the signer to use to create this certificate. Supported signers are CertManager and SelfSigned." + description: "Signer specifies the signer to use to create this certificate. Supported\nsigners are CertManager and SelfSigned." properties: caSigned: description: "CASigned holds specific configuration for the CASigned signer" @@ -113,28 +113,28 @@ spec: description: "DiscoveryServiceCertificateStatus defines the observed state of DiscoveryServiceCertificate" properties: certificateHash: - description: "CertificateHash stores the current hash of the certificate. It is used for other controllers to validate if a certificate has been re-issued." + description: "CertificateHash stores the current hash of the certificate. It is used\nfor other controllers to validate if a certificate has been re-issued." type: "string" conditions: description: "Conditions represent the latest available observations of an object's state" 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 }" + description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" 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." + description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis 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." + description: "message is a human readable message indicating details about the transition.\nThis 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." + description: "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance." format: "int64" minimum: 0.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." + description: "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis field may not be empty." maxLength: 1024 minLength: 1 pattern: "^[A-Za-z]([A-Za-z0-9_,:]*[A-Za-z0-9_])?$" @@ -147,7 +147,7 @@ spec: - "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)" + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe 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" @@ -164,7 +164,7 @@ spec: format: "date-time" type: "string" notBefore: - description: "NotBefore is the time at which the certificate starts being valid" + description: "NotBefore is the time at which the certificate starts\nbeing valid" format: "date-time" type: "string" ready: diff --git a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservices.yaml b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservices.yaml index e346b8b69..9c5341910 100644 --- a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservices.yaml +++ b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/discoveryservices.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.11.3" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "discoveryservices.operator.marin3r.3scale.net" spec: group: "operator.marin3r.3scale.net" @@ -16,13 +16,13 @@ spec: - name: "v1alpha1" schema: openAPIV3Schema: - description: "DiscoveryService represents an envoy discovery service server. Only one instance per namespace is currently supported." + description: "DiscoveryService represents an envoy discovery service server. Only one\ninstance per namespace is currently supported." 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -30,7 +30,7 @@ spec: description: "DiscoveryServiceSpec defines the desired state of DiscoveryService" properties: debug: - description: "Debug enables debugging log level for the discovery service controllers. It is safe to use since secret data is never shown in the logs." + description: "Debug enables debugging log level for the discovery service controllers. It is safe to\nuse since secret data is never shown in the logs." type: "boolean" image: description: "Image holds the image to use for the discovery service Deployment" @@ -40,10 +40,10 @@ spec: format: "int32" type: "integer" pkiConfg: - description: "PKIConfig has configuration for the PKI that marin3r manages for the different certificates it requires" + description: "PKIConfig has configuration for the PKI that marin3r manages for the\ndifferent certificates it requires" properties: rootCertificateAuthority: - description: "CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server." + description: "CertificateOptions specifies options to generate the server certificate used both\nfor the xDS server and the mutating webhook server." properties: duration: type: "string" @@ -54,7 +54,7 @@ spec: - "secretName" type: "object" serverCertificate: - description: "CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server." + description: "CertificateOptions specifies options to generate the server certificate used both\nfor the xDS server and the mutating webhook server." properties: duration: type: "string" @@ -76,15 +76,15 @@ spec: format: "int32" type: "integer" resources: - description: "Resources holds the Resource Requirements to use for the discovery service Deployment. When not set it defaults to no resource requests nor limits. CPU and Memory resources are supported." + description: "Resources holds the Resource Requirements to use for the discovery service\nDeployment. When not set it defaults to no resource requests nor limits.\nCPU and Memory resources are supported." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" required: - "name" @@ -100,7 +100,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -109,7 +109,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" serviceConfig: @@ -139,7 +139,7 @@ spec: format: "int32" type: "integer" collisionCount: - description: "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet." + description: "Count of hash collisions for the Deployment. The Deployment controller uses this\nfield as a collision avoidance mechanism when it needs to create the name for the\nnewest ReplicaSet." format: "int32" type: "integer" conditions: @@ -185,7 +185,7 @@ spec: format: "int32" type: "integer" unavailableReplicas: - description: "Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created." + description: "Total number of unavailable pods targeted by this deployment. This is the total number of\npods that are still required for the deployment to have 100% available capacity. They may\neither be pods that are running but not yet available or pods that still have not been created." format: "int32" type: "integer" updatedReplicas: diff --git a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/envoydeployments.yaml b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/envoydeployments.yaml index 2d81c431a..1df3122a9 100644 --- a/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/envoydeployments.yaml +++ b/crd-catalog/3scale-ops/marin3r/operator.marin3r.3scale.net/v1alpha1/envoydeployments.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.11.3" + controller-gen.kubebuilder.io/version: "v0.14.0" name: "envoydeployments.operator.marin3r.3scale.net" spec: group: "operator.marin3r.3scale.net" @@ -16,13 +16,13 @@ spec: - name: "v1alpha1" schema: openAPIV3Schema: - description: "EnvoyDeployment is a resource to deploy and manage a Kubernetes Deployment of Envoy Pods." + description: "EnvoyDeployment is a resource to deploy and manage a Kubernetes Deployment\nof Envoy Pods." 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -43,9 +43,9 @@ spec: description: "Describes node affinity scheduling rules for the pod." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions; the\nnode(s) with the highest sum are the most preferred." items: - description: "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." + description: "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." properties: preference: description: "A node selector term, associated with the corresponding weight." @@ -53,16 +53,16 @@ spec: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" @@ -74,16 +74,16 @@ spec: matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" @@ -104,26 +104,26 @@ spec: type: "object" type: "array" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: nodeSelectorTerms: description: "Required. A list of node selector terms. The terms are ORed." items: - description: "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm." + description: "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm." properties: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" @@ -135,16 +135,16 @@ spec: matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" @@ -165,7 +165,7 @@ spec: description: "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -173,21 +173,21 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -199,38 +199,38 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -242,23 +242,23 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -267,26 +267,26 @@ spec: type: "object" type: "array" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -298,38 +298,38 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -341,17 +341,17 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" @@ -362,7 +362,7 @@ spec: description: "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe anti-affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -370,21 +370,21 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -396,38 +396,38 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -439,23 +439,23 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -464,26 +464,26 @@ spec: type: "object" type: "array" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -495,38 +495,38 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -538,17 +538,17 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" @@ -557,16 +557,16 @@ spec: type: "object" type: "object" clusterID: - description: "Defines the local service cluster name where Envoy is running. Defaults to the NodeID in the EnvoyConfig if unset" + description: "Defines the local service cluster name where Envoy is running. Defaults\nto the NodeID in the EnvoyConfig if unset" type: "string" discoveryServiceRef: - description: "DiscoveryServiceRef points to a DiscoveryService in the same namespace" + description: "DiscoveryServiceRef points to a DiscoveryService in the same\nnamespace" type: "string" duration: - description: "Defines the duration of the client certificate that is used to authenticate with the DiscoveryService" + description: "Defines the duration of the client certificate that is used to authenticate\nwith the DiscoveryService" type: "string" envoyConfigRef: - description: "EnvoyConfigRef points to an EnvoyConfig in the same namespace that holds the envoy resources for this Deployment" + description: "EnvoyConfigRef points to an EnvoyConfig in the same namespace\nthat holds the envoy resources for this Deployment" type: "string" extraArgs: description: "Allows the user to define extra command line arguments for the Envoy process" @@ -577,7 +577,7 @@ spec: description: "Image is the envoy image and tag to use" type: "string" initManager: - description: "InitManager defines configuration for Envoy's init manager, which handles initialization for Envoy pods" + description: "InitManager defines configuration for Envoy's init\nmanager, which handles initialization for Envoy pods" properties: image: description: "Image is the init manager image and tag to use" @@ -620,13 +620,13 @@ spec: anyOf: - type: "integer" - type: "string" - description: "An eviction is allowed if at most \"maxUnavailable\" pods selected by \"selector\" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with \"minAvailable\"." + description: "An eviction is allowed if at most \"maxUnavailable\" pods selected by\n\"selector\" are unavailable after the eviction, i.e. even in absence of\nthe evicted pod. For example, one can prevent all voluntary evictions\nby specifying 0. This is a mutually exclusive setting with \"minAvailable\"." x-kubernetes-int-or-string: true minAvailable: anyOf: - type: "integer" - type: "string" - description: "An eviction is allowed if at least \"minAvailable\" pods selected by \"selector\" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying \"100%\"." + description: "An eviction is allowed if at least \"minAvailable\" pods selected by\n\"selector\" will still be available after the eviction, i.e. even in the\nabsence of the evicted pod. So for example you can prevent all voluntary\nevictions by specifying \"100%\"." x-kubernetes-int-or-string: true type: "object" ports: @@ -681,31 +681,31 @@ spec: - "timeoutSeconds" type: "object" replicas: - description: "Replicas configures the number of replicas in the Deployment. One of 'static', 'dynamic' can be set. If both are set, static has precedence." + description: "Replicas configures the number of replicas in the Deployment. One of\n'static', 'dynamic' can be set. If both are set, static has precedence." properties: dynamic: description: "Configure a min and max value for the number of pods to autoscale dynamically." properties: behavior: - description: "behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). If not set, the default HPAScalingRules for scale up and scale down are used." + description: "behavior configures the scaling behavior of the target\nin both Up and Down directions (scaleUp and scaleDown fields respectively).\nIf not set, the default HPAScalingRules for scale up and scale down are used." properties: scaleDown: - description: "scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used)." + description: "scaleDown is scaling policy for scaling Down.\nIf not set, the default value is to allow to scale down to minReplicas pods, with a\n300 second stabilization window (i.e., the highest recommendation for\nthe last 300sec is used)." properties: policies: - description: "policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid" + description: "policies is a list of potential scaling polices which can be used during scaling.\nAt least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid" items: description: "HPAScalingPolicy is a single policy which must hold true for a specified past interval." properties: periodSeconds: - description: "periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min)." + description: "periodSeconds specifies the window of time for which the policy should hold true.\nPeriodSeconds must be greater than zero and less than or equal to 1800 (30 min)." format: "int32" type: "integer" type: description: "type is used to specify the scaling policy." type: "string" value: - description: "value contains the amount of change which is permitted by the policy. It must be greater than zero" + description: "value contains the amount of change which is permitted by the policy.\nIt must be greater than zero" format: "int32" type: "integer" required: @@ -716,30 +716,30 @@ spec: type: "array" x-kubernetes-list-type: "atomic" selectPolicy: - description: "selectPolicy is used to specify which policy should be used. If not set, the default value Max is used." + description: "selectPolicy is used to specify which policy should be used.\nIf not set, the default value Max is used." type: "string" stabilizationWindowSeconds: - description: "stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long)." + description: "stabilizationWindowSeconds is the number of seconds for which past recommendations should be\nconsidered while scaling up or scaling down.\nStabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour).\nIf not set, use the default values:\n- For scale up: 0 (i.e. no stabilization is done).\n- For scale down: 300 (i.e. the stabilization window is 300 seconds long)." format: "int32" type: "integer" type: "object" scaleUp: - description: "scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of: * increase no more than 4 pods per 60 seconds * double the number of pods per 60 seconds No stabilization is used." + description: "scaleUp is scaling policy for scaling Up.\nIf not set, the default value is the higher of:\n * increase no more than 4 pods per 60 seconds\n * double the number of pods per 60 seconds\nNo stabilization is used." properties: policies: - description: "policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid" + description: "policies is a list of potential scaling polices which can be used during scaling.\nAt least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid" items: description: "HPAScalingPolicy is a single policy which must hold true for a specified past interval." properties: periodSeconds: - description: "periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min)." + description: "periodSeconds specifies the window of time for which the policy should hold true.\nPeriodSeconds must be greater than zero and less than or equal to 1800 (30 min)." format: "int32" type: "integer" type: description: "type is used to specify the scaling policy." type: "string" value: - description: "value contains the amount of change which is permitted by the policy. It must be greater than zero" + description: "value contains the amount of change which is permitted by the policy.\nIt must be greater than zero" format: "int32" type: "integer" required: @@ -750,25 +750,25 @@ spec: type: "array" x-kubernetes-list-type: "atomic" selectPolicy: - description: "selectPolicy is used to specify which policy should be used. If not set, the default value Max is used." + description: "selectPolicy is used to specify which policy should be used.\nIf not set, the default value Max is used." type: "string" stabilizationWindowSeconds: - description: "stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long)." + description: "stabilizationWindowSeconds is the number of seconds for which past recommendations should be\nconsidered while scaling up or scaling down.\nStabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour).\nIf not set, use the default values:\n- For scale up: 0 (i.e. no stabilization is done).\n- For scale down: 300 (i.e. the stabilization window is 300 seconds long)." format: "int32" type: "integer" type: "object" type: "object" maxReplicas: - description: "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas." + description: "maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up.\nIt cannot be less that minReplicas." format: "int32" type: "integer" metrics: - description: "metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization." + description: "metrics contains the specifications for which to use to calculate the\ndesired replica count (the maximum replica count across all metrics will\nbe used). The desired replica count is calculated multiplying the\nratio between the target value and the current value by the current\nnumber of pods. Ergo, metrics used must decrease as the pod count is\nincreased, and vice-versa. See the individual metric source types for\nmore information about how each type of metric must respond.\nIf not set, the default metric will be set to 80% average CPU utilization." items: - description: "MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once)." + description: "MetricSpec specifies how to scale based on a single metric\n(only `type` and one other matching field should be set at once)." properties: containerResource: - description: "containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag." + description: "containerResource refers to a resource metric (such as those specified in\nrequests and limits) known to Kubernetes describing a single container in\neach pod of the current scale target (e.g. CPU or memory). Such metrics are\nbuilt in to Kubernetes, and have special scaling options on top of those\navailable to normal per-pod metrics using the \"pods\" source.\nThis is an alpha feature and can be enabled by the HPAContainerMetrics feature flag." properties: container: description: "container is the name of the container in the pods of the scaling target" @@ -780,14 +780,14 @@ spec: description: "target specifies the target value for the given metric" properties: averageUtilization: - description: "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type" + description: "averageUtilization is the target value of the average of the\nresource metric across all relevant pods, represented as a percentage of\nthe requested value of the resource for the pods.\nCurrently only valid for Resource metric source type" format: "int32" type: "integer" averageValue: anyOf: - type: "integer" - type: "string" - description: "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)" + description: "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: @@ -809,7 +809,7 @@ spec: - "target" type: "object" external: - description: "external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster)." + description: "external refers to a global metric that is not associated\nwith any Kubernetes object. It allows autoscaling based on information\ncoming from components running outside of cluster\n(for example length of queue in cloud messaging service, or\nQPS from loadbalancer running outside of cluster)." properties: metric: description: "metric identifies the target metric by name and selector" @@ -818,21 +818,21 @@ spec: description: "name is the name of the given metric" type: "string" selector: - description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics." + description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric\nWhen set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.\nWhen unset, just the metricName will be used to gather metrics." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -844,7 +844,7 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" @@ -855,14 +855,14 @@ spec: description: "target specifies the target value for the given metric" properties: averageUtilization: - description: "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type" + description: "averageUtilization is the target value of the average of the\nresource metric across all relevant pods, represented as a percentage of\nthe requested value of the resource for the pods.\nCurrently only valid for Resource metric source type" format: "int32" type: "integer" averageValue: anyOf: - type: "integer" - type: "string" - description: "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)" + description: "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: @@ -883,7 +883,7 @@ spec: - "target" type: "object" object: - description: "object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object)." + description: "object refers to a metric describing a single kubernetes object\n(for example, hits-per-second on an Ingress object)." properties: describedObject: description: "describedObject specifies the descriptions of a object,such as kind,name apiVersion" @@ -908,21 +908,21 @@ spec: description: "name is the name of the given metric" type: "string" selector: - description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics." + description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric\nWhen set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.\nWhen unset, just the metricName will be used to gather metrics." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -934,7 +934,7 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" @@ -945,14 +945,14 @@ spec: description: "target specifies the target value for the given metric" properties: averageUtilization: - description: "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type" + description: "averageUtilization is the target value of the average of the\nresource metric across all relevant pods, represented as a percentage of\nthe requested value of the resource for the pods.\nCurrently only valid for Resource metric source type" format: "int32" type: "integer" averageValue: anyOf: - type: "integer" - type: "string" - description: "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)" + description: "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: @@ -974,7 +974,7 @@ spec: - "target" type: "object" pods: - description: "pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value." + description: "pods refers to a metric describing each pod in the current scale target\n(for example, transactions-processed-per-second). The values will be\naveraged together before being compared to the target value." properties: metric: description: "metric identifies the target metric by name and selector" @@ -983,21 +983,21 @@ spec: description: "name is the name of the given metric" type: "string" selector: - description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics." + description: "selector is the string-encoded form of a standard kubernetes label selector for the given metric\nWhen set, it is passed as an additional parameter to the metrics server for more specific metrics scoping.\nWhen unset, just the metricName will be used to gather metrics." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" @@ -1009,7 +1009,7 @@ spec: matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" x-kubernetes-map-type: "atomic" @@ -1020,14 +1020,14 @@ spec: description: "target specifies the target value for the given metric" properties: averageUtilization: - description: "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type" + description: "averageUtilization is the target value of the average of the\nresource metric across all relevant pods, represented as a percentage of\nthe requested value of the resource for the pods.\nCurrently only valid for Resource metric source type" format: "int32" type: "integer" averageValue: anyOf: - type: "integer" - type: "string" - description: "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)" + description: "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: @@ -1048,7 +1048,7 @@ spec: - "target" type: "object" resource: - description: "resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the \"pods\" source." + description: "resource refers to a resource metric (such as those specified in\nrequests and limits) known to Kubernetes describing each pod in the\ncurrent scale target (e.g. CPU or memory). Such metrics are built in to\nKubernetes, and have special scaling options on top of those available\nto normal per-pod metrics using the \"pods\" source." properties: name: description: "name is the name of the resource in question." @@ -1057,14 +1057,14 @@ spec: description: "target specifies the target value for the given metric" properties: averageUtilization: - description: "averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type" + description: "averageUtilization is the target value of the average of the\nresource metric across all relevant pods, represented as a percentage of\nthe requested value of the resource for the pods.\nCurrently only valid for Resource metric source type" format: "int32" type: "integer" averageValue: anyOf: - type: "integer" - type: "string" - description: "averageValue is the target value of the average of the metric across all relevant pods (as a quantity)" + description: "averageValue is the target value of the average of the\nmetric across all relevant pods (as a quantity)" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: @@ -1085,14 +1085,14 @@ spec: - "target" type: "object" type: - description: "type is the type of metric source. It should be one of \"ContainerResource\", \"External\", \"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object. Note: \"ContainerResource\" type is available on when the feature-gate HPAContainerMetrics is enabled" + description: "type is the type of metric source. It should be one of \"ContainerResource\", \"External\",\n\"Object\", \"Pods\" or \"Resource\", each mapping to a matching field in the object.\nNote: \"ContainerResource\" type is available on when the feature-gate\nHPAContainerMetrics is enabled" type: "string" required: - "type" type: "object" type: "array" minReplicas: - description: "minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available." + description: "minReplicas is the lower limit for the number of replicas to which the autoscaler\ncan scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the\nalpha feature gate HPAScaleToZero is enabled and at least one Object or External\nmetric is configured. Scaling is active as long as at least one metric value is\navailable." format: "int32" type: "integer" required: @@ -1104,15 +1104,15 @@ spec: type: "integer" type: "object" resources: - description: "Resources holds the resource requirements to use for the Envoy Deployment. Defaults to no resource requests nor limits." + description: "Resources holds the resource requirements to use for the Envoy\nDeployment. Defaults to no resource requests nor limits." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" required: - "name" @@ -1128,7 +1128,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -1137,20 +1137,20 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" shutdownManager: - description: "ShutdownManager defines configuration for Envoy's shutdown manager, which handles graceful termination of Envoy pods" + description: "ShutdownManager defines configuration for Envoy's shutdown\nmanager, which handles graceful termination of Envoy pods" properties: drainStrategy: - description: "The drain strategy for the graceful shutdown. It also affects drain when listeners are modified or removed via LDS." + description: "The drain strategy for the graceful shutdown. It also affects\ndrain when listeners are modified or removed via LDS." enum: - "gradual" - "immediate" type: "string" drainTime: - description: "The time in seconds that Envoy will drain connections during shutdown. It also affects drain behaviour when listeners are modified or removed via LDS." + description: "The time in seconds that Envoy will drain connections during shutdown.\nIt also affects drain behaviour when listeners are modified or removed via LDS." format: "int64" type: "integer" image: @@ -1178,7 +1178,7 @@ spec: format: "int32" type: "integer" collisionCount: - description: "Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet." + description: "Count of hash collisions for the Deployment. The Deployment controller uses this\nfield as a collision avoidance mechanism when it needs to create the name for the\nnewest ReplicaSet." format: "int32" type: "integer" conditions: @@ -1224,7 +1224,7 @@ spec: format: "int32" type: "integer" unavailableReplicas: - description: "Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created." + description: "Total number of unavailable pods targeted by this deployment. This is the total number of\npods that are still required for the deployment to have 100% available capacity. They may\neither be pods that are running but not yet available or pods that still have not been created." format: "int32" type: "integer" updatedReplicas: diff --git a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/authpolicies.yaml b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/authpolicies.yaml index bf7d3c423..4a0ea53b6 100644 --- a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/authpolicies.yaml +++ b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/authpolicies.yaml @@ -26,14 +26,19 @@ spec: name: "Enforced" priority: 2 type: "string" - - description: "Type of the referenced Gateway API resource" + - description: "Kind of the object to which the policy aaplies" jsonPath: ".spec.targetRef.kind" - name: "TargetRefKind" + name: "TargetKind" priority: 2 type: "string" - - description: "Name of the referenced Gateway API resource" + - description: "Name of the object to which the policy applies" jsonPath: ".spec.targetRef.name" - name: "TargetRefName" + name: "TargetName" + priority: 2 + type: "string" + - description: "Name of the section within the object to which the policy applies " + jsonPath: ".spec.targetRef.sectionName" + name: "TargetSection" priority: 2 type: "string" - jsonPath: ".metadata.creationTimestamp" @@ -53,32 +58,36 @@ spec: metadata: type: "object" spec: - description: "Mutual Exclusivity Validation" properties: defaults: - description: "Defaults define explicit default values for this policy and for policies inheriting this policy.\nDefaults are mutually exclusive with implicit defaults defined by AuthPolicyCommonSpec." + description: "Rules to apply as defaults. Can be overridden by more specific policiy rules lower in the hierarchy and by less specific policy overrides.\nUse one of: defaults, overrides, or bare set of policy rules (implicit defaults)." properties: patterns: additionalProperties: - items: - properties: - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." - type: "string" - type: "object" - type: "array" + properties: + allOf: + items: + properties: + operator: + description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" + enum: + - "eq" + - "neq" + - "incl" + - "excl" + - "matches" + type: "string" + selector: + description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." + type: "string" + value: + description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + type: "string" + type: "object" + type: "array" + required: + - "allOf" + type: "object" description: "Named sets of patterns that can be referred in `when` conditions and in pattern-matching authorization policy rules." type: "object" rules: @@ -139,6 +148,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -186,6 +197,8 @@ spec: defaults: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -243,6 +256,8 @@ spec: overrides: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -255,11 +270,11 @@ spec: plain: description: "Identity object extracted from the context.\nUse this method when authentication is performed beforehand by a proxy and the resulting object passed to Authorino as JSON in the auth request." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" - required: - - "selector" type: "object" priority: default: 0 @@ -293,6 +308,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -346,6 +363,7 @@ spec: type: "object" type: "object" description: "Authentication configs.\nAt least one config MUST evaluate to a valid identity object for the auth request to be successful." + maxProperties: 10 type: "object" authorization: additionalProperties: @@ -356,6 +374,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -384,6 +404,8 @@ spec: group: description: "API group of the resource.\nUse '*' for all API groups." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -394,6 +416,8 @@ spec: name: description: "Resource name\nOmit it to check for authorization on all resources of the specified kind." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -404,6 +428,8 @@ spec: namespace: description: "Namespace where the user must have permissions on the resource." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -414,6 +440,8 @@ spec: resource: description: "Resource kind\nUse '*' for all resource kinds." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -424,6 +452,8 @@ spec: subresource: description: "Subresource kind" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -434,6 +464,8 @@ spec: verb: description: "Verb to check for authorization on the resource.\nUse '*' for all verbs." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -445,6 +477,8 @@ spec: user: description: "User to check for authorization in the Kubernetes RBAC.\nOmit it to check for group authorization only." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -470,6 +504,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -480,6 +516,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -529,6 +567,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -612,8 +652,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" rego: description: "Authorization policy as a Rego language document.\nThe Rego document must include the \"allow\" condition, set by Authorino to \"false\" by default (i.e. requests are unauthorized unless changed).\nThe Rego document must NOT include the \"package\" declaration in line 1." @@ -649,6 +689,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -676,6 +718,8 @@ spec: permission: description: "The name of the permission (or relation) on which to execute the check." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -688,6 +732,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -697,6 +743,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -723,6 +771,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -732,6 +782,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -771,6 +823,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -781,6 +835,7 @@ spec: type: "array" type: "object" description: "Authorization policies.\nAll policies MUST evaluate to \"allowed = true\" for the auth request be successful." + maxProperties: 10 type: "object" callbacks: additionalProperties: @@ -791,6 +846,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -811,6 +868,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -821,6 +880,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -870,6 +931,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -950,8 +1013,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -989,6 +1052,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -1001,6 +1066,7 @@ spec: - "http" type: "object" description: "Callback functions.\nAuthorino sends callbacks at the end of the auth pipeline to the endpoints specified in this config." + maxProperties: 10 type: "object" metadata: additionalProperties: @@ -1011,6 +1077,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1031,6 +1099,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1041,6 +1111,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1090,6 +1162,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1170,8 +1244,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -1237,6 +1311,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -1247,6 +1323,7 @@ spec: type: "array" type: "object" description: "Metadata sources.\nAuthorino fetches auth metadata as JSON from sources specified in this config." + maxProperties: 10 type: "object" response: description: "Response items.\nAuthorino builds custom responses to the client of the auth request." @@ -1254,9 +1331,8 @@ spec: success: description: "Response items to be included in the auth response when the request is authenticated and authorized.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata and/or inject data in the request." properties: - dynamicMetadata: + filters: additionalProperties: - description: "Settings of the success custom response item." properties: cache: description: "Caching options for the resolved object returned when applying this config.\nOmit it to avoid caching objects for this config." @@ -1264,6 +1340,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1284,6 +1362,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1305,6 +1385,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1344,6 +1426,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -1358,6 +1442,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1401,7 +1487,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata.\nSee https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata" + description: "Custom data made available to other filters managed by Kuadrant (i.e. Rate Limit)" type: "object" headers: additionalProperties: @@ -1412,6 +1498,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1432,6 +1520,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1453,6 +1543,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1492,6 +1584,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -1506,6 +1600,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1549,7 +1645,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to inject data in the request." + description: "Custom headers to inject in the request." type: "object" type: "object" unauthenticated: @@ -1558,6 +1654,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1574,6 +1672,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1586,6 +1686,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1600,6 +1702,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1616,6 +1720,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1628,6 +1734,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1638,67 +1746,55 @@ spec: type: "object" type: "object" type: "object" + strategy: + default: "atomic" + description: "Strategy defines the merge strategy to apply when merging this policy with other policies." + enum: + - "atomic" + - "merge" + type: "string" when: - description: "Overall conditions for the AuthPolicy to be enforced.\nIf omitted, the AuthPolicy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the AuthPolicy to be enforced; otherwise, the authorization service skips the AuthPolicy and returns to the auth request with status OK." + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." items: + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - all: - description: "A list of pattern expressions to be evaluated as a logical AND." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - any: - description: "A list of pattern expressions to be evaluated as a logical OR." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - patternRef: - description: "Reference to a named set of pattern expressions" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + predicate: + minLength: 1 type: "string" + required: + - "predicate" type: "object" type: "array" type: "object" overrides: - description: "Overrides define explicit override values for this policy.\nOverrides are mutually exclusive with explicit and implicit defaults defined by AuthPolicyCommonSpec." + description: "Rules to apply as overrides. Override all policy rules lower in the hierarchy. Can be overridden by less specific policy overrides.\nUse one of: defaults, overrides, or bare set of policy rules (implicit defaults)." properties: patterns: additionalProperties: - items: - properties: - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." - type: "string" - type: "object" - type: "array" + properties: + allOf: + items: + properties: + operator: + description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" + enum: + - "eq" + - "neq" + - "incl" + - "excl" + - "matches" + type: "string" + selector: + description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." + type: "string" + value: + description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + type: "string" + type: "object" + type: "array" + required: + - "allOf" + type: "object" description: "Named sets of patterns that can be referred in `when` conditions and in pattern-matching authorization policy rules." type: "object" rules: @@ -1759,6 +1855,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1806,6 +1904,8 @@ spec: defaults: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1863,6 +1963,8 @@ spec: overrides: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -1875,11 +1977,11 @@ spec: plain: description: "Identity object extracted from the context.\nUse this method when authentication is performed beforehand by a proxy and the resulting object passed to Authorino as JSON in the auth request." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" - required: - - "selector" type: "object" priority: default: 0 @@ -1913,6 +2015,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -1966,6 +2070,7 @@ spec: type: "object" type: "object" description: "Authentication configs.\nAt least one config MUST evaluate to a valid identity object for the auth request to be successful." + maxProperties: 10 type: "object" authorization: additionalProperties: @@ -1976,6 +2081,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2004,6 +2111,8 @@ spec: group: description: "API group of the resource.\nUse '*' for all API groups." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2014,6 +2123,8 @@ spec: name: description: "Resource name\nOmit it to check for authorization on all resources of the specified kind." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2024,6 +2135,8 @@ spec: namespace: description: "Namespace where the user must have permissions on the resource." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2034,6 +2147,8 @@ spec: resource: description: "Resource kind\nUse '*' for all resource kinds." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2044,6 +2159,8 @@ spec: subresource: description: "Subresource kind" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2054,6 +2171,8 @@ spec: verb: description: "Verb to check for authorization on the resource.\nUse '*' for all verbs." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2065,6 +2184,8 @@ spec: user: description: "User to check for authorization in the Kubernetes RBAC.\nOmit it to check for group authorization only." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2090,6 +2211,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2100,6 +2223,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2149,6 +2274,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2232,8 +2359,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" rego: description: "Authorization policy as a Rego language document.\nThe Rego document must include the \"allow\" condition, set by Authorino to \"false\" by default (i.e. requests are unauthorized unless changed).\nThe Rego document must NOT include the \"package\" declaration in line 1." @@ -2269,6 +2396,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -2296,6 +2425,8 @@ spec: permission: description: "The name of the permission (or relation) on which to execute the check." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2308,6 +2439,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2317,6 +2450,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2343,6 +2478,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2352,6 +2489,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2391,6 +2530,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -2401,6 +2542,7 @@ spec: type: "array" type: "object" description: "Authorization policies.\nAll policies MUST evaluate to \"allowed = true\" for the auth request be successful." + maxProperties: 10 type: "object" callbacks: additionalProperties: @@ -2411,6 +2553,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2431,6 +2575,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2441,6 +2587,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2490,6 +2638,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2570,8 +2720,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -2609,6 +2759,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -2621,6 +2773,7 @@ spec: - "http" type: "object" description: "Callback functions.\nAuthorino sends callbacks at the end of the auth pipeline to the endpoints specified in this config." + maxProperties: 10 type: "object" metadata: additionalProperties: @@ -2631,6 +2784,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2651,6 +2806,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2661,6 +2818,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2710,6 +2869,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2790,8 +2951,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -2857,6 +3018,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -2867,6 +3030,7 @@ spec: type: "array" type: "object" description: "Metadata sources.\nAuthorino fetches auth metadata as JSON from sources specified in this config." + maxProperties: 10 type: "object" response: description: "Response items.\nAuthorino builds custom responses to the client of the auth request." @@ -2874,9 +3038,8 @@ spec: success: description: "Response items to be included in the auth response when the request is authenticated and authorized.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata and/or inject data in the request." properties: - dynamicMetadata: + filters: additionalProperties: - description: "Settings of the success custom response item." properties: cache: description: "Caching options for the resolved object returned when applying this config.\nOmit it to avoid caching objects for this config." @@ -2884,6 +3047,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2904,6 +3069,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2925,6 +3092,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -2964,6 +3133,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -2978,6 +3149,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3021,7 +3194,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata.\nSee https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata" + description: "Custom data made available to other filters managed by Kuadrant (i.e. Rate Limit)" type: "object" headers: additionalProperties: @@ -3032,6 +3205,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3052,6 +3227,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3073,6 +3250,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3112,6 +3291,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -3126,6 +3307,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3169,7 +3352,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to inject data in the request." + description: "Custom headers to inject in the request." type: "object" type: "object" unauthenticated: @@ -3178,6 +3361,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3194,6 +3379,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3206,6 +3393,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3220,6 +3409,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3236,6 +3427,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3248,6 +3441,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3258,64 +3453,52 @@ spec: type: "object" type: "object" type: "object" + strategy: + default: "atomic" + description: "Strategy defines the merge strategy to apply when merging this policy with other policies." + enum: + - "atomic" + - "merge" + type: "string" when: - description: "Overall conditions for the AuthPolicy to be enforced.\nIf omitted, the AuthPolicy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the AuthPolicy to be enforced; otherwise, the authorization service skips the AuthPolicy and returns to the auth request with status OK." + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." items: + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - all: - description: "A list of pattern expressions to be evaluated as a logical AND." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - any: - description: "A list of pattern expressions to be evaluated as a logical OR." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - patternRef: - description: "Reference to a named set of pattern expressions" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + predicate: + minLength: 1 type: "string" + required: + - "predicate" type: "object" type: "array" type: "object" patterns: additionalProperties: - items: - properties: - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." - type: "string" - type: "object" - type: "array" + properties: + allOf: + items: + properties: + operator: + description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" + enum: + - "eq" + - "neq" + - "incl" + - "excl" + - "matches" + type: "string" + selector: + description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." + type: "string" + value: + description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + type: "string" + type: "object" + type: "array" + required: + - "allOf" + type: "object" description: "Named sets of patterns that can be referred in `when` conditions and in pattern-matching authorization policy rules." type: "object" rules: @@ -3376,6 +3559,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3423,6 +3608,8 @@ spec: defaults: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3480,6 +3667,8 @@ spec: overrides: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3492,11 +3681,11 @@ spec: plain: description: "Identity object extracted from the context.\nUse this method when authentication is performed beforehand by a proxy and the resulting object passed to Authorino as JSON in the auth request." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" - required: - - "selector" type: "object" priority: default: 0 @@ -3530,6 +3719,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -3583,6 +3774,7 @@ spec: type: "object" type: "object" description: "Authentication configs.\nAt least one config MUST evaluate to a valid identity object for the auth request to be successful." + maxProperties: 10 type: "object" authorization: additionalProperties: @@ -3593,6 +3785,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3621,6 +3815,8 @@ spec: group: description: "API group of the resource.\nUse '*' for all API groups." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3631,6 +3827,8 @@ spec: name: description: "Resource name\nOmit it to check for authorization on all resources of the specified kind." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3641,6 +3839,8 @@ spec: namespace: description: "Namespace where the user must have permissions on the resource." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3651,6 +3851,8 @@ spec: resource: description: "Resource kind\nUse '*' for all resource kinds." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3661,6 +3863,8 @@ spec: subresource: description: "Subresource kind" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3671,6 +3875,8 @@ spec: verb: description: "Verb to check for authorization on the resource.\nUse '*' for all verbs." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3682,6 +3888,8 @@ spec: user: description: "User to check for authorization in the Kubernetes RBAC.\nOmit it to check for group authorization only." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3707,6 +3915,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3717,6 +3927,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3766,6 +3978,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3849,8 +4063,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" rego: description: "Authorization policy as a Rego language document.\nThe Rego document must include the \"allow\" condition, set by Authorino to \"false\" by default (i.e. requests are unauthorized unless changed).\nThe Rego document must NOT include the \"package\" declaration in line 1." @@ -3886,6 +4100,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -3913,6 +4129,8 @@ spec: permission: description: "The name of the permission (or relation) on which to execute the check." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3925,6 +4143,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3934,6 +4154,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3960,6 +4182,8 @@ spec: properties: kind: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -3969,6 +4193,8 @@ spec: type: "object" name: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4008,6 +4234,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -4018,6 +4246,7 @@ spec: type: "array" type: "object" description: "Authorization policies.\nAll policies MUST evaluate to \"allowed = true\" for the auth request be successful." + maxProperties: 10 type: "object" callbacks: additionalProperties: @@ -4028,6 +4257,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4048,6 +4279,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4058,6 +4291,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4107,6 +4342,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4187,8 +4424,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -4226,6 +4463,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -4238,6 +4477,7 @@ spec: - "http" type: "object" description: "Callback functions.\nAuthorino sends callbacks at the end of the auth pipeline to the endpoints specified in this config." + maxProperties: 10 type: "object" metadata: additionalProperties: @@ -4248,6 +4488,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4268,6 +4510,8 @@ spec: body: description: "Raw body of the HTTP request.\nSupersedes 'bodyParameters'; use either one or the other.\nUse it with method=POST; for GET requests, set parameters as query string in the 'endpoint' (placeholders can be used)." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4278,6 +4522,8 @@ spec: bodyParameters: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4327,6 +4573,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4407,8 +4655,8 @@ spec: url: description: "Endpoint URL of the HTTP service.\nThe value can include variable placeholders in the format \"{selector}\", where \"selector\" is any pattern supported\nby https://pkg.go.dev/github.com/tidwall/gjson and selects value from the authorization JSON.\nE.g. https://ext-auth-server.io/metadata?p={request.path}" type: "string" - required: - - "url" + urlExpression: + type: "string" type: "object" metrics: default: false @@ -4474,6 +4722,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -4484,6 +4734,7 @@ spec: type: "array" type: "object" description: "Metadata sources.\nAuthorino fetches auth metadata as JSON from sources specified in this config." + maxProperties: 10 type: "object" response: description: "Response items.\nAuthorino builds custom responses to the client of the auth request." @@ -4491,9 +4742,8 @@ spec: success: description: "Response items to be included in the auth response when the request is authenticated and authorized.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata and/or inject data in the request." properties: - dynamicMetadata: + filters: additionalProperties: - description: "Settings of the success custom response item." properties: cache: description: "Caching options for the resolved object returned when applying this config.\nOmit it to avoid caching objects for this config." @@ -4501,6 +4751,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4521,6 +4773,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4542,6 +4796,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4581,6 +4837,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -4595,6 +4853,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4638,7 +4898,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to propagate dynamic metadata.\nSee https://www.envoyproxy.io/docs/envoy/latest/configuration/advanced/well_known_dynamic_metadata" + description: "Custom data made available to other filters managed by Kuadrant (i.e. Rate Limit)" type: "object" headers: additionalProperties: @@ -4649,6 +4909,8 @@ spec: key: description: "Key used to store the entry in the cache.\nThe resolved key must be unique within the scope of this particular config." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4669,6 +4931,8 @@ spec: properties: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4690,6 +4954,8 @@ spec: plain: description: "Plain text content" properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4729,6 +4995,8 @@ spec: patternRef: description: "Reference to a named set of pattern expressions" type: "string" + predicate: + type: "string" selector: description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." type: "string" @@ -4743,6 +5011,8 @@ spec: customClaims: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4786,7 +5056,7 @@ spec: - "signingKeyRefs" type: "object" type: "object" - description: "Custom success response items wrapped as HTTP headers.\nFor integration of Authorino via proxy, the proxy must use these settings to inject data in the request." + description: "Custom headers to inject in the request." type: "object" type: "object" unauthenticated: @@ -4795,6 +5065,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4811,6 +5083,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4823,6 +5097,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4837,6 +5113,8 @@ spec: body: description: "HTTP response body to override the default denial body." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4853,6 +5131,8 @@ spec: headers: additionalProperties: properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4865,6 +5145,8 @@ spec: message: description: "HTTP message to override the default denial message." properties: + expression: + type: "string" selector: description: "Simple path selector to fetch content from the authorization JSON (e.g. 'request.method') or a string template with variables that resolve to patterns (e.g. \"Hello, {auth.identity.name}!\").\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nThe following Authorino custom modifiers are supported: @extract:{sep:\" \",pos:0}, @replace{old:\"\",new:\"\"}, @case:upper|lower, @base64:encode|decode and @strip." type: "string" @@ -4876,7 +5158,7 @@ spec: type: "object" type: "object" targetRef: - description: "TargetRef identifies an API object to apply policy to." + description: "Reference to the object to which this policy applies." properties: group: description: "Group is the group of the target resource." @@ -4894,6 +5176,12 @@ spec: maxLength: 253 minLength: 1 type: "string" + sectionName: + description: "SectionName is the name of a section within the target resource. When\nunspecified, this targetRef targets the entire resource. In the following\nresources, SectionName is interpreted as the following:\n\n\n* Gateway: Listener name\n* HTTPRoute: HTTPRouteRule name\n* Service: Port name\n\n\nIf a SectionName is specified, but does not exist on the targeted object,\nthe Policy must fail to attach, and the policy implementation should record\na `ResolvedRefs` or similar Condition in the Policy's status." + maxLength: 253 + minLength: 1 + pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" + type: "string" required: - "group" - "kind" @@ -4905,39 +5193,15 @@ spec: - message: "Invalid targetRef.kind. The only supported values are 'HTTPRoute' and 'Gateway'" rule: "self.kind == 'HTTPRoute' || self.kind == 'Gateway'" when: - description: "Overall conditions for the AuthPolicy to be enforced.\nIf omitted, the AuthPolicy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the AuthPolicy to be enforced; otherwise, the authorization service skips the AuthPolicy and returns to the auth request with status OK." + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." items: + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - all: - description: "A list of pattern expressions to be evaluated as a logical AND." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - any: - description: "A list of pattern expressions to be evaluated as a logical OR." - items: - type: "object" - x-kubernetes-preserve-unknown-fields: true - type: "array" - operator: - description: "The binary operator to be applied to the content fetched from the authorization JSON, for comparison with \"value\".\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to), \"incl\" (includes; for arrays), \"excl\" (excludes; for arrays), \"matches\" (regex)" - enum: - - "eq" - - "neq" - - "incl" - - "excl" - - "matches" - type: "string" - patternRef: - description: "Reference to a named set of pattern expressions" - type: "string" - selector: - description: "Path selector to fetch content from the authorization JSON (e.g. 'request.method').\nAny pattern supported by https://pkg.go.dev/github.com/tidwall/gjson can be used.\nAuthorino custom JSON path modifiers are also supported." - type: "string" - value: - description: "The value of reference for the comparison with the content fetched from the authorization JSON.\nIf used with the \"matches\" operator, the value must compile to a valid Golang regex." + predicate: + minLength: 1 type: "string" + required: + - "predicate" type: "object" type: "array" required: @@ -4950,8 +5214,6 @@ spec: rule: "!(has(self.overrides) && (has(self.patterns) || has(self.when) || has(self.rules)))" - message: "Explicit overrides and explicit defaults are mutually exclusive" rule: "!(has(self.overrides) && has(self.defaults))" - - message: "Overrides are not allowed for policies targeting a HTTPRoute resource" - rule: "!(has(self.overrides) && self.targetRef.kind == 'HTTPRoute')" status: properties: conditions: diff --git a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/ratelimitpolicies.yaml b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/ratelimitpolicies.yaml index 1309f473c..130378ef8 100644 --- a/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/ratelimitpolicies.yaml +++ b/crd-catalog/Kuadrant/kuadrant-operator/kuadrant.io/v1beta3/ratelimitpolicies.yaml @@ -67,66 +67,44 @@ spec: description: "Limit represents a complete rate limit configuration" properties: counters: - description: "Counters defines additional rate limit counters based on context qualifiers and well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" + description: "Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" items: - description: "ContextSelector defines one item from the well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" - maxLength: 253 - minLength: 1 - type: "string" + properties: + expression: + description: "Expression defines one CEL expression\nExpression can use well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" + minLength: 1 + type: "string" + required: + - "expression" + type: "object" type: "array" rates: description: "Rates holds the list of limit rates" items: description: "Rate defines the actual rate limit that will be used when there is a match" properties: - duration: - description: "Duration defines the time period for which the Limit specified above applies." - type: "integer" limit: description: "Limit defines the max value allowed for a given period of time" type: "integer" - unit: - description: "Duration defines the time uni\nPossible values are: \"second\", \"minute\", \"hour\", \"day\"" - enum: - - "second" - - "minute" - - "hour" - - "day" + window: + description: "Window defines the time period for which the Limit specified above applies." + pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" required: - - "duration" - "limit" - - "unit" + - "window" type: "object" type: "array" when: - description: "When holds the list of conditions for the policy to be enforced.\nCalled also \"soft\" conditions as route selectors must also match" + description: "When holds a list of \"limit-level\" `Predicate`s\nCalled also \"soft\" conditions as route selectors must also match" items: - description: "WhenCondition defines semantics for matching an HTTP request based on conditions\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - operator: - description: "The binary operator to be applied to the content fetched from the selector\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to)" - enum: - - "eq" - - "neq" - - "startswith" - - "endswith" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Selector defines one item from the well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" - maxLength: 253 + predicate: minLength: 1 type: "string" - value: - description: "The value of reference for the comparison." - type: "string" required: - - "operator" - - "selector" - - "value" + - "predicate" type: "object" type: "array" type: "object" @@ -139,72 +117,62 @@ spec: - "atomic" - "merge" type: "string" + when: + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." + items: + description: "Predicate defines one CEL expression that must be evaluated to bool" + properties: + predicate: + minLength: 1 + type: "string" + required: + - "predicate" + type: "object" + type: "array" type: "object" limits: additionalProperties: description: "Limit represents a complete rate limit configuration" properties: counters: - description: "Counters defines additional rate limit counters based on context qualifiers and well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" + description: "Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" items: - description: "ContextSelector defines one item from the well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" - maxLength: 253 - minLength: 1 - type: "string" + properties: + expression: + description: "Expression defines one CEL expression\nExpression can use well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" + minLength: 1 + type: "string" + required: + - "expression" + type: "object" type: "array" rates: description: "Rates holds the list of limit rates" items: description: "Rate defines the actual rate limit that will be used when there is a match" properties: - duration: - description: "Duration defines the time period for which the Limit specified above applies." - type: "integer" limit: description: "Limit defines the max value allowed for a given period of time" type: "integer" - unit: - description: "Duration defines the time uni\nPossible values are: \"second\", \"minute\", \"hour\", \"day\"" - enum: - - "second" - - "minute" - - "hour" - - "day" + window: + description: "Window defines the time period for which the Limit specified above applies." + pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" required: - - "duration" - "limit" - - "unit" + - "window" type: "object" type: "array" when: - description: "When holds the list of conditions for the policy to be enforced.\nCalled also \"soft\" conditions as route selectors must also match" + description: "When holds a list of \"limit-level\" `Predicate`s\nCalled also \"soft\" conditions as route selectors must also match" items: - description: "WhenCondition defines semantics for matching an HTTP request based on conditions\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - operator: - description: "The binary operator to be applied to the content fetched from the selector\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to)" - enum: - - "eq" - - "neq" - - "startswith" - - "endswith" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Selector defines one item from the well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" - maxLength: 253 + predicate: minLength: 1 type: "string" - value: - description: "The value of reference for the comparison." - type: "string" required: - - "operator" - - "selector" - - "value" + - "predicate" type: "object" type: "array" type: "object" @@ -218,66 +186,44 @@ spec: description: "Limit represents a complete rate limit configuration" properties: counters: - description: "Counters defines additional rate limit counters based on context qualifiers and well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" + description: "Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" items: - description: "ContextSelector defines one item from the well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" - maxLength: 253 - minLength: 1 - type: "string" + properties: + expression: + description: "Expression defines one CEL expression\nExpression can use well known attributes\nAttributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes\nWell-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors\nThey are named by a dot-separated path (e.g. request.path)\nExample: \"request.path\" -> The path portion of the URL" + minLength: 1 + type: "string" + required: + - "expression" + type: "object" type: "array" rates: description: "Rates holds the list of limit rates" items: description: "Rate defines the actual rate limit that will be used when there is a match" properties: - duration: - description: "Duration defines the time period for which the Limit specified above applies." - type: "integer" limit: description: "Limit defines the max value allowed for a given period of time" type: "integer" - unit: - description: "Duration defines the time uni\nPossible values are: \"second\", \"minute\", \"hour\", \"day\"" - enum: - - "second" - - "minute" - - "hour" - - "day" + window: + description: "Window defines the time period for which the Limit specified above applies." + pattern: "^([0-9]{1,5}(h|m|s|ms)){1,4}$" type: "string" required: - - "duration" - "limit" - - "unit" + - "window" type: "object" type: "array" when: - description: "When holds the list of conditions for the policy to be enforced.\nCalled also \"soft\" conditions as route selectors must also match" + description: "When holds a list of \"limit-level\" `Predicate`s\nCalled also \"soft\" conditions as route selectors must also match" items: - description: "WhenCondition defines semantics for matching an HTTP request based on conditions\nhttps://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec" + description: "Predicate defines one CEL expression that must be evaluated to bool" properties: - operator: - description: "The binary operator to be applied to the content fetched from the selector\nPossible values are: \"eq\" (equal to), \"neq\" (not equal to)" - enum: - - "eq" - - "neq" - - "startswith" - - "endswith" - - "incl" - - "excl" - - "matches" - type: "string" - selector: - description: "Selector defines one item from the well known selectors\nTODO Document properly \"Well-known selector\" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors" - maxLength: 253 + predicate: minLength: 1 type: "string" - value: - description: "The value of reference for the comparison." - type: "string" required: - - "operator" - - "selector" - - "value" + - "predicate" type: "object" type: "array" type: "object" @@ -290,6 +236,18 @@ spec: - "atomic" - "merge" type: "string" + when: + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." + items: + description: "Predicate defines one CEL expression that must be evaluated to bool" + properties: + predicate: + minLength: 1 + type: "string" + required: + - "predicate" + type: "object" + type: "array" type: "object" targetRef: description: "Reference to the object to which this policy applies." @@ -326,6 +284,18 @@ spec: rule: "self.group == 'gateway.networking.k8s.io'" - message: "Invalid targetRef.kind. The only supported values are 'HTTPRoute' and 'Gateway'" rule: "self.kind == 'HTTPRoute' || self.kind == 'Gateway'" + when: + description: "Overall conditions for the policy to be enforced.\nIf omitted, the policy will be enforced at all requests to the protected routes.\nIf present, all conditions must match for the policy to be enforced." + items: + description: "Predicate defines one CEL expression that must be evaluated to bool" + properties: + predicate: + minLength: 1 + type: "string" + required: + - "predicate" + type: "object" + type: "array" required: - "targetRef" type: "object" diff --git a/crd-catalog/ThinkParQ/beegfs-csi-driver/beegfs.csi.netapp.com/v1/beegfsdrivers.yaml b/crd-catalog/ThinkParQ/beegfs-csi-driver/beegfs.csi.netapp.com/v1/beegfsdrivers.yaml index d5e03d8fe..aeac4b981 100644 --- a/crd-catalog/ThinkParQ/beegfs-csi-driver/beegfs.csi.netapp.com/v1/beegfsdrivers.yaml +++ b/crd-catalog/ThinkParQ/beegfs-csi-driver/beegfs.csi.netapp.com/v1/beegfsdrivers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.16.0" name: "beegfsdrivers.beegfs.csi.netapp.com" spec: group: "beegfs.csi.netapp.com" @@ -90,13 +90,16 @@ spec: description: "The resource specifications for the beegfs container of the BeeGFS driver controller pod.\nThe default values for requests are (cpu: 100m, memory: 16Mi).\nThe default values for limits are (cpu: None, memory: 256Mi)." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -127,13 +130,16 @@ spec: description: "The resource specifications for the csi-provisioner container of the BeeGFS driver controller pod.\nThe default values for requests are (cpu: 80m, memory: 24Mi)\nThe default values for limits are (cpu: None, memory 256Mi)" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -164,13 +170,16 @@ spec: description: "The resource specifications for the beegfs container of the BeeGFS driver node pod.\nThe default values for requests are (cpu: 100m, memory: 20Mi)\nThe default values for limits are (cpu: None, memory: 128Mi)" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -201,13 +210,16 @@ spec: description: "The resource specifications for the node-driver-registrar container of the BeeGFS driver node pod.\nThe default values for requests are (cpu: 80m, memory: 10Mi)\nThe default values for limits are (cpu: None, memory 128Mi)" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -238,13 +250,16 @@ spec: description: "The resource specifications for the liveness-probe container of the BeeGFS driver node pod.\nThe default values for requests are (cpu: 60m, memory: 20Mi)\nThe default values for limits are (cpu: None, memory: 128Mi)" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -304,11 +319,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -325,11 +342,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -341,6 +360,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: @@ -365,11 +385,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -386,14 +408,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -426,11 +451,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -447,11 +474,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -463,6 +492,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: @@ -487,11 +517,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -508,14 +540,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -685,7 +720,7 @@ spec: properties: conditions: items: - description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" + description: "Condition contains details for one aspect of the current state of this API Resource." properties: lastTransitionTime: description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable." @@ -714,7 +749,7 @@ spec: - "Unknown" type: "string" type: - description: "type of condition in CamelCase or in foo.example.com/CamelCase.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)" + description: "type of condition in CamelCase or in foo.example.com/CamelCase." 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" diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/clusters.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/clusters.yaml index d587f97d0..f58115c08 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/clusters.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/clusters.yaml @@ -8895,13 +8895,12 @@ spec: description: "Specifies the current state of the Component." enum: - "Creating" - - "Running" + - "Deleting" - "Updating" - "Stopping" + - "Running" - "Stopped" - - "Deleting" - "Failed" - - "Abnormal" type: "string" type: "object" description: "Records the current status information of all Components within the Cluster." @@ -8982,13 +8981,12 @@ spec: description: "Specifies the current state of the Component." enum: - "Creating" - - "Running" + - "Deleting" - "Updating" - "Stopping" + - "Running" - "Stopped" - - "Deleting" - "Failed" - - "Abnormal" type: "string" type: "object" description: "Records the current status information of all shardings within the Cluster." diff --git a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/components.yaml b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/components.yaml index 2c89dfbac..14feaab45 100644 --- a/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/components.yaml +++ b/crd-catalog/apecloud/kubeblocks/apps.kubeblocks.io/v1/components.yaml @@ -4201,16 +4201,15 @@ spec: format: "int64" type: "integer" phase: - description: "Indicates the current phase of the Component, with each phase indicating specific conditions:\n\n\n- Creating: The initial phase for new Components, transitioning from 'empty'(\"\").\n- Running: All Pods in a Running state.\n- Updating: The Component is currently being updated, with no failed Pods present.\n- Abnormal: Some Pods have failed, indicating a potentially unstable state.\n However, the cluster remains available as long as a quorum of members is functioning.\n- Failed: A significant number of Pods or critical Pods have failed\n The cluster may be non-functional or may offer only limited services (e.g, read-only).\n- Stopping: All Pods are being terminated, with current replica count at zero.\n- Stopped: All associated Pods have been successfully deleted.\n- Deleting: The Component is being deleted." + description: "Indicates the current phase of the Component, with each phase indicating specific conditions:\n\n\n- Creating: The initial phase for new Components, transitioning from 'empty'(\"\").\n- Running: All Pods are up-to-date and in a Running state.\n- Updating: The Component is currently being updated, with no failed Pods present.\n- Failed: A significant number of Pods have failed.\n- Stopping: All Pods are being terminated, with current replica count at zero.\n- Stopped: All associated Pods have been successfully deleted.\n- Deleting: The Component is being deleted." enum: - "Creating" - - "Running" + - "Deleting" - "Updating" - "Stopping" + - "Running" - "Stopped" - - "Deleting" - "Failed" - - "Abnormal" type: "string" type: "object" type: "object" diff --git a/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1/instancesets.yaml b/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1/instancesets.yaml index 3240568f4..e3b067ddd 100644 --- a/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1/instancesets.yaml +++ b/crd-catalog/apecloud/kubeblocks/workloads.kubeblocks.io/v1/instancesets.yaml @@ -2559,250 +2559,6 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" - service: - description: "Defines the behavior of a service spec.\nProvides read-write service.\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status\n\n\nNote: This field will be removed in future version." - properties: - apiVersion: - description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" - type: "string" - metadata: - description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" - properties: - annotations: - additionalProperties: - type: "string" - type: "object" - finalizers: - items: - type: "string" - type: "array" - labels: - additionalProperties: - type: "string" - type: "object" - name: - type: "string" - namespace: - type: "string" - type: "object" - spec: - description: "Spec defines the behavior of a service.\nhttps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" - properties: - allocateLoadBalancerNodePorts: - description: "allocateLoadBalancerNodePorts defines if NodePorts will be automatically\nallocated for services with type LoadBalancer. Default is \"true\". It\nmay be set to \"false\" if the cluster load-balancer does not rely on\nNodePorts. If the caller requests specific NodePorts (by specifying a\nvalue), those requests will be respected, regardless of this field.\nThis field may only be set for services with type LoadBalancer and will\nbe cleared if the type is changed to any other type." - type: "boolean" - clusterIP: - description: "clusterIP is the IP address of the service and is usually assigned\nrandomly. If an address is specified manually, is in-range (as per\nsystem configuration), and is not in use, it will be allocated to the\nservice; otherwise creation of the service will fail. This field may not\nbe changed through updates unless the type field is also being changed\nto ExternalName (which requires this field to be blank) or the type\nfield is being changed from ExternalName (in which case this field may\noptionally be specified, as describe above). Valid values are \"None\",\nempty string (\"\"), or a valid IP address. Setting this to \"None\" makes a\n\"headless service\" (no virtual IP), which is useful when direct endpoint\nconnections are preferred and proxying is not required. Only applies to\ntypes ClusterIP, NodePort, and LoadBalancer. If this field is specified\nwhen creating a Service of type ExternalName, creation will fail. This\nfield will be wiped when updating a Service to type ExternalName.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - type: "string" - clusterIPs: - description: "ClusterIPs is a list of IP addresses assigned to this service, and are\nusually assigned randomly. If an address is specified manually, is\nin-range (as per system configuration), and is not in use, it will be\nallocated to the service; otherwise creation of the service will fail.\nThis field may not be changed through updates unless the type field is\nalso being changed to ExternalName (which requires this field to be\nempty) or the type field is being changed from ExternalName (in which\ncase this field may optionally be specified, as describe above). Valid\nvalues are \"None\", empty string (\"\"), or a valid IP address. Setting\nthis to \"None\" makes a \"headless service\" (no virtual IP), which is\nuseful when direct endpoint connections are preferred and proxying is\nnot required. Only applies to types ClusterIP, NodePort, and\nLoadBalancer. If this field is specified when creating a Service of type\nExternalName, creation will fail. This field will be wiped when updating\na Service to type ExternalName. If this field is not specified, it will\nbe initialized from the clusterIP field. If this field is specified,\nclients must ensure that clusterIPs[0] and clusterIP have the same\nvalue.\n\n\nThis field may hold a maximum of two entries (dual-stack IPs, in either order).\nThese IPs must correspond to the values of the ipFamilies field. Both\nclusterIPs and ipFamilies are governed by the ipFamilyPolicy field.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - items: - type: "string" - type: "array" - x-kubernetes-list-type: "atomic" - externalIPs: - description: "externalIPs is a list of IP addresses for which nodes in the cluster\nwill also accept traffic for this service. These IPs are not managed by\nKubernetes. The user is responsible for ensuring that traffic arrives\nat a node with this IP. A common example is external load-balancers\nthat are not part of the Kubernetes system." - items: - type: "string" - type: "array" - externalName: - description: "externalName is the external reference that discovery mechanisms will\nreturn as an alias for this service (e.g. a DNS CNAME record). No\nproxying will be involved. Must be a lowercase RFC-1123 hostname\n(https://tools.ietf.org/html/rfc1123) and requires `type` to be \"ExternalName\"." - type: "string" - externalTrafficPolicy: - description: "externalTrafficPolicy describes how nodes distribute service traffic they\nreceive on one of the Service's \"externally-facing\" addresses (NodePorts,\nExternalIPs, and LoadBalancer IPs). If set to \"Local\", the proxy will configure\nthe service in a way that assumes that external load balancers will take care\nof balancing the service traffic between nodes, and so each node will deliver\ntraffic only to the node-local endpoints of the service, without masquerading\nthe client source IP. (Traffic mistakenly sent to a node with no endpoints will\nbe dropped.) The default value, \"Cluster\", uses the standard behavior of\nrouting to all endpoints evenly (possibly modified by topology and other\nfeatures). Note that traffic sent to an External IP or LoadBalancer IP from\nwithin the cluster will always get \"Cluster\" semantics, but clients sending to\na NodePort from within the cluster may need to take traffic policy into account\nwhen picking a node." - type: "string" - healthCheckNodePort: - description: "healthCheckNodePort specifies the healthcheck nodePort for the service.\nThis only applies when type is set to LoadBalancer and\nexternalTrafficPolicy is set to Local. If a value is specified, is\nin-range, and is not in use, it will be used. If not specified, a value\nwill be automatically allocated. External systems (e.g. load-balancers)\ncan use this port to determine if a given node holds endpoints for this\nservice or not. If this field is specified when creating a Service\nwhich does not need it, creation will fail. This field will be wiped\nwhen updating a Service to no longer need it (e.g. changing type).\nThis field cannot be updated once set." - format: "int32" - type: "integer" - internalTrafficPolicy: - description: "InternalTrafficPolicy describes how nodes distribute service traffic they\nreceive on the ClusterIP. If set to \"Local\", the proxy will assume that pods\nonly want to talk to endpoints of the service on the same node as the pod,\ndropping the traffic if there are no local endpoints. The default value,\n\"Cluster\", uses the standard behavior of routing to all endpoints evenly\n(possibly modified by topology and other features)." - type: "string" - ipFamilies: - description: "IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this\nservice. This field is usually assigned automatically based on cluster\nconfiguration and the ipFamilyPolicy field. If this field is specified\nmanually, the requested family is available in the cluster,\nand ipFamilyPolicy allows it, it will be used; otherwise creation of\nthe service will fail. This field is conditionally mutable: it allows\nfor adding or removing a secondary IP family, but it does not allow\nchanging the primary IP family of the Service. Valid values are \"IPv4\"\nand \"IPv6\". This field only applies to Services of types ClusterIP,\nNodePort, and LoadBalancer, and does apply to \"headless\" services.\nThis field will be wiped when updating a Service to type ExternalName.\n\n\nThis field may hold a maximum of two entries (dual-stack families, in\neither order). These families must correspond to the values of the\nclusterIPs field, if specified. Both clusterIPs and ipFamilies are\ngoverned by the ipFamilyPolicy field." - items: - description: "IPFamily represents the IP Family (IPv4 or IPv6). This type is used\nto express the family of an IP expressed by a type (e.g. service.spec.ipFamilies)." - type: "string" - type: "array" - x-kubernetes-list-type: "atomic" - ipFamilyPolicy: - description: "IPFamilyPolicy represents the dual-stack-ness requested or required by\nthis Service. If there is no value provided, then this field will be set\nto SingleStack. Services can be \"SingleStack\" (a single IP family),\n\"PreferDualStack\" (two IP families on dual-stack configured clusters or\na single IP family on single-stack clusters), or \"RequireDualStack\"\n(two IP families on dual-stack configured clusters, otherwise fail). The\nipFamilies and clusterIPs fields depend on the value of this field. This\nfield will be wiped when updating a service to type ExternalName." - type: "string" - loadBalancerClass: - description: "loadBalancerClass is the class of the load balancer implementation this Service belongs to.\nIf specified, the value of this field must be a label-style identifier, with an optional prefix,\ne.g. \"internal-vip\" or \"example.com/internal-vip\". Unprefixed names are reserved for end-users.\nThis field can only be set when the Service type is 'LoadBalancer'. If not set, the default load\nbalancer implementation is used, today this is typically done through the cloud provider integration,\nbut should apply for any default implementation. If set, it is assumed that a load balancer\nimplementation is watching for Services with a matching class. Any default load balancer\nimplementation (e.g. cloud providers) should ignore Services that set this field.\nThis field can only be set when creating or updating a Service to type 'LoadBalancer'.\nOnce set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type." - type: "string" - loadBalancerIP: - description: "Only applies to Service Type: LoadBalancer.\nThis feature depends on whether the underlying cloud-provider supports specifying\nthe loadBalancerIP when a load balancer is created.\nThis field will be ignored if the cloud-provider does not support the feature.\nDeprecated: This field was under-specified and its meaning varies across implementations.\nUsing it is non-portable and it may not support dual-stack.\nUsers are encouraged to use implementation-specific annotations when available." - type: "string" - loadBalancerSourceRanges: - description: "If specified and supported by the platform, this will restrict traffic through the cloud-provider\nload-balancer will be restricted to the specified client IPs. This field will be ignored if the\ncloud-provider does not support the feature.\"\nMore info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/" - items: - type: "string" - type: "array" - ports: - description: "The list of ports that are exposed by this service.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - items: - description: "ServicePort contains information on service's port." - properties: - appProtocol: - description: "The application protocol for this port.\nThis is used as a hint for implementations to offer richer behavior for protocols that they understand.\nThis field follows standard Kubernetes label syntax.\nValid values are either:\n\n\n* Un-prefixed protocol names - reserved for IANA standard service names (as per\nRFC-6335 and https://www.iana.org/assignments/service-names).\n\n\n* Kubernetes-defined prefixed names:\n * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior-\n * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455\n * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455\n\n\n* Other protocols should use implementation-defined prefixed names such as\nmycompany.com/my-custom-protocol." - type: "string" - name: - description: "The name of this port within the service. This must be a DNS_LABEL.\nAll ports within a ServiceSpec must have unique names. When considering\nthe endpoints for a Service, this must match the 'name' field in the\nEndpointPort.\nOptional if only one ServicePort is defined on this service." - type: "string" - nodePort: - description: "The port on each node on which this service is exposed when type is\nNodePort or LoadBalancer. Usually assigned by the system. If a value is\nspecified, in-range, and not in use it will be used, otherwise the\noperation will fail. If not specified, a port will be allocated if this\nService requires one. If this field is specified when creating a\nService which does not need it, creation will fail. This field will be\nwiped when updating a Service to no longer need it (e.g. changing type\nfrom NodePort to ClusterIP).\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport" - format: "int32" - type: "integer" - port: - description: "The port that will be exposed by this service." - format: "int32" - type: "integer" - protocol: - default: "TCP" - description: "The IP protocol for this port. Supports \"TCP\", \"UDP\", and \"SCTP\".\nDefault is TCP." - type: "string" - targetPort: - anyOf: - - type: "integer" - - type: "string" - description: "Number or name of the port to access on the pods targeted by the service.\nNumber must be in the range 1 to 65535. Name must be an IANA_SVC_NAME.\nIf this is a string, it will be looked up as a named port in the\ntarget Pod's container ports. If this is not specified, the value\nof the 'port' field is used (an identity map).\nThis field is ignored for services with clusterIP=None, and should be\nomitted or set equal to the 'port' field.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service" - x-kubernetes-int-or-string: true - required: - - "port" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "port" - - "protocol" - x-kubernetes-list-type: "map" - publishNotReadyAddresses: - description: "publishNotReadyAddresses indicates that any agent which deals with endpoints for this\nService should disregard any indications of ready/not-ready.\nThe primary use case for setting this field is for a StatefulSet's Headless Service to\npropagate SRV DNS records for its Pods for the purpose of peer discovery.\nThe Kubernetes controllers that generate Endpoints and EndpointSlice resources for\nServices interpret this to mean that all endpoints are considered \"ready\" even if the\nPods themselves are not. Agents which consume only Kubernetes generated endpoints\nthrough the Endpoints or EndpointSlice resources can safely assume this behavior." - type: "boolean" - selector: - additionalProperties: - type: "string" - description: "Route service traffic to pods with label keys and values matching this\nselector. If empty or not present, the service is assumed to have an\nexternal process managing its endpoints, which Kubernetes will not\nmodify. Only applies to types ClusterIP, NodePort, and LoadBalancer.\nIgnored if type is ExternalName.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/" - type: "object" - x-kubernetes-map-type: "atomic" - sessionAffinity: - description: "Supports \"ClientIP\" and \"None\". Used to maintain session affinity.\nEnable client IP based session affinity.\nMust be ClientIP or None.\nDefaults to None.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies" - type: "string" - sessionAffinityConfig: - description: "sessionAffinityConfig contains the configurations of session affinity." - properties: - clientIP: - description: "clientIP contains the configurations of Client IP based session affinity." - properties: - timeoutSeconds: - description: "timeoutSeconds specifies the seconds of ClientIP type session sticky time.\nThe value must be >0 && <=86400(for 1 day) if ServiceAffinity == \"ClientIP\".\nDefault value is 10800(for 3 hours)." - format: "int32" - type: "integer" - type: "object" - type: "object" - type: - description: "type determines how the Service is exposed. Defaults to ClusterIP. Valid\noptions are ExternalName, ClusterIP, NodePort, and LoadBalancer.\n\"ClusterIP\" allocates a cluster-internal IP address for load-balancing\nto endpoints. Endpoints are determined by the selector or if that is not\nspecified, by manual construction of an Endpoints object or\nEndpointSlice objects. If clusterIP is \"None\", no virtual IP is\nallocated and the endpoints are published as a set of endpoints rather\nthan a virtual IP.\n\"NodePort\" builds on ClusterIP and allocates a port on every node which\nroutes to the same endpoints as the clusterIP.\n\"LoadBalancer\" builds on NodePort and creates an external load-balancer\n(if supported in the current cloud) which routes to the same endpoints\nas the clusterIP.\n\"ExternalName\" aliases this service to the specified externalName.\nSeveral other fields do not apply to ExternalName services.\nMore info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types" - type: "string" - type: "object" - status: - description: "Most recently observed status of the service.\nPopulated by the system.\nRead-only.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" - properties: - conditions: - description: "Current service state" - items: - description: "Condition contains details for one aspect of the current state of this API Resource.\n---\nThis struct is intended for direct use as an array at the field path .status.conditions. For example,\n\n\n\ttype FooStatus struct{\n\t // Represents the observations of a foo's current state.\n\t // Known .status.conditions.type are: \"Available\", \"Progressing\", and \"Degraded\"\n\t // +patchMergeKey=type\n\t // +patchStrategy=merge\n\t // +listType=map\n\t // +listMapKey=type\n\t Conditions []metav1.Condition `json:\"conditions,omitempty\" patchStrategy:\"merge\" patchMergeKey:\"type\" protobuf:\"bytes,1,rep,name=conditions\"`\n\n\n\t // other fields\n\t}" - properties: - lastTransitionTime: - description: "lastTransitionTime is the last time the condition transitioned from one status to another.\nThis 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.\nThis may be an empty string." - maxLength: 32768 - type: "string" - observedGeneration: - description: "observedGeneration represents the .metadata.generation that the condition was set based upon.\nFor instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date\nwith respect to the current state of the instance." - format: "int64" - minimum: 0.0 - type: "integer" - reason: - description: "reason contains a programmatic identifier indicating the reason for the condition's last transition.\nProducers of specific condition types may define expected values and meanings for this field,\nand whether the values are considered a guaranteed API.\nThe value should be a CamelCase string.\nThis 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.\n---\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions can be\nuseful (see .node.status.conditions), the ability to deconflict is important.\nThe 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" - x-kubernetes-list-map-keys: - - "type" - x-kubernetes-list-type: "map" - loadBalancer: - description: "LoadBalancer contains the current status of the load-balancer,\nif one is present." - properties: - ingress: - description: "Ingress is a list containing ingress points for the load-balancer.\nTraffic intended for the service should be sent to these ingress points." - items: - description: "LoadBalancerIngress represents the status of a load-balancer ingress point:\ntraffic intended for the service should be sent to an ingress point." - properties: - hostname: - description: "Hostname is set for load-balancer ingress points that are DNS based\n(typically AWS load-balancers)" - type: "string" - ip: - description: "IP is set for load-balancer ingress points that are IP based\n(typically GCE or OpenStack load-balancers)" - type: "string" - ipMode: - description: "IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified.\nSetting this to \"VIP\" indicates that traffic is delivered to the node with\nthe destination set to the load-balancer's IP and port.\nSetting this to \"Proxy\" indicates that traffic is delivered to the node or pod with\nthe destination set to the node's IP and node port or the pod's IP and port.\nService implementations may use this information to adjust traffic routing." - type: "string" - ports: - description: "Ports is a list of records of service ports\nIf used, every port defined in the service should have an entry in it" - items: - properties: - error: - description: "Error is to record the problem with the service port\nThe format of the error shall comply with the following rules:\n- built-in error values shall be specified in this file and those shall use\n CamelCase names\n- cloud provider specific error values must have names that comply with the\n format foo.example.com/CamelCase.\n---\nThe 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" - port: - description: "Port is the port number of the service port of which status is recorded here" - format: "int32" - type: "integer" - protocol: - default: "TCP" - description: "Protocol is the protocol of the service port of which status is recorded here\nThe supported values are: \"TCP\", \"UDP\", \"SCTP\"" - type: "string" - required: - - "port" - - "protocol" - type: "object" - type: "array" - x-kubernetes-list-type: "atomic" - type: "object" - type: "array" - type: "object" - type: "object" - type: "object" - x-kubernetes-preserve-unknown-fields: true template: description: "PodTemplateSpec describes the data a pod should have when created from a template" properties: diff --git a/crd-catalog/berops/claudie/claudie.io/v1beta1/inputmanifests.yaml b/crd-catalog/berops/claudie/claudie.io/v1beta1/inputmanifests.yaml index a208f91f4..7e077ea46 100644 --- a/crd-catalog/berops/claudie/claudie.io/v1beta1/inputmanifests.yaml +++ b/crd-catalog/berops/claudie/claudie.io/v1beta1/inputmanifests.yaml @@ -44,6 +44,18 @@ spec: items: description: "Collection of data used to define a Kubernetes cluster." properties: + installationProxy: + description: "General information about a proxy used to build a K8s cluster." + properties: + endpoint: + description: "Endpoint defines the proxy endpoint. If undefined, the default value is http://proxy.claudie.io:8880." + type: "string" + mode: + description: "Mode defines if the proxy mode (on/off/default). If undefined, the default mode is used." + type: "string" + required: + - "mode" + type: "object" name: description: "Name of the Kubernetes cluster. Each cluster will have a random hash appended to the name, so the whole name will be of format -." type: "string" @@ -68,7 +80,7 @@ spec: - "control" type: "object" version: - description: "Version should be defined in format vX.Y. In terms of supported versions of Kubernetes,\nClaudie follows kubeone releases and their supported versions.\nThe current kubeone version used in Claudie is 1.5.\nTo see the list of supported versions, please refer to kubeone documentation.\nhttps://docs.kubermatic.com/kubeone/v1.8/architecture/compatibility/supported-versions/" + description: "Version should be defined in format vX.Y. In terms of supported versions of Kubernetes,\nClaudie follows kubeone releases and their supported versions.\nThe current kubeone version used in Claudie is 1.8.1.\nTo see the list of supported versions, please refer to kubeone documentation.\nhttps://docs.kubermatic.com/kubeone/v1.8/architecture/compatibility/supported-versions/" type: "string" required: - "name" diff --git a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/backups.yaml b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/backups.yaml index 685cbb755..ee2f6e927 100644 --- a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/backups.yaml +++ b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/backups.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "backups.postgresql.cnpg.io" spec: group: "postgresql.cnpg.io" diff --git a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml index 2c906f5d9..c1485bf0a 100644 --- a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml +++ b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/clusters.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "clusters.postgresql.cnpg.io" spec: group: "postgresql.cnpg.io" @@ -1874,6 +1874,24 @@ spec: - "key" type: "object" x-kubernetes-map-type: "atomic" + plugin: + description: "The configuration of the plugin that is taking care\nof WAL archiving and backups for this external cluster" + properties: + enabled: + default: true + description: "Enabled is true if this plugin will be used" + type: "boolean" + name: + description: "Name is the plugin name" + type: "string" + parameters: + additionalProperties: + type: "string" + description: "Parameters is the configuration of the plugin" + type: "object" + required: + - "name" + type: "object" sslCert: description: "The reference to an SSL certificate to be used to connect to this\ninstance" properties: diff --git a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/poolers.yaml b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/poolers.yaml index c181d212d..bbc9d8fd6 100644 --- a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/poolers.yaml +++ b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/poolers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "poolers.postgresql.cnpg.io" spec: group: "postgresql.cnpg.io" diff --git a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/scheduledbackups.yaml b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/scheduledbackups.yaml index 93cd0d1e2..cd7ad2323 100644 --- a/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/scheduledbackups.yaml +++ b/crd-catalog/cloudnative-pg/cloudnative-pg/postgresql.cnpg.io/v1/scheduledbackups.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "scheduledbackups.postgresql.cnpg.io" spec: group: "postgresql.cnpg.io" diff --git a/crd-catalog/flux-framework/flux-operator/flux-framework.org/v1alpha2/miniclusters.yaml b/crd-catalog/flux-framework/flux-operator/flux-framework.org/v1alpha2/miniclusters.yaml index 84e84d360..e568fdfee 100644 --- a/crd-catalog/flux-framework/flux-operator/flux-framework.org/v1alpha2/miniclusters.yaml +++ b/crd-catalog/flux-framework/flux-operator/flux-framework.org/v1alpha2/miniclusters.yaml @@ -336,6 +336,9 @@ spec: curveCert: description: "Optionally provide an already existing curve certificate\nThis is not recommended in favor of providing the secret\nname as curveCertSecret, below" type: "string" + disableSocket: + description: "Disable specifying the socket path" + type: "boolean" logLevel: default: 6 description: "Log level to use for flux logging (only in non TestMode)" @@ -363,6 +366,9 @@ spec: submitCommand: description: "Modify flux submit to be something else" type: "string" + topology: + description: "Specify a custom Topology" + type: "string" wrap: description: "Commands for flux start --wrap" type: "string" diff --git a/crd-catalog/k8gb-io/k8gb/k8gb.absa.oss/v1beta1/gslbs.yaml b/crd-catalog/k8gb-io/k8gb/k8gb.absa.oss/v1beta1/gslbs.yaml index c6f1bc0bc..1eee52717 100644 --- a/crd-catalog/k8gb-io/k8gb/k8gb.absa.oss/v1beta1/gslbs.yaml +++ b/crd-catalog/k8gb-io/k8gb/k8gb.absa.oss/v1beta1/gslbs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.15.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "gslbs.k8gb.absa.oss" spec: group: "k8gb.absa.oss" @@ -80,6 +80,7 @@ spec: format: "int32" type: "integer" type: "object" + x-kubernetes-map-type: "atomic" required: - "name" type: "object" @@ -93,7 +94,7 @@ spec: description: "IngressRule represents the rules mapping the paths under a specified host to\nthe related backend services. Incoming requests are first evaluated for a host\nmatch, then routed to the backend associated with the matching IngressRuleValue." properties: host: - description: "Host is the fully qualified domain name of a network host, as defined by RFC 3986.\nNote the following deviations from the \"host\" part of the\nURI as defined in RFC 3986:\n1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future.\nIncoming requests are matched against the host before the\nIngressRuleValue. If the host is unspecified, the Ingress routes all\ntraffic based on the specified IngressRuleValue.\n\n\nHost can be \"precise\" which is a domain name without the terminating dot of\na network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name\nprefixed with a single wildcard label (e.g. \"*.foo.com\").\nThe wildcard character '*' must appear by itself as the first DNS label and\nmatches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\").\nRequests will be matched against the Host field in the following way:\n1. If Host is precise, the request matches this rule if the http host header is equal to Host.\n2. If Host is a wildcard, then the request matches this rule if the http host header\nis to equal to the suffix (removing the first label) of the wildcard rule." + description: "Host is the fully qualified domain name of a network host, as defined by RFC 3986.\nNote the following deviations from the \"host\" part of the\nURI as defined in RFC 3986:\n1. IPs are not allowed. Currently an IngressRuleValue can only apply to\n the IP in the Spec of the parent Ingress.\n2. The `:` delimiter is not respected because ports are not allowed.\n\t Currently the port of an Ingress is implicitly :80 for http and\n\t :443 for https.\nBoth these may change in the future.\nIncoming requests are matched against the host before the\nIngressRuleValue. If the host is unspecified, the Ingress routes all\ntraffic based on the specified IngressRuleValue.\n\nHost can be \"precise\" which is a domain name without the terminating dot of\na network host (e.g. \"foo.bar.com\") or \"wildcard\", which is a domain name\nprefixed with a single wildcard label (e.g. \"*.foo.com\").\nThe wildcard character '*' must appear by itself as the first DNS label and\nmatches only a single label. You cannot have a wildcard label by itself (e.g. Host == \"*\").\nRequests will be matched against the Host field in the following way:\n1. If Host is precise, the request matches this rule if the http host header is equal to Host.\n2. If Host is a wildcard, then the request matches this rule if the http host header\nis to equal to the suffix (removing the first label) of the wildcard rule." type: "string" http: description: "HTTPIngressRuleValue is a list of http selectors\npointing to backends. In the example: http:///?\n-> backend where where parts of the url correspond to\nRFC 3986, this resource will be used to match against\neverything after the last '/' and before the first '?'\nor '#'." @@ -140,6 +141,7 @@ spec: format: "int32" type: "integer" type: "object" + x-kubernetes-map-type: "atomic" required: - "name" type: "object" diff --git a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/clustertriggerauthentications.yaml b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/clustertriggerauthentications.yaml index da4e143c8..479dc0335 100644 --- a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/clustertriggerauthentications.yaml +++ b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/clustertriggerauthentications.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.15.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "clustertriggerauthentications.keda.sh" spec: group: "keda.sh" diff --git a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledjobs.yaml b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledjobs.yaml index 00c90978e..9736c2c09 100644 --- a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledjobs.yaml +++ b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledjobs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.15.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "scaledjobs.keda.sh" spec: group: "keda.sh" @@ -22,12 +22,6 @@ spec: - jsonPath: ".spec.maxReplicaCount" name: "Max" type: "integer" - - jsonPath: ".spec.triggers[*].type" - name: "Triggers" - type: "string" - - jsonPath: ".spec.triggers[*].authenticationRef.name" - name: "Authentication" - type: "string" - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" name: "Ready" type: "string" @@ -37,6 +31,12 @@ spec: - jsonPath: ".status.conditions[?(@.type==\"Paused\")].status" name: "Paused" type: "string" + - jsonPath: ".status.triggersTypes" + name: "Triggers" + type: "string" + - jsonPath: ".status.authenticationsTypes" + name: "Authentications" + type: "string" - jsonPath: ".metadata.creationTimestamp" name: "Age" type: "date" @@ -77,12 +77,15 @@ spec: format: "int32" type: "integer" completionMode: - description: "completionMode specifies how Pod completions are tracked. It can be\n`NonIndexed` (default) or `Indexed`.\n\n\n`NonIndexed` means that the Job is considered complete when there have\nbeen .spec.completions successfully completed Pods. Each Pod completion is\nhomologous to each other.\n\n\n`Indexed` means that the Pods of a\nJob get an associated completion index from 0 to (.spec.completions - 1),\navailable in the annotation batch.kubernetes.io/job-completion-index.\nThe Job is considered complete when there is one successfully completed Pod\nfor each index.\nWhen value is `Indexed`, .spec.completions must be specified and\n`.spec.parallelism` must be less than or equal to 10^5.\nIn addition, The Pod name takes the form\n`$(job-name)-$(index)-$(random-string)`,\nthe Pod hostname takes the form `$(job-name)-$(index)`.\n\n\nMore completion modes can be added in the future.\nIf the Job controller observes a mode that it doesn't recognize, which\nis possible during upgrades due to version skew, the controller\nskips updates for the Job." + description: "completionMode specifies how Pod completions are tracked. It can be\n`NonIndexed` (default) or `Indexed`.\n\n`NonIndexed` means that the Job is considered complete when there have\nbeen .spec.completions successfully completed Pods. Each Pod completion is\nhomologous to each other.\n\n`Indexed` means that the Pods of a\nJob get an associated completion index from 0 to (.spec.completions - 1),\navailable in the annotation batch.kubernetes.io/job-completion-index.\nThe Job is considered complete when there is one successfully completed Pod\nfor each index.\nWhen value is `Indexed`, .spec.completions must be specified and\n`.spec.parallelism` must be less than or equal to 10^5.\nIn addition, The Pod name takes the form\n`$(job-name)-$(index)-$(random-string)`,\nthe Pod hostname takes the form `$(job-name)-$(index)`.\n\nMore completion modes can be added in the future.\nIf the Job controller observes a mode that it doesn't recognize, which\nis possible during upgrades due to version skew, the controller\nskips updates for the Job." type: "string" completions: description: "Specifies the desired number of successfully finished pods the\njob should be run with. Setting to null means that the success of any\npod signals the success of all pods, and allows parallelism to have any positive\nvalue. Setting to 1 means that parallelism is limited to 1 and the success of that\npod signals the success of the job.\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/" format: "int32" type: "integer" + managedBy: + description: "ManagedBy field indicates the controller that manages a Job. The k8s Job\ncontroller reconciles jobs which don't have this field at all or the field\nvalue is the reserved string `kubernetes.io/job-controller`, but skips\nreconciling Jobs with a custom value for this field.\nThe value must be a valid domain-prefixed path (e.g. acme.io/foo) -\nall characters before the first \"/\" must be a valid subdomain as defined\nby RFC 1123. All characters trailing the first \"/\" must be valid HTTP Path\ncharacters as defined by RFC 3986. The value cannot exceed 63 characters.\nThis field is immutable.\n\nThis field is alpha-level. The job controller accepts setting the field\nwhen the feature gate JobManagedBy is enabled (disabled by default)." + type: "string" manualSelector: description: "manualSelector controls generation of pod labels and pod selectors.\nLeave `manualSelector` unset unless you are certain what you are doing.\nWhen false or unset, the system pick labels unique to this job\nand appends those labels to the pod template. When true,\nthe user is responsible for picking unique labels and specifying\nthe selector. Failure to pick a unique label may cause this\nand other jobs to not function correctly. However, You may see\n`manualSelector=true` in jobs that were created with the old `extensions/v1beta1`\nAPI.\nMore info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector" type: "boolean" @@ -95,7 +98,7 @@ spec: format: "int32" type: "integer" podFailurePolicy: - description: "Specifies the policy of handling failed pods. In particular, it allows to\nspecify the set of actions and conditions which need to be\nsatisfied to take the associated action.\nIf empty, the default behaviour applies - the counter of failed pods,\nrepresented by the jobs's .status.failed field, is incremented and it is\nchecked against the backoffLimit. This field cannot be used in combination\nwith restartPolicy=OnFailure.\n\n\nThis field is beta-level. It can be used when the `JobPodFailurePolicy`\nfeature gate is enabled (enabled by default)." + description: "Specifies the policy of handling failed pods. In particular, it allows to\nspecify the set of actions and conditions which need to be\nsatisfied to take the associated action.\nIf empty, the default behaviour applies - the counter of failed pods,\nrepresented by the jobs's .status.failed field, is incremented and it is\nchecked against the backoffLimit. This field cannot be used in combination\nwith restartPolicy=OnFailure." properties: rules: description: "A list of pod failure policy rules. The rules are evaluated in order.\nOnce a rule matches a Pod failure, the remaining of the rules are ignored.\nWhen no rule matches the Pod failure, the default handling applies - the\ncounter of pod failures is incremented and it is checked against\nthe backoffLimit. At most 20 elements are allowed." @@ -103,7 +106,7 @@ spec: description: "PodFailurePolicyRule describes how a pod failure is handled when the requirements are met.\nOne of onExitCodes and onPodConditions, but not both, can be used in each rule." properties: action: - description: "Specifies the action taken on a pod failure when the requirements are satisfied.\nPossible values are:\n\n\n- FailJob: indicates that the pod's job is marked as Failed and all\n running pods are terminated.\n- FailIndex: indicates that the pod's index is marked as Failed and will\n not be restarted.\n This value is beta-level. It can be used when the\n `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n- Ignore: indicates that the counter towards the .backoffLimit is not\n incremented and a replacement pod is created.\n- Count: indicates that the pod is handled in the default way - the\n counter towards the .backoffLimit is incremented.\nAdditional values are considered to be added in the future. Clients should\nreact to an unknown action by skipping the rule." + description: "Specifies the action taken on a pod failure when the requirements are satisfied.\nPossible values are:\n\n- FailJob: indicates that the pod's job is marked as Failed and all\n running pods are terminated.\n- FailIndex: indicates that the pod's index is marked as Failed and will\n not be restarted.\n This value is beta-level. It can be used when the\n `JobBackoffLimitPerIndex` feature gate is enabled (enabled by default).\n- Ignore: indicates that the counter towards the .backoffLimit is not\n incremented and a replacement pod is created.\n- Count: indicates that the pod is handled in the default way - the\n counter towards the .backoffLimit is incremented.\nAdditional values are considered to be added in the future. Clients should\nreact to an unknown action by skipping the rule." type: "string" onExitCodes: description: "Represents the requirement on the container exit codes." @@ -112,7 +115,7 @@ spec: description: "Restricts the check for exit codes to the container with the\nspecified name. When null, the rule applies to all containers.\nWhen specified, it should match one the container or initContainer\nnames in the pod template." type: "string" operator: - description: "Represents the relationship between the container exit code(s) and the\nspecified values. Containers completed with success (exit code 0) are\nexcluded from the requirement check. Possible values are:\n\n\n- In: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is in the set of specified values.\n- NotIn: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is not in the set of specified values.\nAdditional values are considered to be added in the future. Clients should\nreact to an unknown operator by assuming the requirement is not satisfied." + description: "Represents the relationship between the container exit code(s) and the\nspecified values. Containers completed with success (exit code 0) are\nexcluded from the requirement check. Possible values are:\n\n- In: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is in the set of specified values.\n- NotIn: the requirement is satisfied if at least one container exit code\n (might be multiple if there are multiple containers not restricted\n by the 'containerName' field) is not in the set of specified values.\nAdditional values are considered to be added in the future. Clients should\nreact to an unknown operator by assuming the requirement is not satisfied." type: "string" values: description: "Specifies the set of values. Each returned container exit code (might be\nmultiple in case of multiple containers) is checked against this set of\nvalues with respect to the operator. The list of values must be ordered\nand must not contain duplicates. Value '0' cannot be used for the In operator.\nAt least one element is required. At most 255 elements are allowed." @@ -151,7 +154,7 @@ spec: - "rules" type: "object" podReplacementPolicy: - description: "podReplacementPolicy specifies when to create replacement Pods.\nPossible values are:\n- TerminatingOrFailed means that we recreate pods\n when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n Failed or Succeeded) before creating a replacement Pod.\n\n\nWhen using podFailurePolicy, Failed is the the only allowed value.\nTerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use.\nThis is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle.\nThis is on by default." + description: "podReplacementPolicy specifies when to create replacement Pods.\nPossible values are:\n- TerminatingOrFailed means that we recreate pods\n when they are terminating (has a metadata.deletionTimestamp) or failed.\n- Failed means to wait until a previously created Pod is fully terminated (has phase\n Failed or Succeeded) before creating a replacement Pod.\n\nWhen using podFailurePolicy, Failed is the the only allowed value.\nTerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use.\nThis is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle.\nThis is on by default." type: "string" selector: description: "A label query over pods that should match the pod count.\nNormally, the system sets this field for you.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" @@ -172,11 +175,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -184,6 +189,27 @@ spec: type: "object" type: "object" x-kubernetes-map-type: "atomic" + successPolicy: + description: "successPolicy specifies the policy when the Job can be declared as succeeded.\nIf empty, the default behavior applies - the Job is declared as succeeded\nonly when the number of succeeded pods equals to the completions.\nWhen the field is specified, it must be immutable and works only for the Indexed Jobs.\nOnce the Job meets the SuccessPolicy, the lingering pods are terminated.\n\nThis field is beta-level. To use this field, you must enable the\n`JobSuccessPolicy` feature gate (enabled by default)." + properties: + rules: + description: "rules represents the list of alternative rules for the declaring the Jobs\nas successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met,\nthe \"SucceededCriteriaMet\" condition is added, and the lingering pods are removed.\nThe terminal state for such a Job has the \"Complete\" condition.\nAdditionally, these rules are evaluated in order; Once the Job meets one of the rules,\nother rules are ignored. At most 20 elements are allowed." + items: + description: "SuccessPolicyRule describes rule for declaring a Job as succeeded.\nEach rule must have at least one of the \"succeededIndexes\" or \"succeededCount\" specified." + properties: + succeededCount: + description: "succeededCount specifies the minimal required size of the actual set of the succeeded indexes\nfor the Job. When succeededCount is used along with succeededIndexes, the check is\nconstrained only to the set of indexes specified by succeededIndexes.\nFor example, given that succeededIndexes is \"1-4\", succeededCount is \"3\",\nand completed indexes are \"1\", \"3\", and \"5\", the Job isn't declared as succeeded\nbecause only \"1\" and \"3\" indexes are considered in that rules.\nWhen this field is null, this doesn't default to any value and\nis never evaluated at any time.\nWhen specified it needs to be a positive integer." + format: "int32" + type: "integer" + succeededIndexes: + description: "succeededIndexes specifies the set of indexes\nwhich need to be contained in the actual set of the succeeded indexes for the Job.\nThe list of indexes must be within 0 to \".spec.completions-1\" and\nmust not contain duplicates. At least one element is required.\nThe indexes are represented as intervals separated by commas.\nThe intervals can be a decimal integer or a pair of decimal integers separated by a hyphen.\nThe number are listed in represented by the first and last element of the series,\nseparated by a hyphen.\nFor example, if the completed indexes are 1, 3, 4, 5 and 7, they are\nrepresented as \"1,3-5,7\".\nWhen this field is null, this field doesn't default to any value\nand is never evaluated at any time." + type: "string" + type: "object" + type: "array" + x-kubernetes-list-type: "atomic" + required: + - "rules" + type: "object" suspend: description: "suspend specifies whether the Job controller should create Pods or not. If\na Job is created with suspend set to true, no Pods are created by the Job\ncontroller. If a Job is suspended after creation (i.e. the flag goes from\nfalse to true), the Job controller will delete all active Pods associated\nwith this Job. Users must design their workload to gracefully handle this.\nSuspending a Job will reset the StartTime field of the Job, effectively\nresetting the ActiveDeadlineSeconds timer too. Defaults to false." type: "boolean" @@ -192,6 +218,23 @@ spec: properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + finalizers: + items: + type: "string" + type: "array" + labels: + additionalProperties: + type: "string" + type: "object" + name: + type: "string" + namespace: + type: "string" type: "object" spec: description: "Specification of the desired behavior of the pod.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" @@ -230,11 +273,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -251,11 +296,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" weight: @@ -267,6 +314,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: @@ -291,11 +339,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: @@ -312,14 +362,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" @@ -355,11 +408,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -368,13 +423,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" @@ -398,11 +453,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -415,6 +472,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" @@ -430,6 +488,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: @@ -454,11 +513,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -467,13 +528,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" @@ -497,11 +558,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -514,6 +577,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" @@ -521,6 +585,7 @@ spec: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: description: "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." @@ -552,11 +617,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -565,13 +632,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" @@ -595,11 +662,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -612,6 +681,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" @@ -627,6 +697,7 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: description: "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: @@ -651,11 +722,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -664,13 +737,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nAlso, MatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" x-kubernetes-list-type: "atomic" mismatchLabelKeys: - description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both MismatchLabelKeys and LabelSelector.\nAlso, MismatchLabelKeys cannot be set when LabelSelector isn't set.\nThis is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate." + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." items: type: "string" type: "array" @@ -694,11 +767,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -711,6 +786,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" @@ -718,6 +794,7 @@ spec: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" automountServiceAccountToken: @@ -733,11 +810,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: description: "Entrypoint array. Not executed within a shell.\nThe container image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: description: "List of environment variables to set in the container.\nCannot be updated." items: @@ -759,7 +838,8 @@ spec: description: "The key to select." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -808,7 +888,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -822,6 +903,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: description: "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key exists in multiple\nsources, the value associated with the last source will take precedence.\nValues defined by an Env with a duplicate key will take precedence.\nCannot be updated." items: @@ -831,7 +915,8 @@ spec: description: "The ConfigMap to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap must be defined" @@ -845,7 +930,8 @@ spec: description: "The Secret to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret must be defined" @@ -854,6 +940,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: description: "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." type: "string" @@ -874,6 +961,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -897,6 +985,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -949,6 +1038,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -972,6 +1062,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1025,6 +1116,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -1038,7 +1130,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1065,6 +1158,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1161,6 +1255,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -1174,7 +1269,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1201,6 +1297,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1273,13 +1370,16 @@ spec: description: "Compute Resources required by this container.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -1315,6 +1415,18 @@ spec: allowPrivilegeEscalation: description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: @@ -1324,18 +1436,20 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers.\nThe default is DefaultProcMount which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." @@ -1374,7 +1488,7 @@ spec: description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" @@ -1407,6 +1521,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -1420,7 +1535,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1447,6 +1563,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1529,6 +1646,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: description: "Pod volumes to mount into the container's filesystem.\nCannot be updated." items: @@ -1538,7 +1658,7 @@ spec: description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." @@ -1546,6 +1666,9 @@ spec: readOnly: description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" @@ -1557,6 +1680,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: description: "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated." type: "string" @@ -1564,6 +1690,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" dnsConfig: description: "Specifies the DNS parameters of a pod.\nParameters specified here will be merged to the generated DNS\nconfiguration based on DNSPolicy." properties: @@ -1572,6 +1701,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" options: description: "A list of DNS resolver options.\nThis will be merged with the base options generated from DNSPolicy.\nDuplicated entries will be removed. Resolution options given in Options\nwill override those that appear in the base DNSPolicy." items: @@ -1584,11 +1714,13 @@ spec: type: "string" type: "object" type: "array" + x-kubernetes-list-type: "atomic" searches: description: "A list of DNS search domains for host-name lookup.\nThis will be appended to the base search paths generated from DNSPolicy.\nDuplicated search paths will be removed." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" dnsPolicy: description: "Set DNS policy for the pod.\nDefaults to \"ClusterFirst\".\nValid values are 'ClusterFirstWithHostNet', 'ClusterFirst', 'Default' or 'None'.\nDNS parameters given in DNSConfig will be merged with the policy selected with DNSPolicy.\nTo have DNS options set along with hostNetwork, you have to specify DNS policy\nexplicitly to 'ClusterFirstWithHostNet'." @@ -1599,18 +1731,20 @@ spec: ephemeralContainers: description: "List of ephemeral containers run in this pod. Ephemeral containers may be run in an existing\npod to perform user-initiated actions such as debugging. This list cannot be specified when\ncreating a pod, and it cannot be modified by updating the pod spec. In order to add an\nephemeral container to an existing pod, use the pod's ephemeralcontainers subresource." items: - description: "An EphemeralContainer is a temporary container that you may add to an existing Pod for\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\nPod to exceed its resource allocation.\n\n\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\nPod. Ephemeral containers may not be removed or restarted." + description: "An EphemeralContainer is a temporary container that you may add to an existing Pod for\nuser-initiated activities such as debugging. Ephemeral containers have no resource or\nscheduling guarantees, and they will not be restarted when they exit or when a Pod is\nremoved or restarted. The kubelet may evict a Pod if an ephemeral container causes the\nPod to exceed its resource allocation.\n\nTo add an ephemeral container, use the ephemeralcontainers subresource of an existing\nPod. Ephemeral containers may not be removed or restarted." properties: args: description: "Arguments to the entrypoint.\nThe image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: description: "Entrypoint array. Not executed within a shell.\nThe image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: description: "List of environment variables to set in the container.\nCannot be updated." items: @@ -1632,7 +1766,8 @@ spec: description: "The key to select." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -1681,7 +1816,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -1695,6 +1831,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: description: "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key exists in multiple\nsources, the value associated with the last source will take precedence.\nValues defined by an Env with a duplicate key will take precedence.\nCannot be updated." items: @@ -1704,7 +1843,8 @@ spec: description: "The ConfigMap to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap must be defined" @@ -1718,7 +1858,8 @@ spec: description: "The Secret to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret must be defined" @@ -1727,6 +1868,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: description: "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images" type: "string" @@ -1747,6 +1889,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -1770,6 +1913,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1822,6 +1966,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -1845,6 +1990,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1898,6 +2044,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -1911,7 +2058,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1938,6 +2086,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2034,6 +2183,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -2047,7 +2197,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2074,6 +2225,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2146,13 +2298,16 @@ spec: description: "Resources are not allowed for ephemeral containers. Ephemeral containers use spare resources\nalready allocated to the pod." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -2188,6 +2343,18 @@ spec: allowPrivilegeEscalation: description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: @@ -2197,18 +2364,20 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers.\nThe default is DefaultProcMount which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." @@ -2247,7 +2416,7 @@ spec: description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" @@ -2280,6 +2449,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -2293,7 +2463,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2320,6 +2491,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2378,7 +2550,7 @@ spec: description: "Whether the container runtime should close the stdin channel after it has been opened by\na single attach. When stdin is true the stdin stream will remain open across multiple attach\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\nat which time stdin is closed and remains closed until the container is restarted. If this\nflag is false, a container processes that reads from stdin will never receive an EOF.\nDefault is false" type: "boolean" targetContainerName: - description: "If set, the name of the container from PodSpec that this ephemeral container targets.\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\n\n\nThe container runtime must implement support for this feature. If the runtime does not\nsupport namespace targeting then the result of setting this field is undefined." + description: "If set, the name of the container from PodSpec that this ephemeral container targets.\nThe ephemeral container will be run in the namespaces (IPC, PID, etc) of this container.\nIf not set then the ephemeral container uses the namespaces configured in the Pod spec.\n\nThe container runtime must implement support for this feature. If the runtime does not\nsupport namespace targeting then the result of setting this field is undefined." type: "string" terminationMessagePath: description: "Optional: Path at which the file to which the container's termination message\nwill be written is mounted into the container's filesystem.\nMessage written is intended to be brief final status, such as an assertion failure message.\nWill be truncated by the node if greater than 4096 bytes. The total message length across\nall containers will be limited to 12kb.\nDefaults to /dev/termination-log.\nCannot be updated." @@ -2405,6 +2577,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: description: "Pod volumes to mount into the container's filesystem. Subpath mounts are not allowed for ephemeral containers.\nCannot be updated." items: @@ -2414,7 +2589,7 @@ spec: description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." @@ -2422,6 +2597,9 @@ spec: readOnly: description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" @@ -2433,6 +2611,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: description: "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated." type: "string" @@ -2440,8 +2621,11 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" hostAliases: - description: "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\nfile if specified. This is only valid for non-hostNetwork pods." + description: "HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts\nfile if specified." items: description: "HostAlias holds the mapping between IP and hostnames that will be injected as an entry in the\npod's hosts file." properties: @@ -2450,11 +2634,17 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" ip: description: "IP address of the host file entry." type: "string" + required: + - "ip" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "ip" + x-kubernetes-list-type: "map" hostIPC: description: "Use the host's ipc namespace.\nOptional: Default to false." type: "boolean" @@ -2476,11 +2666,15 @@ spec: description: "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" initContainers: description: "List of initialization containers belonging to the pod.\nInit containers are executed in order prior to containers being started. If any\ninit container fails, the pod is considered to have failed and is handled according\nto its restartPolicy. The name for an init container or normal container must be\nunique among all containers.\nInit containers may not have Lifecycle actions, Readiness probes, Liveness probes, or Startup probes.\nThe resourceRequirements of an init container are taken into account during scheduling\nby finding the highest request/limit for each resource type, and then using the max of\nof that value or the sum of the normal containers. Limits are applied to init containers\nin a similar fashion.\nInit containers cannot currently be added or removed.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/" items: @@ -2491,11 +2685,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: description: "Entrypoint array. Not executed within a shell.\nThe container image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: description: "List of environment variables to set in the container.\nCannot be updated." items: @@ -2517,7 +2713,8 @@ spec: description: "The key to select." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -2566,7 +2763,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -2580,6 +2778,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: description: "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key exists in multiple\nsources, the value associated with the last source will take precedence.\nValues defined by an Env with a duplicate key will take precedence.\nCannot be updated." items: @@ -2589,7 +2790,8 @@ spec: description: "The ConfigMap to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap must be defined" @@ -2603,7 +2805,8 @@ spec: description: "The Secret to select from" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret must be defined" @@ -2612,6 +2815,7 @@ spec: x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: description: "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." type: "string" @@ -2632,6 +2836,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -2655,6 +2860,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2707,6 +2913,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." @@ -2730,6 +2937,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2783,6 +2991,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -2796,7 +3005,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2823,6 +3033,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2919,6 +3130,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -2932,7 +3144,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2959,6 +3172,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -3031,13 +3245,16 @@ spec: description: "Compute Resources required by this container.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." + type: "string" required: - "name" type: "object" @@ -3073,6 +3290,18 @@ spec: allowPrivilegeEscalation: description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: @@ -3082,18 +3311,20 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers.\nThe default is DefaultProcMount which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." @@ -3132,7 +3363,7 @@ spec: description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" @@ -3165,6 +3396,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." @@ -3178,7 +3410,8 @@ spec: format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\n\nIf this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -3205,6 +3438,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -3287,6 +3521,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: description: "Pod volumes to mount into the container's filesystem.\nCannot be updated." items: @@ -3296,7 +3533,7 @@ spec: description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." @@ -3304,6 +3541,9 @@ spec: readOnly: description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" @@ -3315,6 +3555,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: description: "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated." type: "string" @@ -3322,8 +3565,11 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" nodeName: - description: "NodeName is a request to schedule this pod onto a specific node. If it is non-empty,\nthe scheduler simply schedules this pod onto that node, assuming that it fits resource\nrequirements." + description: "NodeName indicates in which node this pod is scheduled.\nIf empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName.\nOnce this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod.\nThis field should not be used to express a desire for the pod to be scheduled on a specific node.\nhttps://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename" type: "string" nodeSelector: additionalProperties: @@ -3332,7 +3578,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" os: - description: "Specifies the OS of the containers in the pod.\nSome pod and container fields are restricted if this is set.\n\n\nIf the OS field is set to linux, the following fields must be unset:\n-securityContext.windowsOptions\n\n\nIf the OS field is set to windows, following fields must be unset:\n- spec.hostPID\n- spec.hostIPC\n- spec.hostUsers\n- spec.securityContext.seLinuxOptions\n- spec.securityContext.seccompProfile\n- spec.securityContext.fsGroup\n- spec.securityContext.fsGroupChangePolicy\n- spec.securityContext.sysctls\n- spec.shareProcessNamespace\n- spec.securityContext.runAsUser\n- spec.securityContext.runAsGroup\n- spec.securityContext.supplementalGroups\n- spec.containers[*].securityContext.seLinuxOptions\n- spec.containers[*].securityContext.seccompProfile\n- spec.containers[*].securityContext.capabilities\n- spec.containers[*].securityContext.readOnlyRootFilesystem\n- spec.containers[*].securityContext.privileged\n- spec.containers[*].securityContext.allowPrivilegeEscalation\n- spec.containers[*].securityContext.procMount\n- spec.containers[*].securityContext.runAsUser\n- spec.containers[*].securityContext.runAsGroup" + description: "Specifies the OS of the containers in the pod.\nSome pod and container fields are restricted if this is set.\n\nIf the OS field is set to linux, the following fields must be unset:\n-securityContext.windowsOptions\n\nIf the OS field is set to windows, following fields must be unset:\n- spec.hostPID\n- spec.hostIPC\n- spec.hostUsers\n- spec.securityContext.appArmorProfile\n- spec.securityContext.seLinuxOptions\n- spec.securityContext.seccompProfile\n- spec.securityContext.fsGroup\n- spec.securityContext.fsGroupChangePolicy\n- spec.securityContext.sysctls\n- spec.shareProcessNamespace\n- spec.securityContext.runAsUser\n- spec.securityContext.runAsGroup\n- spec.securityContext.supplementalGroups\n- spec.securityContext.supplementalGroupsPolicy\n- spec.containers[*].securityContext.appArmorProfile\n- spec.containers[*].securityContext.seLinuxOptions\n- spec.containers[*].securityContext.seccompProfile\n- spec.containers[*].securityContext.capabilities\n- spec.containers[*].securityContext.readOnlyRootFilesystem\n- spec.containers[*].securityContext.privileged\n- spec.containers[*].securityContext.allowPrivilegeEscalation\n- spec.containers[*].securityContext.procMount\n- spec.containers[*].securityContext.runAsUser\n- spec.containers[*].securityContext.runAsGroup" properties: name: description: "Name is the name of the operating system. The currently supported values are linux and windows.\nAdditional value may be defined in future and can be one of:\nhttps://github.com/opencontainers/runtime-spec/blob/master/config.md#platform-specific-configuration\nClients should expect to handle additional values and treat unrecognized values in this field as os: null" @@ -3371,24 +3617,21 @@ spec: - "conditionType" type: "object" type: "array" + x-kubernetes-list-type: "atomic" resourceClaims: - description: "ResourceClaims defines which ResourceClaims must be allocated\nand reserved before the Pod is allowed to start. The resources\nwill be made available to those containers which consume them\nby name.\n\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\n\nThis field is immutable." + description: "ResourceClaims defines which ResourceClaims must be allocated\nand reserved before the Pod is allowed to start. The resources\nwill be made available to those containers which consume them\nby name.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable." items: - description: "PodResourceClaim references exactly one ResourceClaim through a ClaimSource.\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\nContainers that need access to the ResourceClaim reference it with this name." + description: "PodResourceClaim references exactly one ResourceClaim, either directly\nor by naming a ResourceClaimTemplate which is then turned into a ResourceClaim\nfor the pod.\n\nIt adds a name to it that uniquely identifies the ResourceClaim inside the Pod.\nContainers that need access to the ResourceClaim reference it with this name." properties: name: description: "Name uniquely identifies this resource claim inside the pod.\nThis must be a DNS_LABEL." type: "string" - source: - description: "Source describes where to find the ResourceClaim." - properties: - resourceClaimName: - description: "ResourceClaimName is the name of a ResourceClaim object in the same\nnamespace as this pod." - type: "string" - resourceClaimTemplateName: - description: "ResourceClaimTemplateName is the name of a ResourceClaimTemplate\nobject in the same namespace as this pod.\n\n\nThe template will be used to create a new ResourceClaim, which will\nbe bound to this pod. When this pod is deleted, the ResourceClaim\nwill also be deleted. The pod name and resource name, along with a\ngenerated component, will be used to form a unique name for the\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\n\n\nThis field is immutable and no changes will be made to the\ncorresponding ResourceClaim by the control plane after creating the\nResourceClaim." - type: "string" - type: "object" + resourceClaimName: + description: "ResourceClaimName is the name of a ResourceClaim object in the same\nnamespace as this pod.\n\nExactly one of ResourceClaimName and ResourceClaimTemplateName must\nbe set." + type: "string" + resourceClaimTemplateName: + description: "ResourceClaimTemplateName is the name of a ResourceClaimTemplate\nobject in the same namespace as this pod.\n\nThe template will be used to create a new ResourceClaim, which will\nbe bound to this pod. When this pod is deleted, the ResourceClaim\nwill also be deleted. The pod name and resource name, along with a\ngenerated component, will be used to form a unique name for the\nResourceClaim, which will be recorded in pod.status.resourceClaimStatuses.\n\nThis field is immutable and no changes will be made to the\ncorresponding ResourceClaim by the control plane after creating the\nResourceClaim.\n\nExactly one of ResourceClaimName and ResourceClaimTemplateName must\nbe set." + type: "string" required: - "name" type: "object" @@ -3406,7 +3649,7 @@ spec: description: "If specified, the pod will be dispatched by specified scheduler.\nIf not specified, the pod will be dispatched by default scheduler." type: "string" schedulingGates: - description: "SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\nscheduler will not attempt to schedule the pod.\n\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards.\n\n\nThis is a beta feature enabled by the PodSchedulingReadiness feature gate." + description: "SchedulingGates is an opaque list of values that if specified will block scheduling the pod.\nIf schedulingGates is not empty, the pod will stay in the SchedulingGated state and the\nscheduler will not attempt to schedule the pod.\n\nSchedulingGates can only be set at pod creation time, and be removed only afterwards." items: description: "PodSchedulingGate is associated to a Pod to guard its scheduling." properties: @@ -3423,8 +3666,20 @@ spec: securityContext: description: "SecurityContext holds pod-level security attributes and common container settings.\nOptional: Defaults to empty. See type description for default values of each field." properties: + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by the containers in this pod.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" fsGroup: - description: "A special supplemental group that applies to all containers in a pod.\nSome volume types allow the Kubelet to change the ownership of that volume\nto be owned by the pod:\n\n\n1. The owning GID will be the FSGroup\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n3. The permission bits are OR'd with rw-rw----\n\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\nNote that this field cannot be set when spec.os.name is windows." + description: "A special supplemental group that applies to all containers in a pod.\nSome volume types allow the Kubelet to change the ownership of that volume\nto be owned by the pod:\n\n1. The owning GID will be the FSGroup\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" fsGroupChangePolicy: @@ -3464,17 +3719,21 @@ spec: description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" type: "object" supplementalGroups: - description: "A list of groups applied to the first process run in each container, in addition\nto the container's primary GID, the fsGroup (if specified), and group memberships\ndefined in the container image for the uid of the container process. If unspecified,\nno additional groups are added to any container. Note that group memberships\ndefined in the container image for the uid of the container process are still effective,\neven if they are not included in this list.\nNote that this field cannot be set when spec.os.name is windows." + description: "A list of groups applied to the first process run in each container, in\naddition to the container's primary GID and fsGroup (if specified). If\nthe SupplementalGroupsPolicy feature is enabled, the\nsupplementalGroupsPolicy field determines whether these are in addition\nto or instead of any group memberships defined in the container image.\nIf unspecified, no additional groups are added, though group memberships\ndefined in the container image may still be used, depending on the\nsupplementalGroupsPolicy field.\nNote that this field cannot be set when spec.os.name is windows." items: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" + supplementalGroupsPolicy: + description: "Defines how supplemental groups of the first container processes are calculated.\nValid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n(Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\nand the container runtime must implement support for this feature.\nNote that this field cannot be set when spec.os.name is windows." + type: "string" sysctls: description: "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\nsysctls (by the container runtime) might fail to launch.\nNote that this field cannot be set when spec.os.name is windows." items: @@ -3491,6 +3750,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: description: "The Windows specific settings applied to all containers.\nIf unspecified, the options within a container's SecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux." properties: @@ -3509,7 +3769,7 @@ spec: type: "object" type: "object" serviceAccount: - description: "DeprecatedServiceAccount is a depreciated alias for ServiceAccountName.\nDeprecated: Use serviceAccountName instead." + description: "DeprecatedServiceAccount is a deprecated alias for ServiceAccountName.\nDeprecated: Use serviceAccountName instead." type: "string" serviceAccountName: description: "ServiceAccountName is the name of the ServiceAccount to use to run this pod.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/" @@ -3550,6 +3810,7 @@ spec: type: "string" type: "object" type: "array" + x-kubernetes-list-type: "atomic" topologySpreadConstraints: description: "TopologySpreadConstraints describes how a group of pods ought to spread across topology\ndomains. Scheduler will schedule pods in a way which abides by the constraints.\nAll topologySpreadConstraints are ANDed." items: @@ -3574,11 +3835,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3587,7 +3850,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" matchLabelKeys: - description: "MatchLabelKeys is a set of pod label keys to select the pods over which\nspreading will be calculated. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are ANDed with labelSelector\nto select the group of existing pods over which spreading will be calculated\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nMatchLabelKeys cannot be set when LabelSelector isn't set.\nKeys that don't exist in the incoming pod labels will\nbe ignored. A null or empty list means only match against labelSelector.\n\n\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)." + description: "MatchLabelKeys is a set of pod label keys to select the pods over which\nspreading will be calculated. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are ANDed with labelSelector\nto select the group of existing pods over which spreading will be calculated\nfor the incoming pod. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector.\nMatchLabelKeys cannot be set when LabelSelector isn't set.\nKeys that don't exist in the incoming pod labels will\nbe ignored. A null or empty list means only match against labelSelector.\n\nThis is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default)." items: type: "string" type: "array" @@ -3597,14 +3860,14 @@ spec: format: "int32" type: "integer" minDomains: - description: "MinDomains indicates a minimum number of eligible domains.\nWhen the number of eligible domains with matching topology keys is less than minDomains,\nPod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\nthis value has no effect on scheduling.\nAs a result, when the number of eligible domains is less than minDomains,\nscheduler won't schedule more than maxSkew Pods to those domains.\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\nValid values are integers greater than 0.\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\n\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\nlabelSelector spread as 2/2/2:\n| zone1 | zone2 | zone3 |\n| P P | P P | P P |\nThe number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\nIn this situation, new pod with the same labelSelector cannot be scheduled,\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\nit will violate MaxSkew.\n\n\nThis is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default)." + description: "MinDomains indicates a minimum number of eligible domains.\nWhen the number of eligible domains with matching topology keys is less than minDomains,\nPod Topology Spread treats \"global minimum\" as 0, and then the calculation of Skew is performed.\nAnd when the number of eligible domains with matching topology keys equals or greater than minDomains,\nthis value has no effect on scheduling.\nAs a result, when the number of eligible domains is less than minDomains,\nscheduler won't schedule more than maxSkew Pods to those domains.\nIf value is nil, the constraint behaves as if MinDomains is equal to 1.\nValid values are integers greater than 0.\nWhen value is not nil, WhenUnsatisfiable must be DoNotSchedule.\n\nFor example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same\nlabelSelector spread as 2/2/2:\n| zone1 | zone2 | zone3 |\n| P P | P P | P P |\nThe number of domains is less than 5(MinDomains), so \"global minimum\" is treated as 0.\nIn this situation, new pod with the same labelSelector cannot be scheduled,\nbecause computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones,\nit will violate MaxSkew." format: "int32" type: "integer" nodeAffinityPolicy: - description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\nwhen calculating pod topology spread skew. Options are:\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\n\nIf this value is nil, the behavior is equivalent to the Honor policy.\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." + description: "NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector\nwhen calculating pod topology spread skew. Options are:\n- Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations.\n- Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations.\n\nIf this value is nil, the behavior is equivalent to the Honor policy.\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." type: "string" nodeTaintsPolicy: - description: "NodeTaintsPolicy indicates how we will treat node taints when calculating\npod topology spread skew. Options are:\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\nhas a toleration, are included.\n- Ignore: node taints are ignored. All nodes are included.\n\n\nIf this value is nil, the behavior is equivalent to the Ignore policy.\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." + description: "NodeTaintsPolicy indicates how we will treat node taints when calculating\npod topology spread skew. Options are:\n- Honor: nodes without taints, along with tainted nodes for which the incoming pod\nhas a toleration, are included.\n- Ignore: node taints are ignored. All nodes are included.\n\nIf this value is nil, the behavior is equivalent to the Ignore policy.\nThis is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag." type: "string" topologyKey: description: "TopologyKey is the key of node labels. Nodes that have a label with this key\nand identical values are considered to be in the same topology.\nWe consider each as a \"bucket\", and try to put balanced number\nof pods into each bucket.\nWe define a domain as a particular instance of a topology.\nAlso, we define an eligible domain as a domain whose nodes meet the requirements of\nnodeAffinityPolicy and nodeTaintsPolicy.\ne.g. If TopologyKey is \"kubernetes.io/hostname\", each Node is a domain of that topology.\nAnd, if TopologyKey is \"topology.kubernetes.io/zone\", each zone is a domain of that topology.\nIt's a required field." @@ -3631,7 +3894,7 @@ spec: description: "awsElasticBlockStore represents an AWS Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" properties: fsType: - description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore\nTODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" type: "string" partition: description: "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." @@ -3659,12 +3922,14 @@ spec: description: "diskURI is the URI of data disk in the blob storage" type: "string" fsType: + default: "ext4" description: "fsType is Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" kind: description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: "string" readOnly: + default: false description: "readOnly Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" required: @@ -3695,6 +3960,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: "string" @@ -3708,7 +3974,8 @@ spec: description: "secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -3731,7 +3998,8 @@ spec: description: "secretRef is optional: points to a secret object containing parameters used to connect\nto OpenStack." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -3768,8 +4036,10 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional specify whether the ConfigMap or its keys must be defined" @@ -3789,7 +4059,8 @@ spec: description: "nodePublishSecretRef is a reference to the secret object containing\nsensitive information to pass to the CSI driver to complete the CSI\nNodePublishVolume and NodeUnpublishVolume calls.\nThis field is optional, and may be empty if no secret is required. If the\nsecret object contains more than one secret, all secret references are passed." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -3817,7 +4088,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -3860,6 +4131,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: description: "emptyDir represents a temporary directory that shares a pod's lifetime.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" @@ -3876,13 +4148,30 @@ spec: x-kubernetes-int-or-string: true type: "object" ephemeral: - description: "ephemeral represents a volume that is handled by a cluster storage driver.\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\nand deleted when the pod is removed.\n\n\nUse this if:\na) the volume is only needed while the pod runs,\nb) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and\nd) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\n\nUse PersistentVolumeClaim or one of the vendor-specific\nAPIs for volumes that persist for longer than the lifecycle\nof an individual pod.\n\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\nbe used that way - see the documentation of the driver for\nmore information.\n\n\nA pod can use both types of ephemeral volumes and\npersistent volumes at the same time." + description: "ephemeral represents a volume that is handled by a cluster storage driver.\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\nand deleted when the pod is removed.\n\nUse this if:\na) the volume is only needed while the pod runs,\nb) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and\nd) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific\nAPIs for volumes that persist for longer than the lifecycle\nof an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\nbe used that way - see the documentation of the driver for\nmore information.\n\nA pod can use both types of ephemeral volumes and\npersistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC to provision the volume.\nThe pod in which this EphemeralVolumeSource is embedded will be the\nowner of the PVC, i.e. the PVC will be deleted together with the\npod. The name of the PVC will be `-` where\n`` is the name from the `PodSpec.Volumes` array\nentry. Pod validation will reject the pod if the concatenated name\nis not valid for a PVC (for example, too long).\n\n\nAn existing PVC with that name that is not owned by the pod\nwill *not* be used for the pod to avoid using an unrelated\nvolume by mistake. Starting the pod is then blocked until\nthe unrelated PVC is removed. If such a pre-created PVC is\nmeant to be used by the pod, the PVC has to updated with an\nowner reference to the pod once the pod exists. Normally\nthis should not be necessary, but it may be useful when\nmanually reconstructing a broken cluster.\n\n\nThis field is read-only and no changes will be made by Kubernetes\nto the PVC after it has been created.\n\n\nRequired, must not be nil." + description: "Will be used to create a stand-alone PVC to provision the volume.\nThe pod in which this EphemeralVolumeSource is embedded will be the\nowner of the PVC, i.e. the PVC will be deleted together with the\npod. The name of the PVC will be `-` where\n`` is the name from the `PodSpec.Volumes` array\nentry. Pod validation will reject the pod if the concatenated name\nis not valid for a PVC (for example, too long).\n\nAn existing PVC with that name that is not owned by the pod\nwill *not* be used for the pod to avoid using an unrelated\nvolume by mistake. Starting the pod is then blocked until\nthe unrelated PVC is removed. If such a pre-created PVC is\nmeant to be used by the pod, the PVC has to updated with an\nowner reference to the pod once the pod exists. Normally\nthis should not be necessary, but it may be useful when\nmanually reconstructing a broken cluster.\n\nThis field is read-only and no changes will be made by Kubernetes\nto the PVC after it has been created.\n\nRequired, must not be nil." properties: metadata: description: "May contain labels and annotations that will be copied into the PVC\nwhen creating it. No other fields are allowed and will be rejected during\nvalidation." + properties: + annotations: + additionalProperties: + type: "string" + type: "object" + finalizers: + items: + type: "string" + type: "array" + labels: + additionalProperties: + type: "string" + type: "object" + name: + type: "string" + namespace: + type: "string" type: "object" spec: description: "The specification for the PersistentVolumeClaim. The entire content is\ncopied unchanged into the PVC that gets created from this\ntemplate. The same fields as in a PersistentVolumeClaim\nare also valid here." @@ -3892,6 +4181,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: description: "dataSource field can be used to specify either:\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n* An existing PVC (PersistentVolumeClaim)\nIf the provisioner or an external controller can support the specified data source,\nit will create a new volume based on the contents of the specified data source.\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource." properties: @@ -3969,11 +4259,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -3985,7 +4277,7 @@ spec: description: "storageClassName is the name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" type: "string" volumeAttributesClassName: - description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass\n(Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled." + description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default)." type: "string" volumeMode: description: "volumeMode defines what type of volume is required by the claim.\nValue of Filesystem is implied when not included in claim spec." @@ -4002,7 +4294,7 @@ spec: description: "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." properties: fsType: - description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nTODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" lun: description: "lun is Optional: FC target lun number" @@ -4016,11 +4308,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: description: "wwids Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: description: "flexVolume represents a generic volume resource that is\nprovisioned/attached using an exec based plugin." @@ -4043,7 +4337,8 @@ spec: description: "secretRef is Optional: secretRef is reference to the secret object containing\nsensitive information to pass to the plugin scripts. This may be\nempty if no secret object is specified. If the secret object\ncontains more than one secret, all secrets are passed to the plugin\nscripts." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -4064,7 +4359,7 @@ spec: description: "gcePersistentDisk represents a GCE Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" properties: fsType: - description: "fsType is filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk\nTODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" type: "string" partition: description: "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" @@ -4111,7 +4406,7 @@ spec: - "path" type: "object" hostPath: - description: "hostPath represents a pre-existing file or directory on the host\nmachine that is directly exposed to the container. This is generally\nused for system agents or other privileged things that are allowed\nto see the host machine. Most containers will NOT need this.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath\n---\nTODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not\nmount host directories as read/write." + description: "hostPath represents a pre-existing file or directory on the host\nmachine that is directly exposed to the container. This is generally\nused for system agents or other privileged things that are allowed\nto see the host machine. Most containers will NOT need this.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" properties: path: description: "path of the directory on the host.\nIf the path is a symlink, it will follow the link to the real path.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" @@ -4122,6 +4417,16 @@ spec: required: - "path" type: "object" + image: + description: "image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\nThe volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n- Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n- IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\nA failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\nThe types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\nThe OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\nThe volume will be mounted read-only (ro) and non-executable files (noexec).\nSub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath).\nThe field spec.securityContext.fsGroupChangePolicy has no effect on this volume type." + properties: + pullPolicy: + description: "Policy for pulling OCI objects. Possible values are:\nAlways: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\nNever: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\nIfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise." + type: "string" + reference: + description: "Required: Image or artifact reference to be used.\nBehaves in the same way as pod.spec.containers[*].image.\nPull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." + type: "string" + type: "object" iscsi: description: "iscsi represents an ISCSI Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://examples.k8s.io/volumes/iscsi/README.md" properties: @@ -4132,7 +4437,7 @@ spec: description: "chapAuthSession defines whether support iSCSI Session CHAP authentication" type: "boolean" fsType: - description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi\nTODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi" type: "string" initiatorName: description: "initiatorName is the custom iSCSI Initiator Name.\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n: will be created for the connection." @@ -4141,6 +4446,7 @@ spec: description: "iqn is the target iSCSI Qualified Name." type: "string" iscsiInterface: + default: "default" description: "iscsiInterface is the interface Name that uses an iSCSI transport.\nDefaults to 'default' (tcp)." type: "string" lun: @@ -4152,6 +4458,7 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false." type: "boolean" @@ -4159,7 +4466,8 @@ spec: description: "secretRef is the CHAP Secret for iSCSI target and initiator authentication" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -4237,12 +4545,12 @@ spec: format: "int32" type: "integer" sources: - description: "sources is the list of volume projections" + description: "sources is the list of volume projections. Each entry in this list\nhandles one source." items: - description: "Projection that may be projected along with other supported volume types" + description: "Projection that may be projected along with other supported volume types.\nExactly one of these fields must be set." properties: clusterTrustBundle: - description: "ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\nof ClusterTrustBundle objects in an auto-updating file.\n\n\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\n\n\nClusterTrustBundle objects can either be selected by name, or by the\ncombination of signer name and a label selector.\n\n\nKubelet performs aggressive normalization of the PEM contents written\ninto the pod filesystem. Esoteric PEM features such as inter-block\ncomments and block headers are stripped. Certificates are deduplicated.\nThe ordering of certificates within the file is arbitrary, and Kubelet\nmay change the order over time." + description: "ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\nof ClusterTrustBundle objects in an auto-updating file.\n\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\n\nClusterTrustBundle objects can either be selected by name, or by the\ncombination of signer name and a label selector.\n\nKubelet performs aggressive normalization of the PEM contents written\ninto the pod filesystem. Esoteric PEM features such as inter-block\ncomments and block headers are stripped. Certificates are deduplicated.\nThe ordering of certificates within the file is arbitrary, and Kubelet\nmay change the order over time." properties: labelSelector: description: "Select all ClusterTrustBundles that match this label selector. Only has\neffect if signerName is set. Mutually-exclusive with name. If unset,\ninterpreted as \"match nothing\". If set but empty, interpreted as \"match\neverything\"." @@ -4263,11 +4571,13 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" @@ -4313,8 +4623,10 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional specify whether the ConfigMap or its keys must be defined" @@ -4330,7 +4642,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -4373,6 +4685,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: description: "secret information about the secret data to project" @@ -4397,8 +4710,10 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional field specify whether the Secret or its key must be defined" @@ -4423,6 +4738,7 @@ spec: type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: description: "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" @@ -4453,12 +4769,13 @@ spec: description: "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\nMore info: https://examples.k8s.io/volumes/rbd/README.md" properties: fsType: - description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd\nTODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd" type: "string" image: description: "image is the rados image name.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" keyring: + default: "/etc/ceph/keyring" description: "keyring is the path to key ring for RBDUser.\nDefault is /etc/ceph/keyring.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" monitors: @@ -4466,7 +4783,9 @@ spec: items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: + default: "rbd" description: "pool is the rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" readOnly: @@ -4476,11 +4795,13 @@ spec: description: "secretRef is name of the authentication secret for RBDUser. If provided\noverrides keyring.\nDefault is nil.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" user: + default: "admin" description: "user is the rados user name.\nDefault is admin.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" required: @@ -4491,6 +4812,7 @@ spec: description: "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." properties: fsType: + default: "xfs" description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\".\nDefault is \"xfs\"." type: "string" gateway: @@ -4506,7 +4828,8 @@ spec: description: "secretRef references to the secret for ScaleIO user and other\nsensitive information. If this is not provided, Login operation will fail." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -4514,6 +4837,7 @@ spec: description: "sslEnabled Flag enable/disable SSL communication with Gateway, default false" type: "boolean" storageMode: + default: "ThinProvisioned" description: "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\nDefault is ThinProvisioned." type: "string" storagePool: @@ -4557,6 +4881,7 @@ spec: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: description: "optional field specify whether the Secret or its keys must be defined" type: "boolean" @@ -4577,7 +4902,8 @@ spec: description: "secretRef specifies the secret to use for obtaining the StorageOS API\ncredentials. If not specified, default values will be attempted." properties: name: - description: "Name of the referent.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names\nTODO: Add other useful fields. apiVersion, kind, uid?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" x-kubernetes-map-type: "atomic" @@ -4610,6 +4936,9 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" required: - "containers" type: "object" @@ -4702,6 +5031,8 @@ spec: properties: Paused: type: "string" + authenticationsTypes: + type: "string" conditions: description: "Conditions an array representation to store multiple Conditions" items: @@ -4727,6 +5058,8 @@ spec: lastActiveTime: format: "date-time" type: "string" + triggersTypes: + type: "string" type: "object" type: "object" served: true diff --git a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledobjects.yaml b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledobjects.yaml index bc4a5168a..75a975227 100644 --- a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledobjects.yaml +++ b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/scaledobjects.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.15.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "scaledobjects.keda.sh" spec: group: "keda.sh" @@ -28,12 +28,6 @@ spec: - jsonPath: ".spec.maxReplicaCount" name: "Max" type: "integer" - - jsonPath: ".spec.triggers[*].type" - name: "Triggers" - type: "string" - - jsonPath: ".spec.triggers[*].authenticationRef.name" - name: "Authentication" - type: "string" - jsonPath: ".status.conditions[?(@.type==\"Ready\")].status" name: "Ready" type: "string" @@ -46,6 +40,12 @@ spec: - jsonPath: ".status.conditions[?(@.type==\"Paused\")].status" name: "Paused" type: "string" + - jsonPath: ".status.triggersTypes" + name: "Triggers" + type: "string" + - jsonPath: ".status.authenticationsTypes" + name: "Authentications" + type: "string" - jsonPath: ".metadata.creationTimestamp" name: "Age" type: "date" @@ -247,6 +247,8 @@ spec: status: description: "ScaledObjectStatus is the status for a ScaledObject resource" properties: + authenticationsTypes: + type: "string" compositeScalerName: type: "string" conditions: @@ -321,6 +323,8 @@ spec: type: "object" scaleTargetKind: type: "string" + triggersTypes: + type: "string" type: "object" required: - "spec" diff --git a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/triggerauthentications.yaml b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/triggerauthentications.yaml index b0368126a..c3daa307a 100644 --- a/crd-catalog/kedacore/keda/keda.sh/v1alpha1/triggerauthentications.yaml +++ b/crd-catalog/kedacore/keda/keda.sh/v1alpha1/triggerauthentications.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.15.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "triggerauthentications.keda.sh" spec: group: "keda.sh" diff --git a/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml b/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml index 1b324f621..23cbd3435 100644 --- a/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml +++ b/crd-catalog/kiali/kiali-operator/kiali.io/v1alpha1/kialis.yaml @@ -80,6 +80,11 @@ spec: openshift: description: "To learn more about these settings and how to configure the OpenShift authentication strategy, read the documentation at https://kiali.io/docs/configuration/authentication/openshift/" properties: + redirect_uris: + description: "The OAuthClient redirect URIs. You normally do not have to set this unless you are creating remote cluster resources (see `deployment.remote_cluster_resources_only`) with `auth.strategy` set to `openshift`." + items: + type: "string" + type: "array" token_inactivity_timeout: description: "Timeout that overrides the default OpenShift token inactivity timeout. This value represents the maximum amount of time in seconds that can occur between consecutive uses of the token. Tokens become invalid if they are not used within this temporal window. If 0, the Kiali tokens never timeout. OpenShift may have a minimum allowed value - see the OpenShift documentation specific for the version of OpenShift you are using. WARNING: existing tokens will not be affected by changing this setting." type: "integer" @@ -415,6 +420,9 @@ spec: priority_class_name: description: "The priorityClassName used to assign the priority of the Kiali pod." type: "string" + remote_cluster_resources_only: + description: "When `true`, only those resources necessary for a remote Kiali Server to access this cluster are created (such as the service account and roles/bindings). There will be no Kiali Server deployment/pod created when this is `true`." + type: "boolean" replicas: description: "The replica count for the Kiail deployment. If `deployment.hpa` is specified, this setting is ignored." type: "integer" diff --git a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/clusteroutputs.yaml b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/clusteroutputs.yaml index adb6f4a70..181299600 100644 --- a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/clusteroutputs.yaml +++ b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/clusteroutputs.yaml @@ -4727,6 +4727,9 @@ spec: type: "object" type: "object" nullout: + properties: + never_flush: + type: "boolean" type: "object" opensearch: properties: @@ -5342,6 +5345,8 @@ spec: type: "boolean" reload_on_failure: type: "boolean" + remove_keys: + type: "string" remove_keys_on_update: type: "string" remove_keys_on_update_key: diff --git a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/outputs.yaml b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/outputs.yaml index 693b40486..fee4e2fb9 100644 --- a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/outputs.yaml +++ b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1alpha1/outputs.yaml @@ -4391,6 +4391,9 @@ spec: type: "object" type: "object" nullout: + properties: + never_flush: + type: "boolean" type: "object" opensearch: properties: @@ -5006,6 +5009,8 @@ spec: type: "boolean" reload_on_failure: type: "boolean" + remove_keys: + type: "string" remove_keys_on_update: type: "string" remove_keys_on_update_key: diff --git a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/clusteroutputs.yaml b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/clusteroutputs.yaml index 0772c6f99..9b34994fa 100644 --- a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/clusteroutputs.yaml +++ b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/clusteroutputs.yaml @@ -4727,6 +4727,9 @@ spec: type: "object" type: "object" nullout: + properties: + never_flush: + type: "boolean" type: "object" opensearch: properties: @@ -5342,6 +5345,8 @@ spec: type: "boolean" reload_on_failure: type: "boolean" + remove_keys: + type: "string" remove_keys_on_update: type: "string" remove_keys_on_update_key: diff --git a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/outputs.yaml b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/outputs.yaml index 801c54f15..5b8338d8d 100644 --- a/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/outputs.yaml +++ b/crd-catalog/kube-logging/logging-operator/logging.banzaicloud.io/v1beta1/outputs.yaml @@ -4723,6 +4723,9 @@ spec: type: "object" type: "object" nullout: + properties: + never_flush: + type: "boolean" type: "object" opensearch: properties: @@ -5338,6 +5341,8 @@ spec: type: "boolean" reload_on_failure: type: "boolean" + remove_keys: + type: "string" remove_keys_on_update: type: "string" remove_keys_on_update_key: diff --git a/crd-catalog/kubernetes-csi/external-snapshotter/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotcontents.yaml b/crd-catalog/kubernetes-csi/external-snapshotter/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotcontents.yaml index 53243aff6..7e9713b6d 100644 --- a/crd-catalog/kubernetes-csi/external-snapshotter/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotcontents.yaml +++ b/crd-catalog/kubernetes-csi/external-snapshotter/groupsnapshot.storage.k8s.io/v1alpha1/volumegroupsnapshotcontents.yaml @@ -139,8 +139,6 @@ spec: x-kubernetes-validations: - message: "both volumeGroupSnapshotRef.name and volumeGroupSnapshotRef.namespace must be set" rule: "has(self.name) && has(self.__namespace__)" - - message: "volumeGroupSnapshotRef is immutable" - rule: "self == oldSelf" required: - "deletionPolicy" - "driver" diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusteridentities.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusteridentities.yaml index ffc0e226b..4f1a04a2c 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusteridentities.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusteridentities.yaml @@ -92,13 +92,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusters.yaml index 039707bcc..221bfd855 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclusters.yaml @@ -83,6 +83,9 @@ spec: - "host" - "port" type: "object" + disableClusterModule: + description: "DisableClusterModule is used to explicitly turn off the ClusterModule feature.\nThis should work along side NodeAntiAffinity feature flag.\nIf the NodeAntiAffinity feature flag is turned off, this will be disregarded." + type: "boolean" failureDomainSelector: description: "FailureDomainSelector is the label selector to use for failure domain selection\nfor the control plane nodes of the cluster.\nIf not set (`nil`), selecting failure domains will be disabled.\nAn empty value (`{}`) selects all existing failure domains.\nA valid selector will select all failure domains which match the selector." properties: @@ -159,13 +162,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -180,10 +183,10 @@ spec: attributes: additionalProperties: type: "string" - description: "Attributes is a free form map of attributes an infrastructure provider might use or require." + description: "attributes is a free form map of attributes an infrastructure provider might use or require." type: "object" controlPlane: - description: "ControlPlane determines if this failure domain is suitable for use by control plane machines." + description: "controlPlane determines if this failure domain is suitable for use by control plane machines." type: "boolean" type: "object" description: "FailureDomains is a list of failure domain objects synced from the infrastructure provider." diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclustertemplates.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclustertemplates.yaml index ed81122ae..e3d51a3c1 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclustertemplates.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vsphereclustertemplates.yaml @@ -71,6 +71,9 @@ spec: - "host" - "port" type: "object" + disableClusterModule: + description: "DisableClusterModule is used to explicitly turn off the ClusterModule feature.\nThis should work along side NodeAntiAffinity feature flag.\nIf the NodeAntiAffinity feature flag is turned off, this will be disregarded." + type: "boolean" failureDomainSelector: description: "FailureDomainSelector is the label selector to use for failure domain selection\nfor the control plane nodes of the cluster.\nIf not set (`nil`), selecting failure domains will be disabled.\nAn empty value (`{}`) selects all existing failure domains.\nA valid selector will select all failure domains which match the selector." properties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheredeploymentzones.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheredeploymentzones.yaml index 935d9f1de..0698d9e6e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheredeploymentzones.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheredeploymentzones.yaml @@ -72,13 +72,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachines.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachines.yaml index c4b38cb2f..1edd5869a 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachines.yaml @@ -384,13 +384,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachinetemplates.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachinetemplates.yaml index 98935c8ca..9eec43f1e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachinetemplates.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspheremachinetemplates.yaml @@ -40,7 +40,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspherevms.yaml b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspherevms.yaml index 30af7024c..183f024af 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspherevms.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api-provider-vsphere/infrastructure.cluster.x-k8s.io/v1beta1/vspherevms.yaml @@ -377,13 +377,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml index 2f3e2404c..663e027f2 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesetbindings.yaml @@ -33,36 +33,36 @@ spec: description: "ClusterResourceSetBindingSpec defines the desired state of ClusterResourceSetBinding." properties: bindings: - description: "Bindings is a list of ClusterResourceSets and their resources." + description: "bindings is a list of ClusterResourceSets and their resources." items: description: "ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet." properties: clusterResourceSetName: - description: "ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." + description: "clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." type: "string" resources: - description: "Resources is a list of resources that the ClusterResourceSet has." + description: "resources is a list of resources that the ClusterResourceSet has." items: description: "ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object." properties: applied: - description: "Applied is to track if a resource is applied to the cluster or not." + description: "applied is to track if a resource is applied to the cluster or not." type: "boolean" hash: - description: "Hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." + description: "hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." type: "string" kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" lastAppliedTime: - description: "LastAppliedTime identifies when this resource was last applied to the cluster." + description: "lastAppliedTime identifies when this resource was last applied to the cluster." format: "date-time" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml index 8db4796f8..1629f5221 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha3/clusterresourcesets.yaml @@ -66,18 +66,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" resources: - description: "Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." + description: "resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." items: description: "ResourceRef specifies a resource." properties: kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: @@ -86,7 +86,7 @@ spec: type: "object" type: "array" strategy: - description: "Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." + description: "strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." enum: - "ApplyOnce" type: "string" @@ -97,7 +97,7 @@ spec: description: "ClusterResourceSetStatus defines the observed state of ClusterResourceSet." properties: conditions: - description: "Conditions defines current state of the ClusterResourceSet." + description: "conditions defines current state of the ClusterResourceSet." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -112,13 +112,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -126,7 +126,7 @@ spec: type: "object" type: "array" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet." + description: "observedGeneration reflects the generation of the most recently observed ClusterResourceSet." format: "int64" type: "integer" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml index fc4a1ca94..fb5d7a1c7 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesetbindings.yaml @@ -38,36 +38,36 @@ spec: description: "ClusterResourceSetBindingSpec defines the desired state of ClusterResourceSetBinding." properties: bindings: - description: "Bindings is a list of ClusterResourceSets and their resources." + description: "bindings is a list of ClusterResourceSets and their resources." items: description: "ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet." properties: clusterResourceSetName: - description: "ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." + description: "clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." type: "string" resources: - description: "Resources is a list of resources that the ClusterResourceSet has." + description: "resources is a list of resources that the ClusterResourceSet has." items: description: "ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object." properties: applied: - description: "Applied is to track if a resource is applied to the cluster or not." + description: "applied is to track if a resource is applied to the cluster or not." type: "boolean" hash: - description: "Hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." + description: "hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." type: "string" kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" lastAppliedTime: - description: "LastAppliedTime identifies when this resource was last applied to the cluster." + description: "lastAppliedTime identifies when this resource was last applied to the cluster." format: "date-time" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml index 7c9d19331..028921cdc 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1alpha4/clusterresourcesets.yaml @@ -71,18 +71,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" resources: - description: "Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." + description: "resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." items: description: "ResourceRef specifies a resource." properties: kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: @@ -91,7 +91,7 @@ spec: type: "object" type: "array" strategy: - description: "Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." + description: "strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." enum: - "ApplyOnce" type: "string" @@ -102,7 +102,7 @@ spec: description: "ClusterResourceSetStatus defines the observed state of ClusterResourceSet." properties: conditions: - description: "Conditions defines current state of the ClusterResourceSet." + description: "conditions defines current state of the ClusterResourceSet." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -117,13 +117,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -131,7 +131,7 @@ spec: type: "object" type: "array" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet." + description: "observedGeneration reflects the generation of the most recently observed ClusterResourceSet." format: "int64" type: "integer" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml index e4ae4b5a9..7acfb4c13 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesetbindings.yaml @@ -37,36 +37,36 @@ spec: description: "ClusterResourceSetBindingSpec defines the desired state of ClusterResourceSetBinding." properties: bindings: - description: "Bindings is a list of ClusterResourceSets and their resources." + description: "bindings is a list of ClusterResourceSets and their resources." items: description: "ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet." properties: clusterResourceSetName: - description: "ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." + description: "clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding." type: "string" resources: - description: "Resources is a list of resources that the ClusterResourceSet has." + description: "resources is a list of resources that the ClusterResourceSet has." items: description: "ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object." properties: applied: - description: "Applied is to track if a resource is applied to the cluster or not." + description: "applied is to track if a resource is applied to the cluster or not." type: "boolean" hash: - description: "Hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." + description: "hash is the hash of a resource's data. This can be used to decide if a resource is changed.\nFor \"ApplyOnce\" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change." type: "string" kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" lastAppliedTime: - description: "LastAppliedTime identifies when this resource was last applied to the cluster." + description: "lastAppliedTime identifies when this resource was last applied to the cluster." format: "date-time" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: @@ -80,7 +80,7 @@ spec: type: "object" type: "array" clusterName: - description: "ClusterName is the name of the Cluster this binding applies to.\nNote: this field mandatory in v1beta2." + description: "clusterName is the name of the Cluster this binding applies to.\nNote: this field mandatory in v1beta2." type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml index f21d49715..f8bee50e3 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/addons.cluster.x-k8s.io/v1beta1/clusterresourcesets.yaml @@ -70,18 +70,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" resources: - description: "Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." + description: "resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters." items: description: "ResourceRef specifies a resource." properties: kind: - description: "Kind of the resource. Supported kinds are: Secrets and ConfigMaps." + description: "kind of the resource. Supported kinds are: Secrets and ConfigMaps." enum: - "Secret" - "ConfigMap" type: "string" name: - description: "Name of the resource that is in the same namespace with ClusterResourceSet object." + description: "name of the resource that is in the same namespace with ClusterResourceSet object." minLength: 1 type: "string" required: @@ -90,7 +90,7 @@ spec: type: "object" type: "array" strategy: - description: "Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." + description: "strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable." enum: - "ApplyOnce" - "Reconcile" @@ -102,7 +102,7 @@ spec: description: "ClusterResourceSetStatus defines the observed state of ClusterResourceSet." properties: conditions: - description: "Conditions defines current state of the ClusterResourceSet." + description: "conditions defines current state of the ClusterResourceSet." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -117,13 +117,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -132,7 +132,7 @@ spec: type: "object" type: "array" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet." + description: "observedGeneration reflects the generation of the most recently observed ClusterResourceSet." format: "int64" type: "integer" v1beta2: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml index 90ca1420f..48cceed68 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/clusters.yaml @@ -43,7 +43,7 @@ spec: description: "Cluster network configuration." properties: apiServerPort: - description: "APIServerPort specifies the port the API Server should bind to.\nDefaults to 6443." + description: "apiServerPort specifies the port the API Server should bind to.\nDefaults to 6443." format: "int32" type: "integer" pods: @@ -71,7 +71,7 @@ spec: type: "object" type: "object" controlPlaneEndpoint: - description: "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane." + description: "controlPlaneEndpoint represents the endpoint used to communicate with the control plane." properties: host: description: "The hostname on which the API server is serving." @@ -85,7 +85,7 @@ spec: - "port" type: "object" controlPlaneRef: - description: "ControlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." + description: "controlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." properties: apiVersion: description: "API version of the referent." @@ -111,7 +111,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" infrastructureRef: - description: "InfrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." + description: "infrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." properties: apiVersion: description: "API version of the referent." @@ -137,14 +137,14 @@ spec: type: "object" x-kubernetes-map-type: "atomic" paused: - description: "Paused can be used to prevent controllers from processing the Cluster and all its associated objects." + description: "paused can be used to prevent controllers from processing the Cluster and all its associated objects." type: "boolean" type: "object" status: description: "ClusterStatus defines the observed state of Cluster." properties: conditions: - description: "Conditions defines current service state of the cluster." + description: "conditions defines current service state of the cluster." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -159,13 +159,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -173,10 +173,10 @@ spec: type: "object" type: "array" controlPlaneInitialized: - description: "ControlPlaneInitialized defines if the control plane has been initialized." + description: "controlPlaneInitialized defines if the control plane has been initialized." type: "boolean" controlPlaneReady: - description: "ControlPlaneReady defines if the control plane is ready." + description: "controlPlaneReady defines if the control plane is ready." type: "boolean" failureDomains: additionalProperties: @@ -185,29 +185,29 @@ spec: attributes: additionalProperties: type: "string" - description: "Attributes is a free form map of attributes an infrastructure provider might use or require." + description: "attributes is a free form map of attributes an infrastructure provider might use or require." type: "object" controlPlane: - description: "ControlPlane determines if this failure domain is suitable for use by control plane machines." + description: "controlPlane determines if this failure domain is suitable for use by control plane machines." type: "boolean" type: "object" - description: "FailureDomains is a slice of failure domain objects synced from the infrastructure provider." + description: "failureDomains is a slice of failure domain objects synced from the infrastructure provider." type: "object" failureMessage: - description: "FailureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message." + description: "failureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message." type: "string" failureReason: - description: "FailureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation." + description: "failureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml index e2ed4269b..06ea52c92 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinedeployments.yaml @@ -56,7 +56,7 @@ spec: description: "MachineDeploymentSpec defines the desired state of MachineDeployment." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" minReadySeconds: @@ -131,11 +131,11 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment. Currently the only supported strategy is\n\"RollingUpdate\".\nDefault is RollingUpdate." + description: "type of deployment. Currently the only supported strategy is\n\"RollingUpdate\".\nDefault is RollingUpdate." type: "string" type: "object" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -143,10 +143,10 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" generateName: - description: "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "generateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" labels: additionalProperties: @@ -154,10 +154,10 @@ spec: description: "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels" type: "object" name: - description: "Name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" namespace: - description: "Namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" ownerReferences: description: "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\nthen an entry in this list will point to this controller, with the controller field set to true.\nThere cannot be more than one managing controller.\n\nDeprecated: This field has no function and is going to be removed in a next release." @@ -195,10 +195,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -224,21 +224,21 @@ spec: type: "object" x-kubernetes-map-type: "atomic" data: - description: "Data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." + description: "data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." type: "string" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -264,13 +264,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -295,7 +295,7 @@ spec: format: "int64" type: "integer" phase: - description: "Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." + description: "phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." type: "string" readyReplicas: description: "Total number of ready machines targeted by this deployment." @@ -306,7 +306,7 @@ spec: format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" unavailableReplicas: description: "Total number of unavailable machines targeted by this deployment.\nThis is the total number of machines that are still required for\nthe deployment to have 100% available capacity. They may either\nbe machines that are running but not yet available or machines\nthat still have not been created." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml index 06031e594..00d57a260 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinehealthchecks.yaml @@ -49,7 +49,7 @@ spec: description: "Specification of machine health check policy" properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" maxUnhealthy: @@ -62,7 +62,7 @@ spec: description: "Machines older than this duration without a node will be considered to have\nfailed and will be remediated." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -121,7 +121,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -149,7 +149,7 @@ spec: description: "Most recently observed status of MachineHealthCheck resource" properties: conditions: - description: "Conditions defines current service state of the MachineHealthCheck." + description: "conditions defines current service state of the MachineHealthCheck." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -164,13 +164,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -188,16 +188,16 @@ spec: minimum: 0.0 type: "integer" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" remediationsAllowed: - description: "RemediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" + description: "remediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" format: "int32" minimum: 0.0 type: "integer" targets: - description: "Targets shows the current list of machines the machine health check is watching" + description: "targets shows the current list of machines the machine health check is watching" items: type: "string" type: "array" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml index 5819b1434..eefccb80e 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinepools.yaml @@ -48,11 +48,11 @@ spec: description: "MachinePoolSpec defines the desired state of MachinePool." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomains: - description: "FailureDomains is the list of failure domains this MachinePool should be attached to." + description: "failureDomains is the list of failure domains this MachinePool should be attached to." items: type: "string" type: "array" @@ -61,7 +61,7 @@ spec: format: "int32" type: "integer" providerIDList: - description: "ProviderIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." + description: "providerIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." items: type: "string" type: "array" @@ -89,11 +89,11 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment. Currently the only supported strategy is\n\"RollingUpdate\".\nDefault is RollingUpdate." + description: "type of deployment. Currently the only supported strategy is\n\"RollingUpdate\".\nDefault is RollingUpdate." type: "string" type: "object" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -101,10 +101,10 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" generateName: - description: "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "generateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" labels: additionalProperties: @@ -112,10 +112,10 @@ spec: description: "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels" type: "object" name: - description: "Name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" namespace: - description: "Namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" ownerReferences: description: "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\nthen an entry in this list will point to this controller, with the controller field set to true.\nThere cannot be more than one managing controller.\n\nDeprecated: This field has no function and is going to be removed in a next release." @@ -153,10 +153,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -182,21 +182,21 @@ spec: type: "object" x-kubernetes-map-type: "atomic" data: - description: "Data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." + description: "data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." type: "string" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -222,13 +222,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -248,10 +248,10 @@ spec: format: "int32" type: "integer" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" conditions: - description: "Conditions define the current service state of the MachinePool." + description: "conditions define the current service state of the MachinePool." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -266,13 +266,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -280,16 +280,16 @@ spec: type: "object" type: "array" failureMessage: - description: "FailureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message." + description: "failureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message." type: "string" failureReason: - description: "FailureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation." + description: "failureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" nodeRefs: - description: "NodeRefs will point to the corresponding Nodes if it they exist." + description: "nodeRefs will point to the corresponding Nodes if it they exist." items: description: "ObjectReference contains enough information to let you inspect or modify the referred object." properties: @@ -318,18 +318,18 @@ spec: x-kubernetes-map-type: "atomic" type: "array" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" readyReplicas: description: "The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is \"Ready\"." format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" unavailableReplicas: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml index 1078451a4..1b52a75cd 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machines.yaml @@ -53,10 +53,10 @@ spec: description: "MachineSpec defines the desired state of Machine." properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -82,21 +82,21 @@ spec: type: "object" x-kubernetes-map-type: "atomic" data: - description: "Data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." + description: "data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." type: "string" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -122,13 +122,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -139,7 +139,7 @@ spec: description: "MachineStatus defines the observed state of Machine." properties: addresses: - description: "Addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." + description: "addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." items: description: "MachineAddress contains information for the node's address." properties: @@ -155,10 +155,10 @@ spec: type: "object" type: "array" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" conditions: - description: "Conditions defines current service state of the Machine." + description: "conditions defines current service state of the Machine." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -173,13 +173,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -187,20 +187,20 @@ spec: type: "object" type: "array" failureMessage: - description: "FailureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." + description: "failureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." type: "string" failureReason: - description: "FailureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." + description: "failureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" lastUpdated: - description: "LastUpdated identifies when the phase of the Machine last transitioned." + description: "lastUpdated identifies when the phase of the Machine last transitioned." format: "date-time" type: "string" nodeRef: - description: "NodeRef will point to the corresponding Node if it exists." + description: "nodeRef will point to the corresponding Node if it exists." properties: apiVersion: description: "API version of the referent." @@ -226,14 +226,14 @@ spec: type: "object" x-kubernetes-map-type: "atomic" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" version: - description: "Version specifies the current version of Kubernetes running\non the corresponding Node. This is meant to be a means of bubbling\nup status from the Node to the Machine.\nIt is entirely optional, but useful for end-user UX if it’s present." + description: "version specifies the current version of Kubernetes running\non the corresponding Node. This is meant to be a means of bubbling\nup status from the Node to the Machine.\nIt is entirely optional, but useful for end-user UX if it’s present." type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml index 2d6c1c898..7435e71a7 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha3/machinesets.yaml @@ -48,26 +48,26 @@ spec: description: "MachineSetSpec defines the desired state of MachineSet." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" deletePolicy: - description: "DeletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" + description: "deletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" enum: - "Random" - "Newest" - "Oldest" type: "string" minReadySeconds: - description: "MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready.\nDefaults to 0 (machine will be considered available as soon as it is ready)" + description: "minReadySeconds is the minimum number of seconds for which a newly created machine should be ready.\nDefaults to 0 (machine will be considered available as soon as it is ready)" format: "int32" type: "integer" replicas: - description: "Replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\nDefaults to 1." + description: "replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\nDefaults to 1." format: "int32" type: "integer" selector: - description: "Selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" + description: "selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -100,7 +100,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" template: - description: "Template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." + description: "template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -108,10 +108,10 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" generateName: - description: "GenerateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "generateName is an optional prefix, used by the server, to generate a unique\nname ONLY IF the Name field has not been provided.\nIf this field is used, the name returned to the client will be different\nthan the name passed. This value will also be combined with a unique suffix.\nThe provided value has the same validation rules as the Name field,\nand may be truncated by the length of the suffix required to make the value\nunique on the server.\n\nIf this field is specified and the generated name exists, the server will\nNOT return a 409 - instead, it will either return 201 Created or 500 with Reason\nServerTimeout indicating a unique name could not be found in the time allotted, and the client\nshould retry (optionally after the time indicated in the Retry-After header).\n\nApplied only if Name is not specified.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" labels: additionalProperties: @@ -119,10 +119,10 @@ spec: description: "Map of string keys and values that can be used to organize and categorize\n(scope and select) objects. May match selectors of replication controllers\nand services.\nMore info: http://kubernetes.io/docs/user-guide/labels" type: "object" name: - description: "Name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "name must be unique within a namespace. Is required when creating resources, although\nsome resources may allow a client to request the generation of an appropriate name\nautomatically. Name is primarily intended for creation idempotence and configuration\ndefinition.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/identifiers#names\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" namespace: - description: "Namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." + description: "namespace defines the space within each name must be unique. An empty namespace is\nequivalent to the \"default\" namespace, but \"default\" is the canonical representation.\nNot all objects are required to be scoped to a namespace - the value of this field for\nthose objects will be empty.\n\nMust be a DNS_LABEL.\nCannot be updated.\nMore info: http://kubernetes.io/docs/user-guide/namespaces\n\nDeprecated: This field has no function and is going to be removed in a next release." type: "string" ownerReferences: description: "List of objects depended by this object. If ALL objects in the list have\nbeen deleted, this object will be garbage collected. If this object is managed by a controller,\nthen an entry in this list will point to this controller, with the controller field set to true.\nThere cannot be more than one managing controller.\n\nDeprecated: This field has no function and is going to be removed in a next release." @@ -160,10 +160,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.Data without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -189,21 +189,21 @@ spec: type: "object" x-kubernetes-map-type: "atomic" data: - description: "Data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." + description: "data contains the bootstrap data, such as cloud-init details scripts.\nIf nil, the Machine should remain in the Pending state.\n\nDeprecated: Switch to DataSecretName." type: "string" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -229,13 +229,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -264,7 +264,7 @@ spec: format: "int32" type: "integer" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed MachineSet." + description: "observedGeneration reflects the generation of the most recently observed MachineSet." format: "int64" type: "integer" readyReplicas: @@ -272,11 +272,11 @@ spec: format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml index 5985b0083..4100f9545 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusterclasses.yaml @@ -40,13 +40,13 @@ spec: description: "ClusterClassSpec describes the desired state of the ClusterClass." properties: controlPlane: - description: "ControlPlane is a reference to a local struct that holds the details\nfor provisioning the Control Plane for the Cluster." + description: "controlPlane is a reference to a local struct that holds the details\nfor provisioning the Control Plane for the Cluster." properties: machineInfrastructure: description: "MachineTemplate defines the metadata and infrastructure information\nfor control plane machines.\n\nThis field is supported if and only if the control plane provider template\nreferenced above is Machine based and supports setting replicas." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -75,12 +75,12 @@ spec: - "ref" type: "object" metadata: - description: "Metadata is the metadata applied to the machines of the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the topology.\n\nThis field is supported if and only if the control plane provider template\nreferenced is Machine based." + description: "metadata is the metadata applied to the machines of the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the topology.\n\nThis field is supported if and only if the control plane provider template\nreferenced is Machine based." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -89,7 +89,7 @@ spec: type: "object" type: "object" ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -118,10 +118,10 @@ spec: - "ref" type: "object" infrastructure: - description: "Infrastructure is a reference to a provider-specific template that holds\nthe details for provisioning infrastructure specific cluster\nfor the underlying provider.\nThe underlying provider is responsible for the implementation\nof the template to an infrastructure cluster." + description: "infrastructure is a reference to a provider-specific template that holds\nthe details for provisioning infrastructure specific cluster\nfor the underlying provider.\nThe underlying provider is responsible for the implementation\nof the template to an infrastructure cluster." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -150,24 +150,24 @@ spec: - "ref" type: "object" workers: - description: "Workers describes the worker nodes for the cluster.\nIt is a collection of node types which can be used to create\nthe worker nodes of the cluster." + description: "workers describes the worker nodes for the cluster.\nIt is a collection of node types which can be used to create\nthe worker nodes of the cluster." properties: machineDeployments: - description: "MachineDeployments is a list of machine deployment classes that can be used to create\na set of worker nodes." + description: "machineDeployments is a list of machine deployment classes that can be used to create\na set of worker nodes." items: description: "MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster\nprovisioned using the `ClusterClass`." properties: class: - description: "Class denotes a type of worker node present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachineDeployment." + description: "class denotes a type of worker node present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachineDeployment." type: "string" template: - description: "Template is a local struct containing a collection of templates for creation of\nMachineDeployment objects representing a set of worker nodes." + description: "template is a local struct containing a collection of templates for creation of\nMachineDeployment objects representing a set of worker nodes." properties: bootstrap: - description: "Bootstrap contains the bootstrap template reference to be used\nfor the creation of worker Machines." + description: "bootstrap contains the bootstrap template reference to be used\nfor the creation of worker Machines." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -196,10 +196,10 @@ spec: - "ref" type: "object" infrastructure: - description: "Infrastructure contains the infrastructure template reference to be used\nfor the creation of worker Machines." + description: "infrastructure contains the infrastructure template reference to be used\nfor the creation of worker Machines." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -228,12 +228,12 @@ spec: - "ref" type: "object" metadata: - description: "Metadata is the metadata applied to the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the topology." + description: "metadata is the metadata applied to the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the topology." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml index d459efd50..0236fad4d 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/clusters.yaml @@ -47,7 +47,7 @@ spec: description: "Cluster network configuration." properties: apiServerPort: - description: "APIServerPort specifies the port the API Server should bind to.\nDefaults to 6443." + description: "apiServerPort specifies the port the API Server should bind to.\nDefaults to 6443." format: "int32" type: "integer" pods: @@ -75,7 +75,7 @@ spec: type: "object" type: "object" controlPlaneEndpoint: - description: "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane." + description: "controlPlaneEndpoint represents the endpoint used to communicate with the control plane." properties: host: description: "The hostname on which the API server is serving." @@ -89,7 +89,7 @@ spec: - "port" type: "object" controlPlaneRef: - description: "ControlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." + description: "controlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." properties: apiVersion: description: "API version of the referent." @@ -115,7 +115,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" infrastructureRef: - description: "InfrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." + description: "infrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." properties: apiVersion: description: "API version of the referent." @@ -141,7 +141,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" paused: - description: "Paused can be used to prevent controllers from processing the Cluster and all its associated objects." + description: "paused can be used to prevent controllers from processing the Cluster and all its associated objects." type: "boolean" topology: description: "This encapsulates the topology for the cluster.\nNOTE: It is required to enable the ClusterTopology\nfeature gate flag to activate managed topologies support;\nthis feature is highly experimental, and parts of it might still be not implemented." @@ -150,15 +150,15 @@ spec: description: "The name of the ClusterClass object to create the topology." type: "string" controlPlane: - description: "ControlPlane describes the cluster control plane." + description: "controlPlane describes the cluster control plane." properties: metadata: - description: "Metadata is the metadata applied to the machines of the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass.\n\nThis field is supported if and only if the control plane provider template\nreferenced in the ClusterClass is Machine based." + description: "metadata is the metadata applied to the machines of the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass.\n\nThis field is supported if and only if the control plane provider template\nreferenced in the ClusterClass is Machine based." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -167,35 +167,35 @@ spec: type: "object" type: "object" replicas: - description: "Replicas is the number of control plane nodes.\nIf the value is nil, the ControlPlane object is created without the number of Replicas\nand it's assumed that the control plane controller does not implement support for this field.\nWhen specified against a control plane provider that lacks support for this field, this value will be ignored." + description: "replicas is the number of control plane nodes.\nIf the value is nil, the ControlPlane object is created without the number of Replicas\nand it's assumed that the control plane controller does not implement support for this field.\nWhen specified against a control plane provider that lacks support for this field, this value will be ignored." format: "int32" type: "integer" type: "object" rolloutAfter: - description: "RolloutAfter performs a rollout of the entire cluster one component at a time,\ncontrol plane first and then machine deployments." + description: "rolloutAfter performs a rollout of the entire cluster one component at a time,\ncontrol plane first and then machine deployments." format: "date-time" type: "string" version: description: "The Kubernetes version of the cluster." type: "string" workers: - description: "Workers encapsulates the different constructs that form the worker nodes\nfor the cluster." + description: "workers encapsulates the different constructs that form the worker nodes\nfor the cluster." properties: machineDeployments: - description: "MachineDeployments is a list of machine deployments in the cluster." + description: "machineDeployments is a list of machine deployments in the cluster." items: description: "MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology.\nThis set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller." properties: class: - description: "Class is the name of the MachineDeploymentClass used to create the set of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." + description: "class is the name of the MachineDeploymentClass used to create the set of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." type: "string" metadata: - description: "Metadata is the metadata applied to the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." + description: "metadata is the metadata applied to the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -204,10 +204,10 @@ spec: type: "object" type: "object" name: - description: "Name is the unique identifier for this MachineDeploymentTopology.\nThe value is used with other unique identifiers to create a MachineDeployment's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." + description: "name is the unique identifier for this MachineDeploymentTopology.\nThe value is used with other unique identifiers to create a MachineDeployment's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." type: "string" replicas: - description: "Replicas is the number of worker nodes belonging to this set.\nIf the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to zero)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." + description: "replicas is the number of worker nodes belonging to this set.\nIf the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to zero)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." format: "int32" type: "integer" required: @@ -225,7 +225,7 @@ spec: description: "ClusterStatus defines the observed state of Cluster." properties: conditions: - description: "Conditions defines current service state of the cluster." + description: "conditions defines current service state of the cluster." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -240,13 +240,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -254,7 +254,7 @@ spec: type: "object" type: "array" controlPlaneReady: - description: "ControlPlaneReady defines if the control plane is ready." + description: "controlPlaneReady defines if the control plane is ready." type: "boolean" failureDomains: additionalProperties: @@ -263,29 +263,29 @@ spec: attributes: additionalProperties: type: "string" - description: "Attributes is a free form map of attributes an infrastructure provider might use or require." + description: "attributes is a free form map of attributes an infrastructure provider might use or require." type: "object" controlPlane: - description: "ControlPlane determines if this failure domain is suitable for use by control plane machines." + description: "controlPlane determines if this failure domain is suitable for use by control plane machines." type: "boolean" type: "object" - description: "FailureDomains is a slice of failure domain objects synced from the infrastructure provider." + description: "failureDomains is a slice of failure domain objects synced from the infrastructure provider." type: "object" failureMessage: - description: "FailureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message." + description: "failureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message." type: "string" failureReason: - description: "FailureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation." + description: "failureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml index d0806f9fb..80f6dfec8 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinedeployments.yaml @@ -64,7 +64,7 @@ spec: description: "MachineDeploymentSpec defines the desired state of MachineDeployment." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" minReadySeconds: @@ -127,7 +127,7 @@ spec: description: "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate." properties: deletePolicy: - description: "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" + description: "deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" enum: - "Random" - "Newest" @@ -147,14 +147,14 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment.\nDefault is RollingUpdate." + description: "type of deployment.\nDefault is RollingUpdate." enum: - "RollingUpdate" - "OnDelete" type: "string" type: "object" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -162,7 +162,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -174,10 +174,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -203,18 +203,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -240,13 +240,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -267,7 +267,7 @@ spec: format: "int32" type: "integer" conditions: - description: "Conditions defines current service state of the MachineDeployment." + description: "conditions defines current service state of the MachineDeployment." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -282,13 +282,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -300,7 +300,7 @@ spec: format: "int64" type: "integer" phase: - description: "Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." + description: "phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." type: "string" readyReplicas: description: "Total number of ready machines targeted by this deployment." @@ -311,7 +311,7 @@ spec: format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" unavailableReplicas: description: "Total number of unavailable machines targeted by this deployment.\nThis is the total number of machines that are still required for\nthe deployment to have 100% available capacity. They may either\nbe machines that are running but not yet available or machines\nthat still have not been created." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml index b7662b651..9530943af 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinehealthchecks.yaml @@ -57,7 +57,7 @@ spec: description: "Specification of machine health check policy" properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" maxUnhealthy: @@ -70,7 +70,7 @@ spec: description: "Machines older than this duration without a node will be considered to have\nfailed and will be remediated.\nIf not set, this value is defaulted to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -129,7 +129,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -161,7 +161,7 @@ spec: description: "Most recently observed status of MachineHealthCheck resource" properties: conditions: - description: "Conditions defines current service state of the MachineHealthCheck." + description: "conditions defines current service state of the MachineHealthCheck." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -176,13 +176,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -200,16 +200,16 @@ spec: minimum: 0.0 type: "integer" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" remediationsAllowed: - description: "RemediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" + description: "remediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" format: "int32" minimum: 0.0 type: "integer" targets: - description: "Targets shows the current list of machines the machine health check is watching" + description: "targets shows the current list of machines the machine health check is watching" items: type: "string" type: "array" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml index c1eda3caf..f4666e879 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinepools.yaml @@ -52,11 +52,11 @@ spec: description: "MachinePoolSpec defines the desired state of MachinePool." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomains: - description: "FailureDomains is the list of failure domains this MachinePool should be attached to." + description: "failureDomains is the list of failure domains this MachinePool should be attached to." items: type: "string" type: "array" @@ -65,7 +65,7 @@ spec: format: "int32" type: "integer" providerIDList: - description: "ProviderIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." + description: "providerIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." items: type: "string" type: "array" @@ -74,7 +74,7 @@ spec: format: "int32" type: "integer" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -82,7 +82,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -94,10 +94,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -123,18 +123,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -160,13 +160,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -186,10 +186,10 @@ spec: format: "int32" type: "integer" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" conditions: - description: "Conditions define the current service state of the MachinePool." + description: "conditions define the current service state of the MachinePool." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -204,13 +204,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -218,16 +218,16 @@ spec: type: "object" type: "array" failureMessage: - description: "FailureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message." + description: "failureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message." type: "string" failureReason: - description: "FailureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation." + description: "failureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" nodeRefs: - description: "NodeRefs will point to the corresponding Nodes if it they exist." + description: "nodeRefs will point to the corresponding Nodes if it they exist." items: description: "ObjectReference contains enough information to let you inspect or modify the referred object." properties: @@ -256,18 +256,18 @@ spec: x-kubernetes-map-type: "atomic" type: "array" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" readyReplicas: description: "The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is \"Ready\"." format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" unavailableReplicas: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml index e363d95e9..a792389df 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machines.yaml @@ -61,10 +61,10 @@ spec: description: "MachineSpec defines the desired state of Machine." properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -90,18 +90,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -127,13 +127,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -144,7 +144,7 @@ spec: description: "MachineStatus defines the observed state of Machine." properties: addresses: - description: "Addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." + description: "addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." items: description: "MachineAddress contains information for the node's address." properties: @@ -160,10 +160,10 @@ spec: type: "object" type: "array" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" conditions: - description: "Conditions defines current service state of the Machine." + description: "conditions defines current service state of the Machine." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -178,13 +178,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -192,20 +192,20 @@ spec: type: "object" type: "array" failureMessage: - description: "FailureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." + description: "failureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." type: "string" failureReason: - description: "FailureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." + description: "failureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" lastUpdated: - description: "LastUpdated identifies when the phase of the Machine last transitioned." + description: "lastUpdated identifies when the phase of the Machine last transitioned." format: "date-time" type: "string" nodeInfo: - description: "NodeInfo is a set of ids/uuids to uniquely identify the node.\nMore info: https://kubernetes.io/docs/concepts/nodes/node/#info" + description: "nodeInfo is a set of ids/uuids to uniquely identify the node.\nMore info: https://kubernetes.io/docs/concepts/nodes/node/#info" properties: architecture: description: "The Architecture reported by the node" @@ -250,7 +250,7 @@ spec: - "systemUUID" type: "object" nodeRef: - description: "NodeRef will point to the corresponding Node if it exists." + description: "nodeRef will point to the corresponding Node if it exists." properties: apiVersion: description: "API version of the referent." @@ -276,14 +276,14 @@ spec: type: "object" x-kubernetes-map-type: "atomic" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" version: - description: "Version specifies the current version of Kubernetes running\non the corresponding Node. This is meant to be a means of bubbling\nup status from the Node to the Machine.\nIt is entirely optional, but useful for end-user UX if it’s present." + description: "version specifies the current version of Kubernetes running\non the corresponding Node. This is meant to be a means of bubbling\nup status from the Node to the Machine.\nIt is entirely optional, but useful for end-user UX if it’s present." type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml index d6be8556d..ca8e760c4 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1alpha4/machinesets.yaml @@ -56,27 +56,27 @@ spec: description: "MachineSetSpec defines the desired state of MachineSet." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" deletePolicy: - description: "DeletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" + description: "deletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" enum: - "Random" - "Newest" - "Oldest" type: "string" minReadySeconds: - description: "MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready.\nDefaults to 0 (machine will be considered available as soon as it is ready)" + description: "minReadySeconds is the minimum number of seconds for which a newly created machine should be ready.\nDefaults to 0 (machine will be considered available as soon as it is ready)" format: "int32" type: "integer" replicas: default: 1 - description: "Replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\nDefaults to 1." + description: "replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\nDefaults to 1." format: "int32" type: "integer" selector: - description: "Selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" + description: "selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -109,7 +109,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" template: - description: "Template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." + description: "template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -117,7 +117,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -129,10 +129,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -158,18 +158,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -195,13 +195,13 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -221,7 +221,7 @@ spec: format: "int32" type: "integer" conditions: - description: "Conditions defines current service state of the MachineSet." + description: "conditions defines current service state of the MachineSet." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -236,13 +236,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may not be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "status" @@ -259,7 +259,7 @@ spec: format: "int32" type: "integer" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed MachineSet." + description: "observedGeneration reflects the generation of the most recently observed MachineSet." format: "int64" type: "integer" readyReplicas: @@ -267,11 +267,11 @@ spec: format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" type: "object" type: "object" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml index 6e36c589c..906f3e5eb 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusterclasses.yaml @@ -39,10 +39,10 @@ spec: description: "ClusterClassSpec describes the desired state of the ClusterClass." properties: controlPlane: - description: "ControlPlane is a reference to a local struct that holds the details\nfor provisioning the Control Plane for the Cluster." + description: "controlPlane is a reference to a local struct that holds the details\nfor provisioning the Control Plane for the Cluster." properties: machineHealthCheck: - description: "MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass.\nThis field is supported if and only if the ControlPlane provider template\nreferenced above is Machine based and supports setting replicas." + description: "machineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass.\nThis field is supported if and only if the ControlPlane provider template\nreferenced above is Machine based and supports setting replicas." properties: maxUnhealthy: anyOf: @@ -51,10 +51,10 @@ spec: description: "Any further remediation is only allowed if at most \"MaxUnhealthy\" machines selected by\n\"selector\" are not healthy." x-kubernetes-int-or-string: true nodeStartupTimeout: - description: "NodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." + description: "nodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -80,7 +80,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -104,10 +104,10 @@ spec: type: "string" type: "object" machineInfrastructure: - description: "MachineInfrastructure defines the metadata and infrastructure information\nfor control plane machines.\n\nThis field is supported if and only if the control plane provider template\nreferenced above is Machine based and supports setting replicas." + description: "machineInfrastructure defines the metadata and infrastructure information\nfor control plane machines.\n\nThis field is supported if and only if the control plane provider template\nreferenced above is Machine based and supports setting replicas." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -136,12 +136,12 @@ spec: - "ref" type: "object" metadata: - description: "Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane\nif the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the\nControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the topology.\n\nThis field is supported if and only if the control plane provider template\nreferenced is Machine based." + description: "metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane\nif the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the\nControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the topology.\n\nThis field is supported if and only if the control plane provider template\nreferenced is Machine based." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -150,23 +150,23 @@ spec: type: "object" type: "object" namingStrategy: - description: "NamingStrategy allows changing the naming pattern used when creating the control plane provider object." + description: "namingStrategy allows changing the naming pattern used when creating the control plane provider object." properties: template: - description: "Template defines the template to use for generating the name of the ControlPlane object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5." + description: "template defines the template to use for generating the name of the ControlPlane object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5." type: "string" type: "object" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology." + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology." type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology." type: "string" ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -195,10 +195,10 @@ spec: - "ref" type: "object" infrastructure: - description: "Infrastructure is a reference to a provider-specific template that holds\nthe details for provisioning infrastructure specific cluster\nfor the underlying provider.\nThe underlying provider is responsible for the implementation\nof the template to an infrastructure cluster." + description: "infrastructure is a reference to a provider-specific template that holds\nthe details for provisioning infrastructure specific cluster\nfor the underlying provider.\nThe underlying provider is responsible for the implementation\nof the template to an infrastructure cluster." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -227,37 +227,37 @@ spec: - "ref" type: "object" patches: - description: "Patches defines the patches which are applied to customize\nreferenced templates of a ClusterClass.\nNote: Patches will be applied in the order of the array." + description: "patches defines the patches which are applied to customize\nreferenced templates of a ClusterClass.\nNote: Patches will be applied in the order of the array." items: description: "ClusterClassPatch defines a patch which is applied to customize the referenced templates." properties: definitions: - description: "Definitions define inline patches.\nNote: Patches will be applied in the order of the array.\nNote: Exactly one of Definitions or External must be set." + description: "definitions define inline patches.\nNote: Patches will be applied in the order of the array.\nNote: Exactly one of Definitions or External must be set." items: description: "PatchDefinition defines a patch which is applied to customize the referenced templates." properties: jsonPatches: - description: "JSONPatches defines the patches which should be applied on the templates\nmatching the selector.\nNote: Patches will be applied in the order of the array." + description: "jsonPatches defines the patches which should be applied on the templates\nmatching the selector.\nNote: Patches will be applied in the order of the array." items: description: "JSONPatch defines a JSON patch." properties: op: - description: "Op defines the operation of the patch.\nNote: Only `add`, `replace` and `remove` are supported." + description: "op defines the operation of the patch.\nNote: Only `add`, `replace` and `remove` are supported." type: "string" path: - description: "Path defines the path of the patch.\nNote: Only the spec of a template can be patched, thus the path has to start with /spec/.\nNote: For now the only allowed array modifications are `append` and `prepend`, i.e.:\n* for op: `add`: only index 0 (prepend) and - (append) are allowed\n* for op: `replace` or `remove`: no indexes are allowed" + description: "path defines the path of the patch.\nNote: Only the spec of a template can be patched, thus the path has to start with /spec/.\nNote: For now the only allowed array modifications are `append` and `prepend`, i.e.:\n* for op: `add`: only index 0 (prepend) and - (append) are allowed\n* for op: `replace` or `remove`: no indexes are allowed" type: "string" value: - description: "Value defines the value of the patch.\nNote: Either Value or ValueFrom is required for add and replace\noperations. Only one of them is allowed to be set at the same time.\nNote: We have to use apiextensionsv1.JSON instead of our JSON type,\nbecause controller-tools has a hard-coded schema for apiextensionsv1.JSON\nwhich cannot be produced by another type (unset type field).\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" + description: "value defines the value of the patch.\nNote: Either Value or ValueFrom is required for add and replace\noperations. Only one of them is allowed to be set at the same time.\nNote: We have to use apiextensionsv1.JSON instead of our JSON type,\nbecause controller-tools has a hard-coded schema for apiextensionsv1.JSON\nwhich cannot be produced by another type (unset type field).\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" x-kubernetes-preserve-unknown-fields: true valueFrom: - description: "ValueFrom defines the value of the patch.\nNote: Either Value or ValueFrom is required for add and replace\noperations. Only one of them is allowed to be set at the same time." + description: "valueFrom defines the value of the patch.\nNote: Either Value or ValueFrom is required for add and replace\noperations. Only one of them is allowed to be set at the same time." properties: template: - description: "Template is the Go template to be used to calculate the value.\nA template can reference variables defined in .spec.variables and builtin variables.\nNote: The template must evaluate to a valid YAML or JSON value." + description: "template is the Go template to be used to calculate the value.\nA template can reference variables defined in .spec.variables and builtin variables.\nNote: The template must evaluate to a valid YAML or JSON value." type: "string" variable: - description: "Variable is the variable to be used as value.\nVariable can be one of the variables defined in .spec.variables or a builtin variable." + description: "variable is the variable to be used as value.\nVariable can be one of the variables defined in .spec.variables or a builtin variable." type: "string" type: "object" required: @@ -266,37 +266,37 @@ spec: type: "object" type: "array" selector: - description: "Selector defines on which templates the patch should be applied." + description: "selector defines on which templates the patch should be applied." properties: apiVersion: - description: "APIVersion filters templates by apiVersion." + description: "apiVersion filters templates by apiVersion." type: "string" kind: - description: "Kind filters templates by kind." + description: "kind filters templates by kind." type: "string" matchResources: - description: "MatchResources selects templates based on where they are referenced." + description: "matchResources selects templates based on where they are referenced." properties: controlPlane: - description: "ControlPlane selects templates referenced in .spec.ControlPlane.\nNote: this will match the controlPlane and also the controlPlane\nmachineInfrastructure (depending on the kind and apiVersion)." + description: "controlPlane selects templates referenced in .spec.ControlPlane.\nNote: this will match the controlPlane and also the controlPlane\nmachineInfrastructure (depending on the kind and apiVersion)." type: "boolean" infrastructureCluster: - description: "InfrastructureCluster selects templates referenced in .spec.infrastructure." + description: "infrastructureCluster selects templates referenced in .spec.infrastructure." type: "boolean" machineDeploymentClass: - description: "MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in\n.spec.workers.machineDeployments." + description: "machineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in\n.spec.workers.machineDeployments." properties: names: - description: "Names selects templates by class names." + description: "names selects templates by class names." items: type: "string" type: "array" type: "object" machinePoolClass: - description: "MachinePoolClass selects templates referenced in specific MachinePoolClasses in\n.spec.workers.machinePools." + description: "machinePoolClass selects templates referenced in specific MachinePoolClasses in\n.spec.workers.machinePools." properties: names: - description: "Names selects templates by class names." + description: "names selects templates by class names." items: type: "string" type: "array" @@ -313,48 +313,48 @@ spec: type: "object" type: "array" description: - description: "Description is a human-readable description of this patch." + description: "description is a human-readable description of this patch." type: "string" enabledIf: - description: "EnabledIf is a Go template to be used to calculate if a patch should be enabled.\nIt can reference variables defined in .spec.variables and builtin variables.\nThe patch will be enabled if the template evaluates to `true`, otherwise it will\nbe disabled.\nIf EnabledIf is not set, the patch will be enabled per default." + description: "enabledIf is a Go template to be used to calculate if a patch should be enabled.\nIt can reference variables defined in .spec.variables and builtin variables.\nThe patch will be enabled if the template evaluates to `true`, otherwise it will\nbe disabled.\nIf EnabledIf is not set, the patch will be enabled per default." type: "string" external: - description: "External defines an external patch.\nNote: Exactly one of Definitions or External must be set." + description: "external defines an external patch.\nNote: Exactly one of Definitions or External must be set." properties: discoverVariablesExtension: - description: "DiscoverVariablesExtension references an extension which is called to discover variables." + description: "discoverVariablesExtension references an extension which is called to discover variables." type: "string" generateExtension: - description: "GenerateExtension references an extension which is called to generate patches." + description: "generateExtension references an extension which is called to generate patches." type: "string" settings: additionalProperties: type: "string" - description: "Settings defines key value pairs to be passed to the extensions.\nValues defined here take precedence over the values defined in the\ncorresponding ExtensionConfig." + description: "settings defines key value pairs to be passed to the extensions.\nValues defined here take precedence over the values defined in the\ncorresponding ExtensionConfig." type: "object" validateExtension: - description: "ValidateExtension references an extension which is called to validate the topology." + description: "validateExtension references an extension which is called to validate the topology." type: "string" type: "object" name: - description: "Name of the patch." + description: "name of the patch." type: "string" required: - "name" type: "object" type: "array" variables: - description: "Variables defines the variables which can be configured\nin the Cluster topology and are then used in patches." + description: "variables defines the variables which can be configured\nin the Cluster topology and are then used in patches." items: description: "ClusterClassVariable defines a variable which can\nbe configured in the Cluster topology and used in patches." properties: metadata: - description: "Metadata is the metadata of a variable.\nIt can be used to add additional data for higher level tools to\na ClusterClassVariable.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please use XMetadata in JSONSchemaProps instead." + description: "metadata is the metadata of a variable.\nIt can be used to add additional data for higher level tools to\na ClusterClassVariable.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please use XMetadata in JSONSchemaProps instead." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." + description: "annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." type: "object" labels: additionalProperties: @@ -363,130 +363,130 @@ spec: type: "object" type: "object" name: - description: "Name of the variable." + description: "name of the variable." type: "string" required: - description: "Required specifies if the variable is required.\nNote: this applies to the variable as a whole and thus the\ntop-level object defined in the schema. If nested fields are\nrequired, this will be specified inside the schema." + description: "required specifies if the variable is required.\nNote: this applies to the variable as a whole and thus the\ntop-level object defined in the schema. If nested fields are\nrequired, this will be specified inside the schema." type: "boolean" schema: - description: "Schema defines the schema of the variable." + description: "schema defines the schema of the variable." properties: openAPIV3Schema: - description: "OpenAPIV3Schema defines the schema of a variable via OpenAPI v3\nschema. The schema is a subset of the schema used in\nKubernetes CRDs." + description: "openAPIV3Schema defines the schema of a variable via OpenAPI v3\nschema. The schema is a subset of the schema used in\nKubernetes CRDs." properties: additionalProperties: - description: "AdditionalProperties specifies the schema of values in a map (keys are always strings).\nNOTE: Can only be set if type is object.\nNOTE: AdditionalProperties is mutually exclusive with Properties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "additionalProperties specifies the schema of values in a map (keys are always strings).\nNOTE: Can only be set if type is object.\nNOTE: AdditionalProperties is mutually exclusive with Properties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true allOf: - description: "AllOf specifies that the variable must validate against all of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "allOf specifies that the variable must validate against all of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true anyOf: - description: "AnyOf specifies that the variable must validate against one or more of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "anyOf specifies that the variable must validate against one or more of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true default: - description: "Default is the default value of the variable.\nNOTE: Can be set for all types." + description: "default is the default value of the variable.\nNOTE: Can be set for all types." x-kubernetes-preserve-unknown-fields: true description: - description: "Description is a human-readable description of this variable." + description: "description is a human-readable description of this variable." type: "string" enum: - description: "Enum is the list of valid values of the variable.\nNOTE: Can be set for all types." + description: "enum is the list of valid values of the variable.\nNOTE: Can be set for all types." items: x-kubernetes-preserve-unknown-fields: true type: "array" example: - description: "Example is an example for this variable." + description: "example is an example for this variable." x-kubernetes-preserve-unknown-fields: true exclusiveMaximum: - description: "ExclusiveMaximum specifies if the Maximum is exclusive.\nNOTE: Can only be set if type is integer or number." + description: "exclusiveMaximum specifies if the Maximum is exclusive.\nNOTE: Can only be set if type is integer or number." type: "boolean" exclusiveMinimum: - description: "ExclusiveMinimum specifies if the Minimum is exclusive.\nNOTE: Can only be set if type is integer or number." + description: "exclusiveMinimum specifies if the Minimum is exclusive.\nNOTE: Can only be set if type is integer or number." type: "boolean" format: - description: "Format is an OpenAPI v3 format string. Unknown formats are ignored.\nFor a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)\nhttps://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go\nNOTE: Can only be set if type is string." + description: "format is an OpenAPI v3 format string. Unknown formats are ignored.\nFor a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)\nhttps://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go\nNOTE: Can only be set if type is string." type: "string" items: - description: "Items specifies fields of an array.\nNOTE: Can only be set if type is array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "items specifies fields of an array.\nNOTE: Can only be set if type is array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true maxItems: - description: "MaxItems is the max length of an array variable.\nNOTE: Can only be set if type is array." + description: "maxItems is the max length of an array variable.\nNOTE: Can only be set if type is array." format: "int64" type: "integer" maxLength: - description: "MaxLength is the max length of a string variable.\nNOTE: Can only be set if type is string." + description: "maxLength is the max length of a string variable.\nNOTE: Can only be set if type is string." format: "int64" type: "integer" maxProperties: - description: "MaxProperties is the maximum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." + description: "maxProperties is the maximum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." format: "int64" type: "integer" maximum: - description: "Maximum is the maximum of an integer or number variable.\nIf ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.\nIf ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.\nNOTE: Can only be set if type is integer or number." + description: "maximum is the maximum of an integer or number variable.\nIf ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.\nIf ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.\nNOTE: Can only be set if type is integer or number." format: "int64" type: "integer" minItems: - description: "MinItems is the min length of an array variable.\nNOTE: Can only be set if type is array." + description: "minItems is the min length of an array variable.\nNOTE: Can only be set if type is array." format: "int64" type: "integer" minLength: - description: "MinLength is the min length of a string variable.\nNOTE: Can only be set if type is string." + description: "minLength is the min length of a string variable.\nNOTE: Can only be set if type is string." format: "int64" type: "integer" minProperties: - description: "MinProperties is the minimum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." + description: "minProperties is the minimum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." format: "int64" type: "integer" minimum: - description: "Minimum is the minimum of an integer or number variable.\nIf ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.\nIf ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.\nNOTE: Can only be set if type is integer or number." + description: "minimum is the minimum of an integer or number variable.\nIf ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.\nIf ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.\nNOTE: Can only be set if type is integer or number." format: "int64" type: "integer" not: - description: "Not specifies that the variable must not validate against the subschema.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "not specifies that the variable must not validate against the subschema.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true oneOf: - description: "OneOf specifies that the variable must validate against exactly one of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "oneOf specifies that the variable must validate against exactly one of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true pattern: - description: "Pattern is the regex which a string variable must match.\nNOTE: Can only be set if type is string." + description: "pattern is the regex which a string variable must match.\nNOTE: Can only be set if type is string." type: "string" properties: - description: "Properties specifies fields of an object.\nNOTE: Can only be set if type is object.\nNOTE: Properties is mutually exclusive with AdditionalProperties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "properties specifies fields of an object.\nNOTE: Can only be set if type is object.\nNOTE: Properties is mutually exclusive with AdditionalProperties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true required: - description: "Required specifies which fields of an object are required.\nNOTE: Can only be set if type is object." + description: "required specifies which fields of an object are required.\nNOTE: Can only be set if type is object." items: type: "string" type: "array" type: - description: "Type is the type of the variable.\nValid values are: object, array, string, integer, number or boolean." + description: "type is the type of the variable.\nValid values are: object, array, string, integer, number or boolean." type: "string" uniqueItems: - description: "UniqueItems specifies if items in an array must be unique.\nNOTE: Can only be set if type is array." + description: "uniqueItems specifies if items in an array must be unique.\nNOTE: Can only be set if type is array." type: "boolean" x-kubernetes-int-or-string: description: "x-kubernetes-int-or-string specifies that this value is\neither an integer or a string. If this is true, an empty\ntype is allowed and type as child of anyOf is permitted\nif following one of the following patterns:\n\n1) anyOf:\n - type: integer\n - type: string\n2) allOf:\n - anyOf:\n - type: integer\n - type: string\n - ... zero or more" type: "boolean" x-kubernetes-preserve-unknown-fields: - description: "XPreserveUnknownFields allows setting fields in a variable object\nwhich are not defined in the variable schema. This affects fields recursively,\nexcept if nested properties or additionalProperties are specified in the schema." + description: "x-kubernetes-preserve-unknown-fields allows setting fields in a variable object\nwhich are not defined in the variable schema. This affects fields recursively,\nexcept if nested properties or additionalProperties are specified in the schema." type: "boolean" x-kubernetes-validations: - description: "XValidations describes a list of validation rules written in the CEL expression language." + description: "x-kubernetes-validations describes a list of validation rules written in the CEL expression language." items: description: "ValidationRule describes a validation rule written in the CEL expression language." properties: fieldPath: - description: "FieldPath represents the field path returned when the validation fails.\nIt must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.\ne.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`\nIf the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`\nIt does not support list numeric index.\nIt supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.\nNumeric index of array is not supported.\nFor field name which contains special characters, use `['specialName']` to refer the field name.\ne.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`" + description: "fieldPath represents the field path returned when the validation fails.\nIt must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.\ne.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`\nIf the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`\nIt does not support list numeric index.\nIt supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.\nNumeric index of array is not supported.\nFor field name which contains special characters, use `['specialName']` to refer the field name.\ne.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`" type: "string" message: - description: "Message represents the message displayed when validation fails. The message is required if the Rule contains\nline breaks. The message must not contain line breaks.\nIf unset, the message is \"failed rule: {Rule}\".\ne.g. \"must be a URL with the host matching spec.host\"" + description: "message represents the message displayed when validation fails. The message is required if the Rule contains\nline breaks. The message must not contain line breaks.\nIf unset, the message is \"failed rule: {Rule}\".\ne.g. \"must be a URL with the host matching spec.host\"" type: "string" messageExpression: - description: "MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.\nSince messageExpression is used as a failure message, it must evaluate to a string.\nIf both message and messageExpression are present on a rule, then messageExpression will be used if validation\nfails. If messageExpression results in a runtime error, the validation failure message is produced\nas if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string\nthat contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.\nmessageExpression has access to all the same variables as the rule; the only difference is the return type.\nExample:\n\"x must be less than max (\"+string(self.max)+\")\"" + description: "messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.\nSince messageExpression is used as a failure message, it must evaluate to a string.\nIf both message and messageExpression are present on a rule, then messageExpression will be used if validation\nfails. If messageExpression results in a runtime error, the validation failure message is produced\nas if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string\nthat contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.\nmessageExpression has access to all the same variables as the rule; the only difference is the return type.\nExample:\n\"x must be less than max (\"+string(self.max)+\")\"" type: "string" reason: default: "FieldValueInvalid" - description: "Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.\nThe currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\".\nIf not set, default to use \"FieldValueInvalid\".\nAll future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid." + description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.\nThe currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\".\nIf not set, default to use \"FieldValueInvalid\".\nAll future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid." enum: - "FieldValueInvalid" - "FieldValueForbidden" @@ -494,7 +494,7 @@ spec: - "FieldValueDuplicate" type: "string" rule: - description: "Rule represents the expression which will be evaluated by CEL.\nref: https://github.com/google/cel-spec\nThe Rule is scoped to the location of the x-kubernetes-validations extension in the schema.\nThe `self` variable in the CEL expression is bound to the scoped value.\nIf the Rule is scoped to an object with properties, the accessible properties of the object are field selectable\nvia `self.field` and field presence can be checked via `has(self.field)`.\nIf the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map\nare accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map\nare accessible via CEL macros and functions such as `self.all(...)`.\nIf the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and\nfunctions.\nIf the Rule is scoped to a scalar, `self` is bound to the scalar value.\nExamples:\n- Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"}\n- Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"}\n- Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"}\n\nUnknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL\nexpressions. This includes:\n- Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.\n- Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as:\n - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\n - An array where the items schema is of an \"unknown type\"\n - An object where the additionalProperties schema is of an \"unknown type\"\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.\nAccessible property names are escaped according to the following rules when accessed in the expression:\n- '__' escapes to '__underscores__'\n- '.' escapes to '__dot__'\n- '-' escapes to '__dash__'\n- '/' escapes to '__slash__'\n- Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n\t \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n\t \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"}\n\nIf `rule` makes use of the `oldSelf` variable it is implicitly a\n`transition rule`.\n\nBy default, the `oldSelf` variable is the same type as `self`.\n\nTransition rules by default are applied only on UPDATE requests and are\nskipped if an old value could not be found." + description: "rule represents the expression which will be evaluated by CEL.\nref: https://github.com/google/cel-spec\nThe Rule is scoped to the location of the x-kubernetes-validations extension in the schema.\nThe `self` variable in the CEL expression is bound to the scoped value.\nIf the Rule is scoped to an object with properties, the accessible properties of the object are field selectable\nvia `self.field` and field presence can be checked via `has(self.field)`.\nIf the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map\nare accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map\nare accessible via CEL macros and functions such as `self.all(...)`.\nIf the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and\nfunctions.\nIf the Rule is scoped to a scalar, `self` is bound to the scalar value.\nExamples:\n- Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"}\n- Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"}\n- Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"}\n\nUnknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL\nexpressions. This includes:\n- Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.\n- Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as:\n - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\n - An array where the items schema is of an \"unknown type\"\n - An object where the additionalProperties schema is of an \"unknown type\"\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.\nAccessible property names are escaped according to the following rules when accessed in the expression:\n- '__' escapes to '__underscores__'\n- '.' escapes to '__dot__'\n- '-' escapes to '__dash__'\n- '/' escapes to '__slash__'\n- Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n\t \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n\t \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"}\n\nIf `rule` makes use of the `oldSelf` variable it is implicitly a\n`transition rule`.\n\nBy default, the `oldSelf` variable is the same type as `self`.\n\nTransition rules by default are applied only on UPDATE requests and are\nskipped if an old value could not be found." type: "string" required: - "rule" @@ -504,12 +504,12 @@ spec: - "rule" x-kubernetes-list-type: "map" x-metadata: - description: "XMetadata is the metadata of a variable or a nested field within a variable.\nIt can be used to add additional data for higher level tools." + description: "x-metadata is the metadata of a variable or a nested field within a variable.\nIt can be used to add additional data for higher level tools." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." + description: "annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." type: "object" labels: additionalProperties: @@ -528,21 +528,21 @@ spec: type: "object" type: "array" workers: - description: "Workers describes the worker nodes for the cluster.\nIt is a collection of node types which can be used to create\nthe worker nodes of the cluster." + description: "workers describes the worker nodes for the cluster.\nIt is a collection of node types which can be used to create\nthe worker nodes of the cluster." properties: machineDeployments: - description: "MachineDeployments is a list of machine deployment classes that can be used to create\na set of worker nodes." + description: "machineDeployments is a list of machine deployment classes that can be used to create\na set of worker nodes." items: description: "MachineDeploymentClass serves as a template to define a set of worker nodes of the cluster\nprovisioned using the `ClusterClass`." properties: class: - description: "Class denotes a type of worker node present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachineDeployment." + description: "class denotes a type of worker node present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachineDeployment." type: "string" failureDomain: - description: "FailureDomain is the failure domain the machines will be created in.\nMust match a key in the FailureDomains map stored on the cluster object.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." + description: "failureDomain is the failure domain the machines will be created in.\nMust match a key in the FailureDomains map stored on the cluster object.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." type: "string" machineHealthCheck: - description: "MachineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass." + description: "machineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass." properties: maxUnhealthy: anyOf: @@ -551,10 +551,10 @@ spec: description: "Any further remediation is only allowed if at most \"MaxUnhealthy\" machines selected by\n\"selector\" are not healthy." x-kubernetes-int-or-string: true nodeStartupTimeout: - description: "NodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." + description: "nodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -580,7 +580,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -608,39 +608,39 @@ spec: format: "int32" type: "integer" namingStrategy: - description: "NamingStrategy allows changing the naming pattern used when creating the MachineDeployment." + description: "namingStrategy allows changing the naming pattern used when creating the MachineDeployment." properties: template: - description: "Template defines the template to use for generating the name of the MachineDeployment object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5.\n* `.machineDeployment.topologyName`: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name)." + description: "template defines the template to use for generating the name of the MachineDeployment object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5.\n* `.machineDeployment.topologyName`: The name of the MachineDeployment topology (Cluster.spec.topology.workers.machineDeployments[].name)." type: "string" type: "object" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." type: "string" strategy: description: "The deployment strategy to use to replace existing machines with\nnew ones.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass." properties: remediation: - description: "Remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." + description: "remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." properties: maxInFlight: anyOf: - type: "integer" - type: "string" - description: "MaxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." + description: "maxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." x-kubernetes-int-or-string: true type: "object" rollingUpdate: description: "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate." properties: deletePolicy: - description: "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" + description: "deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" enum: - "Random" - "Newest" @@ -660,20 +660,20 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." + description: "type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." enum: - "RollingUpdate" - "OnDelete" type: "string" type: "object" template: - description: "Template is a local struct containing a collection of templates for creation of\nMachineDeployment objects representing a set of worker nodes." + description: "template is a local struct containing a collection of templates for creation of\nMachineDeployment objects representing a set of worker nodes." properties: bootstrap: - description: "Bootstrap contains the bootstrap template reference to be used\nfor the creation of worker Machines." + description: "bootstrap contains the bootstrap template reference to be used\nfor the creation of worker Machines." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -702,10 +702,10 @@ spec: - "ref" type: "object" infrastructure: - description: "Infrastructure contains the infrastructure template reference to be used\nfor the creation of worker Machines." + description: "infrastructure contains the infrastructure template reference to be used\nfor the creation of worker Machines." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -734,12 +734,12 @@ spec: - "ref" type: "object" metadata: - description: "Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the topology." + description: "metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the topology." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -760,15 +760,15 @@ spec: - "class" x-kubernetes-list-type: "map" machinePools: - description: "MachinePools is a list of machine pool classes that can be used to create\na set of worker nodes." + description: "machinePools is a list of machine pool classes that can be used to create\na set of worker nodes." items: description: "MachinePoolClass serves as a template to define a pool of worker nodes of the cluster\nprovisioned using `ClusterClass`." properties: class: - description: "Class denotes a type of machine pool present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachinePool." + description: "class denotes a type of machine pool present in the cluster,\nthis name MUST be unique within a ClusterClass and can be referenced\nin the Cluster to create a managed MachinePool." type: "string" failureDomains: - description: "FailureDomains is the list of failure domains the MachinePool should be attached to.\nMust match a key in the FailureDomains map stored on the cluster object.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." + description: "failureDomains is the list of failure domains the MachinePool should be attached to.\nMust match a key in the FailureDomains map stored on the cluster object.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." items: type: "string" type: "array" @@ -777,29 +777,29 @@ spec: format: "int32" type: "integer" namingStrategy: - description: "NamingStrategy allows changing the naming pattern used when creating the MachinePool." + description: "namingStrategy allows changing the naming pattern used when creating the MachinePool." properties: template: - description: "Template defines the template to use for generating the name of the MachinePool object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5.\n* `.machinePool.topologyName`: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name)." + description: "template defines the template to use for generating the name of the MachinePool object.\nIf not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`.\nIf the templated string exceeds 63 characters, it will be trimmed to 58 characters and will\nget concatenated with a random suffix of length 5.\nThe templating mechanism provides the following arguments:\n* `.cluster.name`: The name of the cluster object.\n* `.random`: A random alphanumeric string, without vowels, of length 5.\n* `.machinePool.topologyName`: The name of the MachinePool topology (Cluster.spec.topology.workers.machinePools[].name)." type: "string" type: "object" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations.\nNOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass." type: "string" template: - description: "Template is a local struct containing a collection of templates for creation of\nMachinePools objects representing a pool of worker nodes." + description: "template is a local struct containing a collection of templates for creation of\nMachinePools objects representing a pool of worker nodes." properties: bootstrap: - description: "Bootstrap contains the bootstrap template reference to be used\nfor the creation of the Machines in the MachinePool." + description: "bootstrap contains the bootstrap template reference to be used\nfor the creation of the Machines in the MachinePool." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -828,10 +828,10 @@ spec: - "ref" type: "object" infrastructure: - description: "Infrastructure contains the infrastructure template reference to be used\nfor the creation of the MachinePool." + description: "infrastructure contains the infrastructure template reference to be used\nfor the creation of the MachinePool." properties: ref: - description: "Ref is a required reference to a custom resource\noffered by a provider." + description: "ref is a required reference to a custom resource\noffered by a provider." properties: apiVersion: description: "API version of the referent." @@ -860,12 +860,12 @@ spec: - "ref" type: "object" metadata: - description: "Metadata is the metadata applied to the MachinePool.\nAt runtime this metadata is merged with the corresponding metadata from the topology." + description: "metadata is the metadata applied to the MachinePool.\nAt runtime this metadata is merged with the corresponding metadata from the topology." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -891,7 +891,7 @@ spec: description: "ClusterClassStatus defines the observed state of the ClusterClass." properties: conditions: - description: "Conditions defines current observed state of the ClusterClass." + description: "conditions defines current observed state of the ClusterClass." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -906,13 +906,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -921,7 +921,7 @@ spec: type: "object" type: "array" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" v1beta2: @@ -977,25 +977,25 @@ spec: x-kubernetes-list-type: "map" type: "object" variables: - description: "Variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass." + description: "variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass." items: description: "ClusterClassStatusVariable defines a variable which appears in the status of a ClusterClass." properties: definitions: - description: "Definitions is a list of definitions for a variable." + description: "definitions is a list of definitions for a variable." items: description: "ClusterClassStatusVariableDefinition defines a variable which appears in the status of a ClusterClass." properties: from: - description: "From specifies the origin of the variable definition.\nThis will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass\nfor variables discovered from a DiscoverVariables runtime extensions." + description: "from specifies the origin of the variable definition.\nThis will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass\nfor variables discovered from a DiscoverVariables runtime extensions." type: "string" metadata: - description: "Metadata is the metadata of a variable.\nIt can be used to add additional data for higher level tools to\na ClusterClassVariable.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion." + description: "metadata is the metadata of a variable.\nIt can be used to add additional data for higher level tools to\na ClusterClassVariable.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." + description: "annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." type: "object" labels: additionalProperties: @@ -1004,127 +1004,127 @@ spec: type: "object" type: "object" required: - description: "Required specifies if the variable is required.\nNote: this applies to the variable as a whole and thus the\ntop-level object defined in the schema. If nested fields are\nrequired, this will be specified inside the schema." + description: "required specifies if the variable is required.\nNote: this applies to the variable as a whole and thus the\ntop-level object defined in the schema. If nested fields are\nrequired, this will be specified inside the schema." type: "boolean" schema: - description: "Schema defines the schema of the variable." + description: "schema defines the schema of the variable." properties: openAPIV3Schema: - description: "OpenAPIV3Schema defines the schema of a variable via OpenAPI v3\nschema. The schema is a subset of the schema used in\nKubernetes CRDs." + description: "openAPIV3Schema defines the schema of a variable via OpenAPI v3\nschema. The schema is a subset of the schema used in\nKubernetes CRDs." properties: additionalProperties: - description: "AdditionalProperties specifies the schema of values in a map (keys are always strings).\nNOTE: Can only be set if type is object.\nNOTE: AdditionalProperties is mutually exclusive with Properties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "additionalProperties specifies the schema of values in a map (keys are always strings).\nNOTE: Can only be set if type is object.\nNOTE: AdditionalProperties is mutually exclusive with Properties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true allOf: - description: "AllOf specifies that the variable must validate against all of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "allOf specifies that the variable must validate against all of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true anyOf: - description: "AnyOf specifies that the variable must validate against one or more of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "anyOf specifies that the variable must validate against one or more of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true default: - description: "Default is the default value of the variable.\nNOTE: Can be set for all types." + description: "default is the default value of the variable.\nNOTE: Can be set for all types." x-kubernetes-preserve-unknown-fields: true description: - description: "Description is a human-readable description of this variable." + description: "description is a human-readable description of this variable." type: "string" enum: - description: "Enum is the list of valid values of the variable.\nNOTE: Can be set for all types." + description: "enum is the list of valid values of the variable.\nNOTE: Can be set for all types." items: x-kubernetes-preserve-unknown-fields: true type: "array" example: - description: "Example is an example for this variable." + description: "example is an example for this variable." x-kubernetes-preserve-unknown-fields: true exclusiveMaximum: - description: "ExclusiveMaximum specifies if the Maximum is exclusive.\nNOTE: Can only be set if type is integer or number." + description: "exclusiveMaximum specifies if the Maximum is exclusive.\nNOTE: Can only be set if type is integer or number." type: "boolean" exclusiveMinimum: - description: "ExclusiveMinimum specifies if the Minimum is exclusive.\nNOTE: Can only be set if type is integer or number." + description: "exclusiveMinimum specifies if the Minimum is exclusive.\nNOTE: Can only be set if type is integer or number." type: "boolean" format: - description: "Format is an OpenAPI v3 format string. Unknown formats are ignored.\nFor a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)\nhttps://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go\nNOTE: Can only be set if type is string." + description: "format is an OpenAPI v3 format string. Unknown formats are ignored.\nFor a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using)\nhttps://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go\nNOTE: Can only be set if type is string." type: "string" items: - description: "Items specifies fields of an array.\nNOTE: Can only be set if type is array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "items specifies fields of an array.\nNOTE: Can only be set if type is array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true maxItems: - description: "MaxItems is the max length of an array variable.\nNOTE: Can only be set if type is array." + description: "maxItems is the max length of an array variable.\nNOTE: Can only be set if type is array." format: "int64" type: "integer" maxLength: - description: "MaxLength is the max length of a string variable.\nNOTE: Can only be set if type is string." + description: "maxLength is the max length of a string variable.\nNOTE: Can only be set if type is string." format: "int64" type: "integer" maxProperties: - description: "MaxProperties is the maximum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." + description: "maxProperties is the maximum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." format: "int64" type: "integer" maximum: - description: "Maximum is the maximum of an integer or number variable.\nIf ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.\nIf ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.\nNOTE: Can only be set if type is integer or number." + description: "maximum is the maximum of an integer or number variable.\nIf ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum.\nIf ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum.\nNOTE: Can only be set if type is integer or number." format: "int64" type: "integer" minItems: - description: "MinItems is the min length of an array variable.\nNOTE: Can only be set if type is array." + description: "minItems is the min length of an array variable.\nNOTE: Can only be set if type is array." format: "int64" type: "integer" minLength: - description: "MinLength is the min length of a string variable.\nNOTE: Can only be set if type is string." + description: "minLength is the min length of a string variable.\nNOTE: Can only be set if type is string." format: "int64" type: "integer" minProperties: - description: "MinProperties is the minimum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." + description: "minProperties is the minimum amount of entries in a map or properties in an object.\nNOTE: Can only be set if type is object." format: "int64" type: "integer" minimum: - description: "Minimum is the minimum of an integer or number variable.\nIf ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.\nIf ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.\nNOTE: Can only be set if type is integer or number." + description: "minimum is the minimum of an integer or number variable.\nIf ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum.\nIf ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum.\nNOTE: Can only be set if type is integer or number." format: "int64" type: "integer" not: - description: "Not specifies that the variable must not validate against the subschema.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "not specifies that the variable must not validate against the subschema.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true oneOf: - description: "OneOf specifies that the variable must validate against exactly one of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "oneOf specifies that the variable must validate against exactly one of the subschemas in the array.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true pattern: - description: "Pattern is the regex which a string variable must match.\nNOTE: Can only be set if type is string." + description: "pattern is the regex which a string variable must match.\nNOTE: Can only be set if type is string." type: "string" properties: - description: "Properties specifies fields of an object.\nNOTE: Can only be set if type is object.\nNOTE: Properties is mutually exclusive with AdditionalProperties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." + description: "properties specifies fields of an object.\nNOTE: Can only be set if type is object.\nNOTE: Properties is mutually exclusive with AdditionalProperties.\nNOTE: This field uses PreserveUnknownFields and Schemaless,\nbecause recursive validation is not possible." x-kubernetes-preserve-unknown-fields: true required: - description: "Required specifies which fields of an object are required.\nNOTE: Can only be set if type is object." + description: "required specifies which fields of an object are required.\nNOTE: Can only be set if type is object." items: type: "string" type: "array" type: - description: "Type is the type of the variable.\nValid values are: object, array, string, integer, number or boolean." + description: "type is the type of the variable.\nValid values are: object, array, string, integer, number or boolean." type: "string" uniqueItems: - description: "UniqueItems specifies if items in an array must be unique.\nNOTE: Can only be set if type is array." + description: "uniqueItems specifies if items in an array must be unique.\nNOTE: Can only be set if type is array." type: "boolean" x-kubernetes-int-or-string: description: "x-kubernetes-int-or-string specifies that this value is\neither an integer or a string. If this is true, an empty\ntype is allowed and type as child of anyOf is permitted\nif following one of the following patterns:\n\n1) anyOf:\n - type: integer\n - type: string\n2) allOf:\n - anyOf:\n - type: integer\n - type: string\n - ... zero or more" type: "boolean" x-kubernetes-preserve-unknown-fields: - description: "XPreserveUnknownFields allows setting fields in a variable object\nwhich are not defined in the variable schema. This affects fields recursively,\nexcept if nested properties or additionalProperties are specified in the schema." + description: "x-kubernetes-preserve-unknown-fields allows setting fields in a variable object\nwhich are not defined in the variable schema. This affects fields recursively,\nexcept if nested properties or additionalProperties are specified in the schema." type: "boolean" x-kubernetes-validations: - description: "XValidations describes a list of validation rules written in the CEL expression language." + description: "x-kubernetes-validations describes a list of validation rules written in the CEL expression language." items: description: "ValidationRule describes a validation rule written in the CEL expression language." properties: fieldPath: - description: "FieldPath represents the field path returned when the validation fails.\nIt must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.\ne.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`\nIf the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`\nIt does not support list numeric index.\nIt supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.\nNumeric index of array is not supported.\nFor field name which contains special characters, use `['specialName']` to refer the field name.\ne.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`" + description: "fieldPath represents the field path returned when the validation fails.\nIt must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field.\ne.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo`\nIf the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList`\nIt does not support list numeric index.\nIt supports child operation to refer to an existing field currently. Refer to [JSONPath support in Kubernetes](https://kubernetes.io/docs/reference/kubectl/jsonpath/) for more info.\nNumeric index of array is not supported.\nFor field name which contains special characters, use `['specialName']` to refer the field name.\ne.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']`" type: "string" message: - description: "Message represents the message displayed when validation fails. The message is required if the Rule contains\nline breaks. The message must not contain line breaks.\nIf unset, the message is \"failed rule: {Rule}\".\ne.g. \"must be a URL with the host matching spec.host\"" + description: "message represents the message displayed when validation fails. The message is required if the Rule contains\nline breaks. The message must not contain line breaks.\nIf unset, the message is \"failed rule: {Rule}\".\ne.g. \"must be a URL with the host matching spec.host\"" type: "string" messageExpression: - description: "MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.\nSince messageExpression is used as a failure message, it must evaluate to a string.\nIf both message and messageExpression are present on a rule, then messageExpression will be used if validation\nfails. If messageExpression results in a runtime error, the validation failure message is produced\nas if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string\nthat contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.\nmessageExpression has access to all the same variables as the rule; the only difference is the return type.\nExample:\n\"x must be less than max (\"+string(self.max)+\")\"" + description: "messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails.\nSince messageExpression is used as a failure message, it must evaluate to a string.\nIf both message and messageExpression are present on a rule, then messageExpression will be used if validation\nfails. If messageExpression results in a runtime error, the validation failure message is produced\nas if the messageExpression field were unset. If messageExpression evaluates to an empty string, a string with only spaces, or a string\nthat contains line breaks, then the validation failure message will also be produced as if the messageExpression field were unset.\nmessageExpression has access to all the same variables as the rule; the only difference is the return type.\nExample:\n\"x must be less than max (\"+string(self.max)+\")\"" type: "string" reason: default: "FieldValueInvalid" - description: "Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.\nThe currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\".\nIf not set, default to use \"FieldValueInvalid\".\nAll future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid." + description: "reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule.\nThe currently supported reasons are: \"FieldValueInvalid\", \"FieldValueForbidden\", \"FieldValueRequired\", \"FieldValueDuplicate\".\nIf not set, default to use \"FieldValueInvalid\".\nAll future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid." enum: - "FieldValueInvalid" - "FieldValueForbidden" @@ -1132,7 +1132,7 @@ spec: - "FieldValueDuplicate" type: "string" rule: - description: "Rule represents the expression which will be evaluated by CEL.\nref: https://github.com/google/cel-spec\nThe Rule is scoped to the location of the x-kubernetes-validations extension in the schema.\nThe `self` variable in the CEL expression is bound to the scoped value.\nIf the Rule is scoped to an object with properties, the accessible properties of the object are field selectable\nvia `self.field` and field presence can be checked via `has(self.field)`.\nIf the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map\nare accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map\nare accessible via CEL macros and functions such as `self.all(...)`.\nIf the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and\nfunctions.\nIf the Rule is scoped to a scalar, `self` is bound to the scalar value.\nExamples:\n- Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"}\n- Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"}\n- Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"}\n\nUnknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL\nexpressions. This includes:\n- Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.\n- Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as:\n - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\n - An array where the items schema is of an \"unknown type\"\n - An object where the additionalProperties schema is of an \"unknown type\"\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.\nAccessible property names are escaped according to the following rules when accessed in the expression:\n- '__' escapes to '__underscores__'\n- '.' escapes to '__dot__'\n- '-' escapes to '__dash__'\n- '/' escapes to '__slash__'\n- Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n\t \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n\t \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"}\n\nIf `rule` makes use of the `oldSelf` variable it is implicitly a\n`transition rule`.\n\nBy default, the `oldSelf` variable is the same type as `self`.\n\nTransition rules by default are applied only on UPDATE requests and are\nskipped if an old value could not be found." + description: "rule represents the expression which will be evaluated by CEL.\nref: https://github.com/google/cel-spec\nThe Rule is scoped to the location of the x-kubernetes-validations extension in the schema.\nThe `self` variable in the CEL expression is bound to the scoped value.\nIf the Rule is scoped to an object with properties, the accessible properties of the object are field selectable\nvia `self.field` and field presence can be checked via `has(self.field)`.\nIf the Rule is scoped to an object with additionalProperties (i.e. a map) the value of the map\nare accessible via `self[mapKey]`, map containment can be checked via `mapKey in self` and all entries of the map\nare accessible via CEL macros and functions such as `self.all(...)`.\nIf the Rule is scoped to an array, the elements of the array are accessible via `self[i]` and also by macros and\nfunctions.\nIf the Rule is scoped to a scalar, `self` is bound to the scalar value.\nExamples:\n- Rule scoped to a map of objects: {\"rule\": \"self.components['Widget'].priority < 10\"}\n- Rule scoped to a list of integers: {\"rule\": \"self.values.all(value, value >= 0 && value < 100)\"}\n- Rule scoped to a string value: {\"rule\": \"self.startsWith('kube')\"}\n\nUnknown data preserved in custom resources via x-kubernetes-preserve-unknown-fields is not accessible in CEL\nexpressions. This includes:\n- Unknown field values that are preserved by object schemas with x-kubernetes-preserve-unknown-fields.\n- Object properties where the property schema is of an \"unknown type\". An \"unknown type\" is recursively defined as:\n - A schema with no type and x-kubernetes-preserve-unknown-fields set to true\n - An array where the items schema is of an \"unknown type\"\n - An object where the additionalProperties schema is of an \"unknown type\"\n\nOnly property names of the form `[a-zA-Z_.-/][a-zA-Z0-9_.-/]*` are accessible.\nAccessible property names are escaped according to the following rules when accessed in the expression:\n- '__' escapes to '__underscores__'\n- '.' escapes to '__dot__'\n- '-' escapes to '__dash__'\n- '/' escapes to '__slash__'\n- Property names that exactly match a CEL RESERVED keyword escape to '__{keyword}__'. The keywords are:\n\t \"true\", \"false\", \"null\", \"in\", \"as\", \"break\", \"const\", \"continue\", \"else\", \"for\", \"function\", \"if\",\n\t \"import\", \"let\", \"loop\", \"package\", \"namespace\", \"return\".\nExamples:\n - Rule accessing a property named \"namespace\": {\"rule\": \"self.__namespace__ > 0\"}\n - Rule accessing a property named \"x-prop\": {\"rule\": \"self.x__dash__prop > 0\"}\n - Rule accessing a property named \"redact__d\": {\"rule\": \"self.redact__underscores__d > 0\"}\n\nIf `rule` makes use of the `oldSelf` variable it is implicitly a\n`transition rule`.\n\nBy default, the `oldSelf` variable is the same type as `self`.\n\nTransition rules by default are applied only on UPDATE requests and are\nskipped if an old value could not be found." type: "string" required: - "rule" @@ -1142,12 +1142,12 @@ spec: - "rule" x-kubernetes-list-type: "map" x-metadata: - description: "XMetadata is the metadata of a variable or a nested field within a variable.\nIt can be used to add additional data for higher level tools." + description: "x-metadata is the metadata of a variable or a nested field within a variable.\nIt can be used to add additional data for higher level tools." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." + description: "annotations is an unstructured key value map that can be used to store and\nretrieve arbitrary metadata.\nThey are not queryable." type: "object" labels: additionalProperties: @@ -1166,10 +1166,10 @@ spec: type: "object" type: "array" definitionsConflict: - description: "DefinitionsConflict specifies whether or not there are conflicting definitions for a single variable name." + description: "definitionsConflict specifies whether or not there are conflicting definitions for a single variable name." type: "boolean" name: - description: "Name is the name of the variable." + description: "name is the name of the variable." type: "string" required: - "definitions" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml index f8ebbc926..269be3352 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/clusters.yaml @@ -73,7 +73,7 @@ spec: description: "Cluster network configuration." properties: apiServerPort: - description: "APIServerPort specifies the port the API Server should bind to.\nDefaults to 6443." + description: "apiServerPort specifies the port the API Server should bind to.\nDefaults to 6443." format: "int32" type: "integer" pods: @@ -101,7 +101,7 @@ spec: type: "object" type: "object" controlPlaneEndpoint: - description: "ControlPlaneEndpoint represents the endpoint used to communicate with the control plane." + description: "controlPlaneEndpoint represents the endpoint used to communicate with the control plane." properties: host: description: "The hostname on which the API server is serving." @@ -115,7 +115,7 @@ spec: - "port" type: "object" controlPlaneRef: - description: "ControlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." + description: "controlPlaneRef is an optional reference to a provider-specific resource that holds\nthe details for provisioning the Control Plane for a Cluster." properties: apiVersion: description: "API version of the referent." @@ -141,7 +141,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" infrastructureRef: - description: "InfrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." + description: "infrastructureRef is a reference to a provider-specific resource that holds the details\nfor provisioning infrastructure for a cluster in said provider." properties: apiVersion: description: "API version of the referent." @@ -167,7 +167,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" paused: - description: "Paused can be used to prevent controllers from processing the Cluster and all its associated objects." + description: "paused can be used to prevent controllers from processing the Cluster and all its associated objects." type: "boolean" topology: description: "This encapsulates the topology for the cluster.\nNOTE: It is required to enable the ClusterTopology\nfeature gate flag to activate managed topologies support;\nthis feature is highly experimental, and parts of it might still be not implemented." @@ -176,13 +176,13 @@ spec: description: "The name of the ClusterClass object to create the topology." type: "string" controlPlane: - description: "ControlPlane describes the cluster control plane." + description: "controlPlane describes the cluster control plane." properties: machineHealthCheck: - description: "MachineHealthCheck allows to enable, disable and override\nthe MachineHealthCheck configuration in the ClusterClass for this control plane." + description: "machineHealthCheck allows to enable, disable and override\nthe MachineHealthCheck configuration in the ClusterClass for this control plane." properties: enable: - description: "Enable controls if a MachineHealthCheck should be created for the target machines.\n\nIf false: No MachineHealthCheck will be created.\n\nIf not set(default): A MachineHealthCheck will be created if it is defined here or\n in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.\n\nIf true: A MachineHealthCheck is guaranteed to be created. Cluster validation will\nblock if `enable` is true and no MachineHealthCheck definition is available." + description: "enable controls if a MachineHealthCheck should be created for the target machines.\n\nIf false: No MachineHealthCheck will be created.\n\nIf not set(default): A MachineHealthCheck will be created if it is defined here or\n in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.\n\nIf true: A MachineHealthCheck is guaranteed to be created. Cluster validation will\nblock if `enable` is true and no MachineHealthCheck definition is available." type: "boolean" maxUnhealthy: anyOf: @@ -191,10 +191,10 @@ spec: description: "Any further remediation is only allowed if at most \"MaxUnhealthy\" machines selected by\n\"selector\" are not healthy." x-kubernetes-int-or-string: true nodeStartupTimeout: - description: "NodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." + description: "nodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -220,7 +220,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -244,12 +244,12 @@ spec: type: "string" type: "object" metadata: - description: "Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane\nif the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it\nis applied only to the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." + description: "metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane\nif the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it\nis applied only to the ControlPlane.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -258,34 +258,34 @@ spec: type: "object" type: "object" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" replicas: - description: "Replicas is the number of control plane nodes.\nIf the value is nil, the ControlPlane object is created without the number of Replicas\nand it's assumed that the control plane controller does not implement support for this field.\nWhen specified against a control plane provider that lacks support for this field, this value will be ignored." + description: "replicas is the number of control plane nodes.\nIf the value is nil, the ControlPlane object is created without the number of Replicas\nand it's assumed that the control plane controller does not implement support for this field.\nWhen specified against a control plane provider that lacks support for this field, this value will be ignored." format: "int32" type: "integer" variables: - description: "Variables can be used to customize the ControlPlane through patches." + description: "variables can be used to customize the ControlPlane through patches." properties: overrides: - description: "Overrides can be used to override Cluster level variables." + description: "overrides can be used to override Cluster level variables." items: description: "ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a\nVariable definition in the ClusterClass `status` variables." properties: definitionFrom: - description: "DefinitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." + description: "definitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." type: "string" name: - description: "Name of the variable." + description: "name of the variable." type: "string" value: - description: "Value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" + description: "value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" x-kubernetes-preserve-unknown-fields: true required: - "name" @@ -298,22 +298,22 @@ spec: type: "object" type: "object" rolloutAfter: - description: "RolloutAfter performs a rollout of the entire cluster one component at a time,\ncontrol plane first and then machine deployments.\n\nDeprecated: This field has no function and is going to be removed in the next apiVersion." + description: "rolloutAfter performs a rollout of the entire cluster one component at a time,\ncontrol plane first and then machine deployments.\n\nDeprecated: This field has no function and is going to be removed in the next apiVersion." format: "date-time" type: "string" variables: - description: "Variables can be used to customize the Cluster through\npatches. They must comply to the corresponding\nVariableClasses defined in the ClusterClass." + description: "variables can be used to customize the Cluster through\npatches. They must comply to the corresponding\nVariableClasses defined in the ClusterClass." items: description: "ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a\nVariable definition in the ClusterClass `status` variables." properties: definitionFrom: - description: "DefinitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." + description: "definitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." type: "string" name: - description: "Name of the variable." + description: "name of the variable." type: "string" value: - description: "Value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" + description: "value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" x-kubernetes-preserve-unknown-fields: true required: - "name" @@ -327,24 +327,24 @@ spec: description: "The Kubernetes version of the cluster." type: "string" workers: - description: "Workers encapsulates the different constructs that form the worker nodes\nfor the cluster." + description: "workers encapsulates the different constructs that form the worker nodes\nfor the cluster." properties: machineDeployments: - description: "MachineDeployments is a list of machine deployments in the cluster." + description: "machineDeployments is a list of machine deployments in the cluster." items: description: "MachineDeploymentTopology specifies the different parameters for a set of worker nodes in the topology.\nThis set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller." properties: class: - description: "Class is the name of the MachineDeploymentClass used to create the set of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." + description: "class is the name of the MachineDeploymentClass used to create the set of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." type: "string" failureDomain: - description: "FailureDomain is the failure domain the machines will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machines will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" machineHealthCheck: - description: "MachineHealthCheck allows to enable, disable and override\nthe MachineHealthCheck configuration in the ClusterClass for this MachineDeployment." + description: "machineHealthCheck allows to enable, disable and override\nthe MachineHealthCheck configuration in the ClusterClass for this MachineDeployment." properties: enable: - description: "Enable controls if a MachineHealthCheck should be created for the target machines.\n\nIf false: No MachineHealthCheck will be created.\n\nIf not set(default): A MachineHealthCheck will be created if it is defined here or\n in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.\n\nIf true: A MachineHealthCheck is guaranteed to be created. Cluster validation will\nblock if `enable` is true and no MachineHealthCheck definition is available." + description: "enable controls if a MachineHealthCheck should be created for the target machines.\n\nIf false: No MachineHealthCheck will be created.\n\nIf not set(default): A MachineHealthCheck will be created if it is defined here or\n in the associated ClusterClass. If no MachineHealthCheck is defined then none will be created.\n\nIf true: A MachineHealthCheck is guaranteed to be created. Cluster validation will\nblock if `enable` is true and no MachineHealthCheck definition is available." type: "boolean" maxUnhealthy: anyOf: @@ -353,10 +353,10 @@ spec: description: "Any further remediation is only allowed if at most \"MaxUnhealthy\" machines selected by\n\"selector\" are not healthy." x-kubernetes-int-or-string: true nodeStartupTimeout: - description: "NodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." + description: "nodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -382,7 +382,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -406,12 +406,12 @@ spec: type: "string" type: "object" metadata: - description: "Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." + description: "metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -424,39 +424,39 @@ spec: format: "int32" type: "integer" name: - description: "Name is the unique identifier for this MachineDeploymentTopology.\nThe value is used with other unique identifiers to create a MachineDeployment's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." + description: "name is the unique identifier for this MachineDeploymentTopology.\nThe value is used with other unique identifiers to create a MachineDeployment's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." type: "string" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" replicas: - description: "Replicas is the number of worker nodes belonging to this set.\nIf the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." + description: "replicas is the number of worker nodes belonging to this set.\nIf the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." format: "int32" type: "integer" strategy: description: "The deployment strategy to use to replace existing machines with\nnew ones." properties: remediation: - description: "Remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." + description: "remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." properties: maxInFlight: anyOf: - type: "integer" - type: "string" - description: "MaxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." + description: "maxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." x-kubernetes-int-or-string: true type: "object" rollingUpdate: description: "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate." properties: deletePolicy: - description: "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" + description: "deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" enum: - "Random" - "Newest" @@ -476,28 +476,28 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." + description: "type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." enum: - "RollingUpdate" - "OnDelete" type: "string" type: "object" variables: - description: "Variables can be used to customize the MachineDeployment through patches." + description: "variables can be used to customize the MachineDeployment through patches." properties: overrides: - description: "Overrides can be used to override Cluster level variables." + description: "overrides can be used to override Cluster level variables." items: description: "ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a\nVariable definition in the ClusterClass `status` variables." properties: definitionFrom: - description: "DefinitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." + description: "definitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." type: "string" name: - description: "Name of the variable." + description: "name of the variable." type: "string" value: - description: "Value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" + description: "value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" x-kubernetes-preserve-unknown-fields: true required: - "name" @@ -517,25 +517,25 @@ spec: - "name" x-kubernetes-list-type: "map" machinePools: - description: "MachinePools is a list of machine pools in the cluster." + description: "machinePools is a list of machine pools in the cluster." items: description: "MachinePoolTopology specifies the different parameters for a pool of worker nodes in the topology.\nThis pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller." properties: class: - description: "Class is the name of the MachinePoolClass used to create the pool of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." + description: "class is the name of the MachinePoolClass used to create the pool of worker nodes.\nThis should match one of the deployment classes defined in the ClusterClass object\nmentioned in the `Cluster.Spec.Class` field." type: "string" failureDomains: - description: "FailureDomains is the list of failure domains the machine pool will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomains is the list of failure domains the machine pool will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." items: type: "string" type: "array" metadata: - description: "Metadata is the metadata applied to the MachinePool.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." + description: "metadata is the metadata applied to the MachinePool.\nAt runtime this metadata is merged with the corresponding metadata from the ClusterClass." properties: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -548,37 +548,37 @@ spec: format: "int32" type: "integer" name: - description: "Name is the unique identifier for this MachinePoolTopology.\nThe value is used with other unique identifiers to create a MachinePool's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." + description: "name is the unique identifier for this MachinePoolTopology.\nThe value is used with other unique identifiers to create a MachinePool's Name\n(e.g. cluster's name, etc). In case the name is greater than the allowed maximum length,\nthe values are hashed together." type: "string" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool\nhosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool\nhosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" replicas: - description: "Replicas is the number of nodes belonging to this pool.\nIf the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." + description: "replicas is the number of nodes belonging to this pool.\nIf the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1)\nand it's assumed that an external entity (like cluster autoscaler) is responsible for the management\nof this value." format: "int32" type: "integer" variables: - description: "Variables can be used to customize the MachinePool through patches." + description: "variables can be used to customize the MachinePool through patches." properties: overrides: - description: "Overrides can be used to override Cluster level variables." + description: "overrides can be used to override Cluster level variables." items: description: "ClusterVariable can be used to customize the Cluster through patches. Each ClusterVariable is associated with a\nVariable definition in the ClusterClass `status` variables." properties: definitionFrom: - description: "DefinitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." + description: "definitionFrom specifies where the definition of this Variable is from.\n\nDeprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion." type: "string" name: - description: "Name of the variable." + description: "name of the variable." type: "string" value: - description: "Value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" + description: "value of the variable.\nNote: the value will be validated against the schema of the corresponding ClusterClassVariable\nfrom the ClusterClass.\nNote: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a\nhard-coded schema for apiextensionsv1.JSON which cannot be produced by another type via controller-tools,\ni.e. it is not possible to have no type field.\nRef: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111" x-kubernetes-preserve-unknown-fields: true required: - "name" @@ -607,7 +607,7 @@ spec: description: "ClusterStatus defines the observed state of Cluster." properties: conditions: - description: "Conditions defines current service state of the cluster." + description: "conditions defines current service state of the cluster." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -622,13 +622,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -637,7 +637,7 @@ spec: type: "object" type: "array" controlPlaneReady: - description: "ControlPlaneReady denotes if the control plane became ready during initial provisioning\nto receive requests.\nNOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.\nThe value of this field is never updated after provisioning is completed. Please use conditions\nto check the operational state of the control plane." + description: "controlPlaneReady denotes if the control plane became ready during initial provisioning\nto receive requests.\nNOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning.\nThe value of this field is never updated after provisioning is completed. Please use conditions\nto check the operational state of the control plane." type: "boolean" failureDomains: additionalProperties: @@ -646,29 +646,29 @@ spec: attributes: additionalProperties: type: "string" - description: "Attributes is a free form map of attributes an infrastructure provider might use or require." + description: "attributes is a free form map of attributes an infrastructure provider might use or require." type: "object" controlPlane: - description: "ControlPlane determines if this failure domain is suitable for use by control plane machines." + description: "controlPlane determines if this failure domain is suitable for use by control plane machines." type: "boolean" type: "object" - description: "FailureDomains is a slice of failure domain objects synced from the infrastructure provider." + description: "failureDomains is a slice of failure domain objects synced from the infrastructure provider." type: "object" failureMessage: - description: "FailureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureMessage indicates that there is a fatal problem reconciling the\nstate, and will be set to a descriptive error message.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" failureReason: - description: "FailureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureReason indicates that there is a fatal problem reconciling the\nstate, and will be set to a token value suitable for\nprogrammatic interpretation.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" v1beta2: description: "v1beta2 groups all the fields that will be added or modified in Cluster's status with the V1Beta2 version." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml index 949365d7f..48ae14707 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinedeployments.yaml @@ -72,11 +72,11 @@ spec: description: "MachineDeploymentSpec defines the desired state of MachineDeployment." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" minReadySeconds: - description: "MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.\nDefaults to 0 (machine will be considered available as soon as the Node is ready)" + description: "minReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.\nDefaults to 0 (machine will be considered available as soon as the Node is ready)" format: "int32" type: "integer" paused: @@ -95,7 +95,7 @@ spec: format: "int32" type: "integer" rolloutAfter: - description: "RolloutAfter is a field to indicate a rollout should be performed\nafter the specified time even if no changes have been made to the\nMachineDeployment.\nExample: In the YAML the time can be specified in the RFC3339 format.\nTo specify the rolloutAfter target as March 9, 2023, at 9 am UTC\nuse \"2023-03-09T09:00:00Z\"." + description: "rolloutAfter is a field to indicate a rollout should be performed\nafter the specified time even if no changes have been made to the\nMachineDeployment.\nExample: In the YAML the time can be specified in the RFC3339 format.\nTo specify the rolloutAfter target as March 9, 2023, at 9 am UTC\nuse \"2023-03-09T09:00:00Z\"." format: "date-time" type: "string" selector: @@ -135,20 +135,20 @@ spec: description: "The deployment strategy to use to replace existing machines with\nnew ones." properties: remediation: - description: "Remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." + description: "remediation controls the strategy of remediating unhealthy machines\nand how remediating operations should occur during the lifecycle of the dependant MachineSets." properties: maxInFlight: anyOf: - type: "integer" - type: "string" - description: "MaxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." + description: "maxInFlight determines how many in flight remediations should happen at the same time.\n\nRemediation only happens on the MachineSet with the most current revision, while\nolder MachineSets (usually present during rollout operations) aren't allowed to remediate.\n\nNote: In general (independent of remediations), unhealthy machines are always\nprioritized during scale down operations over healthy ones.\n\nMaxInFlight can be set to a fixed number or a percentage.\nExample: when this is set to 20%, the MachineSet controller deletes at most 20% of\nthe desired replicas.\n\nIf not set, remediation is limited to all machines (bounded by replicas)\nunder the active MachineSet's management." x-kubernetes-int-or-string: true type: "object" rollingUpdate: description: "Rolling update config params. Present only if\nMachineDeploymentStrategyType = RollingUpdate." properties: deletePolicy: - description: "DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" + description: "deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling.\nValid values are \"Random, \"Newest\", \"Oldest\"\nWhen no value is supplied, the default DeletePolicy of MachineSet is used" enum: - "Random" - "Newest" @@ -168,14 +168,14 @@ spec: x-kubernetes-int-or-string: true type: "object" type: - description: "Type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." + description: "type of deployment. Allowed values are RollingUpdate and OnDelete.\nThe default is RollingUpdate." enum: - "RollingUpdate" - "OnDelete" type: "string" type: "object" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -183,7 +183,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -195,10 +195,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -224,18 +224,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -261,16 +261,16 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" readinessGates: description: "readinessGates specifies additional conditions to include when evaluating Machine Ready condition.\n\nThis field can be used e.g. by Cluster API control plane providers to extend the semantic of the\nReady condition for the Machine they control, like the kubeadm control provider adding ReadinessGates\nfor the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.\n\nAnother example are external controllers, e.g. responsible to install special software/hardware on the Machines;\nthey can include the status of those components with a new condition and add this condition to ReadinessGates.\n\nNOTE: this field is considered only for computing v1beta2 conditions." @@ -292,7 +292,7 @@ spec: - "conditionType" x-kubernetes-list-type: "map" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -313,7 +313,7 @@ spec: format: "int32" type: "integer" conditions: - description: "Conditions defines current service state of the MachineDeployment." + description: "conditions defines current service state of the MachineDeployment." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -328,13 +328,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -347,7 +347,7 @@ spec: format: "int64" type: "integer" phase: - description: "Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." + description: "phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown)." type: "string" readyReplicas: description: "Total number of ready machines targeted by this deployment." @@ -358,7 +358,7 @@ spec: format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" unavailableReplicas: description: "Total number of unavailable machines targeted by this deployment.\nThis is the total number of machines that are still required for\nthe deployment to have 100% available capacity. They may either\nbe machines that are running but not yet available or machines\nthat still have not been created." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml index bee054f25..6679669cb 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinehealthchecks.yaml @@ -56,7 +56,7 @@ spec: description: "Specification of machine health check policy" properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" maxUnhealthy: @@ -66,10 +66,10 @@ spec: description: "Any further remediation is only allowed if at most \"MaxUnhealthy\" machines selected by\n\"selector\" are not healthy.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details." x-kubernetes-int-or-string: true nodeStartupTimeout: - description: "NodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." + description: "nodeStartupTimeout allows to set the maximum time for MachineHealthCheck\nto consider a Machine unhealthy if a corresponding Node isn't associated\nthrough a `Spec.ProviderID` field.\n\nThe duration set in this field is compared to the greatest of:\n- Cluster's infrastructure ready condition timestamp (if and when available)\n- Control Plane's initialized condition timestamp (if and when available)\n- Machine's infrastructure ready condition timestamp (if and when available)\n- Machine's metadata creation timestamp\n\nDefaults to 10 minutes.\nIf you wish to disable this feature, set the value explicitly to 0." type: "string" remediationTemplate: - description: "RemediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." + description: "remediationTemplate is a reference to a remediation template\nprovided by an infrastructure provider.\n\nThis field is completely optional, when filled, the MachineHealthCheck controller\ncreates a new object from the template referenced and hands off remediation of the machine to\na controller that lives outside of Cluster API." properties: apiVersion: description: "API version of the referent." @@ -128,7 +128,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" unhealthyConditions: - description: "UnhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." + description: "unhealthyConditions contains a list of the conditions that determine\nwhether a node is considered unhealthy. The conditions are combined in a\nlogical OR, i.e. if any of the conditions is met, the node is unhealthy." items: description: "UnhealthyCondition represents a Node condition type and value with a timeout\nspecified as a duration. When the named condition has been in the given\nstatus for at least the timeout value, a node is considered unhealthy." properties: @@ -158,7 +158,7 @@ spec: description: "Most recently observed status of MachineHealthCheck resource" properties: conditions: - description: "Conditions defines current service state of the MachineHealthCheck." + description: "conditions defines current service state of the MachineHealthCheck." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -173,13 +173,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -198,16 +198,16 @@ spec: minimum: 0.0 type: "integer" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" remediationsAllowed: - description: "RemediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" + description: "remediationsAllowed is the number of further remediations allowed by this machine health check before\nmaxUnhealthy short circuiting will be applied" format: "int32" minimum: 0.0 type: "integer" targets: - description: "Targets shows the current list of machines the machine health check is watching" + description: "targets shows the current list of machines the machine health check is watching" items: type: "string" type: "array" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml index 8fc6f6748..ba846cf29 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinepools.yaml @@ -60,11 +60,11 @@ spec: description: "MachinePoolSpec defines the desired state of MachinePool." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomains: - description: "FailureDomains is the list of failure domains this MachinePool should be attached to." + description: "failureDomains is the list of failure domains this MachinePool should be attached to." items: type: "string" type: "array" @@ -73,7 +73,7 @@ spec: format: "int32" type: "integer" providerIDList: - description: "ProviderIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." + description: "providerIDList are the identification IDs of machine instances provided by the provider.\nThis field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances." items: type: "string" type: "array" @@ -82,7 +82,7 @@ spec: format: "int32" type: "integer" template: - description: "Template describes the machines that will be created." + description: "template describes the machines that will be created." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -90,7 +90,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -102,10 +102,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -131,18 +131,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -168,16 +168,16 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" readinessGates: description: "readinessGates specifies additional conditions to include when evaluating Machine Ready condition.\n\nThis field can be used e.g. by Cluster API control plane providers to extend the semantic of the\nReady condition for the Machine they control, like the kubeadm control provider adding ReadinessGates\nfor the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.\n\nAnother example are external controllers, e.g. responsible to install special software/hardware on the Machines;\nthey can include the status of those components with a new condition and add this condition to ReadinessGates.\n\nNOTE: this field is considered only for computing v1beta2 conditions." @@ -199,7 +199,7 @@ spec: - "conditionType" x-kubernetes-list-type: "map" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -219,10 +219,10 @@ spec: format: "int32" type: "integer" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" conditions: - description: "Conditions define the current service state of the MachinePool." + description: "conditions define the current service state of the MachinePool." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -237,13 +237,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -252,16 +252,16 @@ spec: type: "object" type: "array" failureMessage: - description: "FailureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureMessage indicates that there is a problem reconciling the state,\nand will be set to a descriptive error message.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" failureReason: - description: "FailureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureReason indicates that there is a problem reconciling the state, and\nwill be set to a token value suitable for programmatic interpretation.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" nodeRefs: - description: "NodeRefs will point to the corresponding Nodes if it they exist." + description: "nodeRefs will point to the corresponding Nodes if it they exist." items: description: "ObjectReference contains enough information to let you inspect or modify the referred object." properties: @@ -290,18 +290,18 @@ spec: x-kubernetes-map-type: "atomic" type: "array" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of cluster actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" readyReplicas: description: "The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is \"Ready\"." format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" unavailableReplicas: diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml index 08db1ac00..eb1556610 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machines.yaml @@ -59,10 +59,10 @@ spec: description: "MachineSpec defines the desired state of Machine." properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -88,18 +88,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -125,16 +125,16 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" readinessGates: description: "readinessGates specifies additional conditions to include when evaluating Machine Ready condition.\n\nThis field can be used e.g. by Cluster API control plane providers to extend the semantic of the\nReady condition for the Machine they control, like the kubeadm control provider adding ReadinessGates\nfor the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.\n\nAnother example are external controllers, e.g. responsible to install special software/hardware on the Machines;\nthey can include the status of those components with a new condition and add this condition to ReadinessGates.\n\nNOTE: this field is considered only for computing v1beta2 conditions." @@ -156,7 +156,7 @@ spec: - "conditionType" x-kubernetes-list-type: "map" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -167,7 +167,7 @@ spec: description: "MachineStatus defines the observed state of Machine." properties: addresses: - description: "Addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." + description: "addresses is a list of addresses assigned to the machine.\nThis field is copied from the infrastructure provider reference." items: description: "MachineAddress contains information for the node's address." properties: @@ -183,14 +183,14 @@ spec: type: "object" type: "array" bootstrapReady: - description: "BootstrapReady is the state of the bootstrap provider." + description: "bootstrapReady is the state of the bootstrap provider." type: "boolean" certificatesExpiryDate: - description: "CertificatesExpiryDate is the expiry date of the machine certificates.\nThis value is only set for control plane machines." + description: "certificatesExpiryDate is the expiry date of the machine certificates.\nThis value is only set for control plane machines." format: "date-time" type: "string" conditions: - description: "Conditions defines current service state of the Machine." + description: "conditions defines current service state of the Machine." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -205,13 +205,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -232,20 +232,20 @@ spec: type: "string" type: "object" failureMessage: - description: "FailureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureMessage will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a more verbose string suitable\nfor logging and human consumption.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" failureReason: - description: "FailureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." + description: "failureReason will be set in the event that there is a terminal problem\nreconciling the Machine and will contain a succinct value suitable\nfor machine interpretation.\n\nThis field should not be set for transitive errors that a controller\nfaces that are expected to be fixed automatically over\ntime (like service outages), but instead indicate that something is\nfundamentally wrong with the Machine's spec or the configuration of\nthe controller, and that manual intervention is required. Examples\nof terminal errors would be invalid combinations of settings in the\nspec, values that are unsupported by the controller, or the\nresponsible controller itself being critically misconfigured.\n\nAny transient errors that occur during the reconciliation of Machines\ncan be added as events to the Machine object and/or logged in the\ncontroller's output.\n\nDeprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details." type: "string" infrastructureReady: - description: "InfrastructureReady is the state of the infrastructure provider." + description: "infrastructureReady is the state of the infrastructure provider." type: "boolean" lastUpdated: - description: "LastUpdated identifies when the phase of the Machine last transitioned." + description: "lastUpdated identifies when the phase of the Machine last transitioned." format: "date-time" type: "string" nodeInfo: - description: "NodeInfo is a set of ids/uuids to uniquely identify the node.\nMore info: https://kubernetes.io/docs/concepts/nodes/node/#info" + description: "nodeInfo is a set of ids/uuids to uniquely identify the node.\nMore info: https://kubernetes.io/docs/concepts/nodes/node/#info" properties: architecture: description: "The Architecture reported by the node" @@ -290,7 +290,7 @@ spec: - "systemUUID" type: "object" nodeRef: - description: "NodeRef will point to the corresponding Node if it exists." + description: "nodeRef will point to the corresponding Node if it exists." properties: apiVersion: description: "API version of the referent." @@ -316,11 +316,11 @@ spec: type: "object" x-kubernetes-map-type: "atomic" observedGeneration: - description: "ObservedGeneration is the latest generation observed by the controller." + description: "observedGeneration is the latest generation observed by the controller." format: "int64" type: "integer" phase: - description: "Phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." + description: "phase represents the current phase of machine actuation.\nE.g. Pending, Running, Terminating, Failed etc." type: "string" v1beta2: description: "v1beta2 groups all the fields that will be added or modified in Machine's status with the V1Beta2 version." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml index dc896a4ff..d9b436d53 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/cluster.x-k8s.io/v1beta1/machinesets.yaml @@ -64,26 +64,26 @@ spec: description: "MachineSetSpec defines the desired state of MachineSet." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" deletePolicy: - description: "DeletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" + description: "deletePolicy defines the policy used to identify nodes to delete when downscaling.\nDefaults to \"Random\". Valid values are \"Random, \"Newest\", \"Oldest\"" enum: - "Random" - "Newest" - "Oldest" type: "string" minReadySeconds: - description: "MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.\nDefaults to 0 (machine will be considered available as soon as the Node is ready)" + description: "minReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available.\nDefaults to 0 (machine will be considered available as soon as the Node is ready)" format: "int32" type: "integer" replicas: - description: "Replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\n\nDefaults to:\n* if the Kubernetes autoscaler min size and max size annotations are set:\n - if it's a new MachineSet, use min size\n - if the replicas field of the old MachineSet is < min size, use min size\n - if the replicas field of the old MachineSet is > max size, use max size\n - if the replicas field of the old MachineSet is in the (min size, max size) range, keep the value from the oldMS\n* otherwise use 1\nNote: Defaulting will be run whenever the replicas field is not set:\n* A new MachineSet is created with replicas not set.\n* On an existing MachineSet the replicas field was first set and is now unset.\nThose cases are especially relevant for the following Kubernetes autoscaler use cases:\n* A new MachineSet is created and replicas should be managed by the autoscaler\n* An existing MachineSet which initially wasn't controlled by the autoscaler\n should be later controlled by the autoscaler" + description: "replicas is the number of desired replicas.\nThis is a pointer to distinguish between explicit zero and unspecified.\n\nDefaults to:\n* if the Kubernetes autoscaler min size and max size annotations are set:\n - if it's a new MachineSet, use min size\n - if the replicas field of the old MachineSet is < min size, use min size\n - if the replicas field of the old MachineSet is > max size, use max size\n - if the replicas field of the old MachineSet is in the (min size, max size) range, keep the value from the oldMS\n* otherwise use 1\nNote: Defaulting will be run whenever the replicas field is not set:\n* A new MachineSet is created with replicas not set.\n* On an existing MachineSet the replicas field was first set and is now unset.\nThose cases are especially relevant for the following Kubernetes autoscaler use cases:\n* A new MachineSet is created and replicas should be managed by the autoscaler\n* An existing MachineSet which initially wasn't controlled by the autoscaler\n should be later controlled by the autoscaler" format: "int32" type: "integer" selector: - description: "Selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" + description: "selector is a label query over machines that should match the replica count.\nLabel keys and values that must match in order to be controlled by this MachineSet.\nIt must match the machine template's labels.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors" properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -116,7 +116,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" template: - description: "Template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." + description: "template is the object that describes the machine that will be created if\ninsufficient replicas are detected.\nObject references to custom resources are treated as templates." properties: metadata: description: "Standard object's metadata.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata" @@ -124,7 +124,7 @@ spec: annotations: additionalProperties: type: "string" - description: "Annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" + description: "annotations is an unstructured key value map stored with a resource that may be\nset by external tools to store and retrieve arbitrary metadata. They are not\nqueryable and should be preserved when modifying objects.\nMore info: http://kubernetes.io/docs/user-guide/annotations" type: "object" labels: additionalProperties: @@ -136,10 +136,10 @@ spec: description: "Specification of the desired behavior of the machine.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status" properties: bootstrap: - description: "Bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." + description: "bootstrap is a reference to a local struct which encapsulates\nfields to configure the Machine’s bootstrapping mechanism." properties: configRef: - description: "ConfigRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." + description: "configRef is a reference to a bootstrap provider-specific resource\nthat holds configuration details. The reference is optional to\nallow users/operators to specify Bootstrap.DataSecretName without\nthe need of a controller." properties: apiVersion: description: "API version of the referent." @@ -165,18 +165,18 @@ spec: type: "object" x-kubernetes-map-type: "atomic" dataSecretName: - description: "DataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." + description: "dataSecretName is the name of the secret that stores the bootstrap data script.\nIf nil, the Machine should remain in the Pending state." type: "string" type: "object" clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." minLength: 1 type: "string" failureDomain: - description: "FailureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." + description: "failureDomain is the failure domain the machine will be created in.\nMust match a key in the FailureDomains map stored on the cluster object." type: "string" infrastructureRef: - description: "InfrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." + description: "infrastructureRef is a required reference to a custom resource\noffered by an infrastructure provider." properties: apiVersion: description: "API version of the referent." @@ -202,16 +202,16 @@ spec: type: "object" x-kubernetes-map-type: "atomic" nodeDeletionTimeout: - description: "NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." + description: "nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine\nhosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely.\nDefaults to 10 seconds." type: "string" nodeDrainTimeout: - description: "NodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" + description: "nodeDrainTimeout is the total amount of time that the controller will spend on draining a node.\nThe default value is 0, meaning that the node can be drained without any time limitations.\nNOTE: NodeDrainTimeout is different from `kubectl drain --timeout`" type: "string" nodeVolumeDetachTimeout: - description: "NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." + description: "nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes\nto be detached. The default value is 0, meaning that the volumes can be detached without any time limitations." type: "string" providerID: - description: "ProviderID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." + description: "providerID is the identification ID of the machine provided by the provider.\nThis field must match the provider ID as seen on the node object corresponding to this machine.\nThis field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler\nwith cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out\nmachines at provider which could not get registered as Kubernetes nodes. With cluster-api as a\ngeneric out-of-tree provider for autoscaler, this field is required by autoscaler to be\nable to have a provider view of the list of machines. Another list of nodes is queried from the k8s apiserver\nand then a comparison is done to find out unregistered machines and are marked for delete.\nThis field will be set by the actuators and consumed by higher level entities like autoscaler that will\nbe interfacing with cluster-api as generic provider." type: "string" readinessGates: description: "readinessGates specifies additional conditions to include when evaluating Machine Ready condition.\n\nThis field can be used e.g. by Cluster API control plane providers to extend the semantic of the\nReady condition for the Machine they control, like the kubeadm control provider adding ReadinessGates\nfor the APIServerPodHealthy, SchedulerPodHealthy conditions, etc.\n\nAnother example are external controllers, e.g. responsible to install special software/hardware on the Machines;\nthey can include the status of those components with a new condition and add this condition to ReadinessGates.\n\nNOTE: this field is considered only for computing v1beta2 conditions." @@ -233,7 +233,7 @@ spec: - "conditionType" x-kubernetes-list-type: "map" version: - description: "Version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." + description: "version defines the desired Kubernetes version.\nThis field is meant to be optionally used by bootstrap providers." type: "string" required: - "bootstrap" @@ -253,7 +253,7 @@ spec: format: "int32" type: "integer" conditions: - description: "Conditions defines current service state of the MachineSet." + description: "conditions defines current service state of the MachineSet." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -268,13 +268,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -293,7 +293,7 @@ spec: format: "int32" type: "integer" observedGeneration: - description: "ObservedGeneration reflects the generation of the most recently observed MachineSet." + description: "observedGeneration reflects the generation of the most recently observed MachineSet." format: "int64" type: "integer" readyReplicas: @@ -301,11 +301,11 @@ spec: format: "int32" type: "integer" replicas: - description: "Replicas is the most recently observed number of replicas." + description: "replicas is the most recently observed number of replicas." format: "int32" type: "integer" selector: - description: "Selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" + description: "selector is the same as the label selector but in the string format to avoid introspection\nby clients. The string will be in the same format as the query-param syntax.\nMore info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors" type: "string" v1beta2: description: "v1beta2 groups all the fields that will be added or modified in MachineSet's status with the V1Beta2 version." diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml index 8c51e029b..ad4149e8f 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddressclaims.yaml @@ -45,7 +45,7 @@ spec: description: "IPAddressClaimSpec is the desired state of an IPAddressClaim." properties: poolRef: - description: "PoolRef is a reference to the pool from which an IP address should be created." + description: "poolRef is a reference to the pool from which an IP address should be created." properties: apiGroup: description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." @@ -68,7 +68,7 @@ spec: description: "IPAddressClaimStatus is the observed status of a IPAddressClaim." properties: addressRef: - description: "AddressRef is a reference to the address that was created for this claim." + description: "addressRef is a reference to the address that was created for this claim." properties: name: default: "" @@ -77,7 +77,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" conditions: - description: "Conditions summarises the current state of the IPAddressClaim" + description: "conditions summarises the current state of the IPAddressClaim" items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -92,13 +92,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml index 099d49ba8..575dbf593 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1alpha1/ipaddresses.yaml @@ -49,10 +49,10 @@ spec: description: "IPAddressSpec is the desired state of an IPAddress." properties: address: - description: "Address is the IP address." + description: "address is the IP address." type: "string" claimRef: - description: "ClaimRef is a reference to the claim this IPAddress was created for." + description: "claimRef is a reference to the claim this IPAddress was created for." properties: name: default: "" @@ -61,10 +61,10 @@ spec: type: "object" x-kubernetes-map-type: "atomic" gateway: - description: "Gateway is the network gateway of the network the address is from." + description: "gateway is the network gateway of the network the address is from." type: "string" poolRef: - description: "PoolRef is a reference to the pool that this IPAddress was created from." + description: "poolRef is a reference to the pool that this IPAddress was created from." properties: apiGroup: description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." @@ -81,7 +81,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" prefix: - description: "Prefix is the prefix of the address." + description: "prefix is the prefix of the address." type: "integer" required: - "address" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml index 3bed28591..877285a35 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddressclaims.yaml @@ -45,10 +45,10 @@ spec: description: "IPAddressClaimSpec is the desired state of an IPAddressClaim." properties: clusterName: - description: "ClusterName is the name of the Cluster this object belongs to." + description: "clusterName is the name of the Cluster this object belongs to." type: "string" poolRef: - description: "PoolRef is a reference to the pool from which an IP address should be created." + description: "poolRef is a reference to the pool from which an IP address should be created." properties: apiGroup: description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." @@ -71,7 +71,7 @@ spec: description: "IPAddressClaimStatus is the observed status of a IPAddressClaim." properties: addressRef: - description: "AddressRef is a reference to the address that was created for this claim." + description: "addressRef is a reference to the address that was created for this claim." properties: name: default: "" @@ -80,7 +80,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" conditions: - description: "Conditions summarises the current state of the IPAddressClaim" + description: "conditions summarises the current state of the IPAddressClaim" items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -95,13 +95,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml index 0a71bacc7..a71dcc21c 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/ipam.cluster.x-k8s.io/v1beta1/ipaddresses.yaml @@ -49,10 +49,10 @@ spec: description: "IPAddressSpec is the desired state of an IPAddress." properties: address: - description: "Address is the IP address." + description: "address is the IP address." type: "string" claimRef: - description: "ClaimRef is a reference to the claim this IPAddress was created for." + description: "claimRef is a reference to the claim this IPAddress was created for." properties: name: default: "" @@ -61,10 +61,10 @@ spec: type: "object" x-kubernetes-map-type: "atomic" gateway: - description: "Gateway is the network gateway of the network the address is from." + description: "gateway is the network gateway of the network the address is from." type: "string" poolRef: - description: "PoolRef is a reference to the pool that this IPAddress was created from." + description: "poolRef is a reference to the pool that this IPAddress was created from." properties: apiGroup: description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." @@ -81,7 +81,7 @@ spec: type: "object" x-kubernetes-map-type: "atomic" prefix: - description: "Prefix is the prefix of the address." + description: "prefix is the prefix of the address." type: "integer" required: - "address" diff --git a/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml b/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml index b10fd79f2..a61763426 100644 --- a/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml +++ b/crd-catalog/kubernetes-sigs/cluster-api/runtime.cluster.x-k8s.io/v1alpha1/extensionconfigs.yaml @@ -39,26 +39,26 @@ spec: description: "ExtensionConfigSpec is the desired state of the ExtensionConfig" properties: clientConfig: - description: "ClientConfig defines how to communicate with the Extension server." + description: "clientConfig defines how to communicate with the Extension server." properties: caBundle: - description: "CABundle is a PEM encoded CA bundle which will be used to validate the Extension server's server certificate." + description: "caBundle is a PEM encoded CA bundle which will be used to validate the Extension server's server certificate." format: "byte" type: "string" service: - description: "Service is a reference to the Kubernetes service for the Extension server.\nNote: Exactly one of `url` or `service` must be specified.\n\nIf the Extension server is running within a cluster, then you should use `service`." + description: "service is a reference to the Kubernetes service for the Extension server.\nNote: Exactly one of `url` or `service` must be specified.\n\nIf the Extension server is running within a cluster, then you should use `service`." properties: name: - description: "Name is the name of the service." + description: "name is the name of the service." type: "string" namespace: - description: "Namespace is the namespace of the service." + description: "namespace is the namespace of the service." type: "string" path: - description: "Path is an optional URL path and if present may be any string permissible in\na URL. If a path is set it will be used as prefix to the hook-specific path." + description: "path is an optional URL path and if present may be any string permissible in\na URL. If a path is set it will be used as prefix to the hook-specific path." type: "string" port: - description: "Port is the port on the service that's hosting the Extension server.\nDefaults to 443.\nPort should be a valid port number (1-65535, inclusive)." + description: "port is the port on the service that's hosting the Extension server.\nDefaults to 443.\nPort should be a valid port number (1-65535, inclusive)." format: "int32" type: "integer" required: @@ -66,11 +66,11 @@ spec: - "namespace" type: "object" url: - description: "URL gives the location of the Extension server, in standard URL form\n(`scheme://host:port/path`).\nNote: Exactly one of `url` or `service` must be specified.\n\nThe scheme must be \"https\".\n\nThe `host` should not refer to a service running in the cluster; use\nthe `service` field instead.\n\nA path is optional, and if present may be any string permissible in\na URL. If a path is set it will be used as prefix to the hook-specific path.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not\nallowed. Fragments (\"#...\") and query parameters (\"?...\") are not\nallowed either." + description: "url gives the location of the Extension server, in standard URL form\n(`scheme://host:port/path`).\nNote: Exactly one of `url` or `service` must be specified.\n\nThe scheme must be \"https\".\n\nThe `host` should not refer to a service running in the cluster; use\nthe `service` field instead.\n\nA path is optional, and if present may be any string permissible in\na URL. If a path is set it will be used as prefix to the hook-specific path.\n\nAttempting to use a user or basic auth e.g. \"user:password@\" is not\nallowed. Fragments (\"#...\") and query parameters (\"?...\") are not\nallowed either." type: "string" type: "object" namespaceSelector: - description: "NamespaceSelector decides whether to call the hook for an object based\non whether the namespace for that object matches the selector.\nDefaults to the empty LabelSelector, which matches all objects." + description: "namespaceSelector decides whether to call the hook for an object based\non whether the namespace for that object matches the selector.\nDefaults to the empty LabelSelector, which matches all objects." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." @@ -105,7 +105,7 @@ spec: settings: additionalProperties: type: "string" - description: "Settings defines key value pairs to be passed to all calls\nto all supported RuntimeExtensions.\nNote: Settings can be overridden on the ClusterClass." + description: "settings defines key value pairs to be passed to all calls\nto all supported RuntimeExtensions.\nNote: Settings can be overridden on the ClusterClass." type: "object" required: - "clientConfig" @@ -114,7 +114,7 @@ spec: description: "ExtensionConfigStatus is the current state of the ExtensionConfig" properties: conditions: - description: "Conditions define the current service state of the ExtensionConfig." + description: "conditions define the current service state of the ExtensionConfig." items: description: "Condition defines an observation of a Cluster API resource operational state." properties: @@ -129,13 +129,13 @@ spec: description: "The reason for the condition's last transition in CamelCase.\nThe specific API may choose whether or not this field is considered a guaranteed API.\nThis field may be empty." type: "string" severity: - description: "Severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." + description: "severity provides an explicit classification of Reason code, so the users or machines can immediately\nunderstand the current situation and act accordingly.\nThe Severity field MUST be set only when Status=False." type: "string" status: - description: "Status of the condition, one of True, False, Unknown." + description: "status of the condition, one of True, False, Unknown." type: "string" type: - description: "Type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." + description: "type of condition in CamelCase or in foo.example.com/CamelCase.\nMany .condition.type values are consistent across resources like Available, but because arbitrary conditions\ncan be useful (see .node.status.conditions), the ability to deconflict is important." type: "string" required: - "lastTransitionTime" @@ -144,31 +144,31 @@ spec: type: "object" type: "array" handlers: - description: "Handlers defines the current ExtensionHandlers supported by an Extension." + description: "handlers defines the current ExtensionHandlers supported by an Extension." items: description: "ExtensionHandler specifies the details of a handler for a particular runtime hook registered by an Extension server." properties: failurePolicy: - description: "FailurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client.\nDefaults to Fail if not set." + description: "failurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client.\nDefaults to Fail if not set." type: "string" name: - description: "Name is the unique name of the ExtensionHandler." + description: "name is the unique name of the ExtensionHandler." type: "string" requestHook: - description: "RequestHook defines the versioned runtime hook which this ExtensionHandler serves." + description: "requestHook defines the versioned runtime hook which this ExtensionHandler serves." properties: apiVersion: - description: "APIVersion is the group and version of the Hook." + description: "apiVersion is the group and version of the Hook." type: "string" hook: - description: "Hook is the name of the hook." + description: "hook is the name of the hook." type: "string" required: - "apiVersion" - "hook" type: "object" timeoutSeconds: - description: "TimeoutSeconds defines the timeout duration for client calls to the ExtensionHandler.\nDefaults to 10 is not set." + description: "timeoutSeconds defines the timeout duration for client calls to the ExtensionHandler.\nDefaults to 10 is not set." format: "int32" type: "integer" required: diff --git a/crd-catalog/kubernetes-sigs/kueue/kueue.x-k8s.io/v1beta1/provisioningrequestconfigs.yaml b/crd-catalog/kubernetes-sigs/kueue/kueue.x-k8s.io/v1beta1/provisioningrequestconfigs.yaml index f45a8c161..cc6d9d70a 100644 --- a/crd-catalog/kubernetes-sigs/kueue/kueue.x-k8s.io/v1beta1/provisioningrequestconfigs.yaml +++ b/crd-catalog/kubernetes-sigs/kueue/kueue.x-k8s.io/v1beta1/provisioningrequestconfigs.yaml @@ -50,6 +50,29 @@ spec: maxLength: 253 pattern: "^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$" type: "string" + retryStrategy: + default: + backoffBaseSeconds: 60 + backoffLimitCount: 3 + backoffMaxSeconds: 1800 + description: "retryStrategy defines strategy for retrying ProvisioningRequest.\nIf null, then the default configuration is applied with the following parameter values:\nbackoffLimitCount: 3\nbackoffBaseSeconds: 60 - 1 min\nbackoffMaxSeconds: 1800 - 30 mins\n\nTo switch off retry mechanism\nset retryStrategy.backoffLimitCount to 0." + properties: + backoffBaseSeconds: + default: 60 + description: "BackoffBaseSeconds defines the base for the exponential backoff for\nre-queuing an evicted workload.\n\nDefaults to 60." + format: "int32" + type: "integer" + backoffLimitCount: + default: 3 + description: "BackoffLimitCount defines the maximum number of re-queuing retries.\nOnce the number is reached, the workload is deactivated (`.spec.activate`=`false`).\n\nEvery backoff duration is about \"b*2^(n-1)+Rand\" where:\n- \"b\" represents the base set by \"BackoffBaseSeconds\" parameter,\n- \"n\" represents the \"workloadStatus.requeueState.count\",\n- \"Rand\" represents the random jitter.\nDuring this time, the workload is taken as an inadmissible and\nother workloads will have a chance to be admitted.\nBy default, the consecutive requeue delays are around: (60s, 120s, 240s, ...).\n\nDefaults to 3." + format: "int32" + type: "integer" + backoffMaxSeconds: + default: 1800 + description: "BackoffMaxSeconds defines the maximum backoff time to re-queue an evicted workload.\n\nDefaults to 1800." + format: "int32" + type: "integer" + type: "object" required: - "provisioningClassName" type: "object" diff --git a/crd-catalog/mattermost/mattermost-operator/installation.mattermost.com/v1beta1/mattermosts.yaml b/crd-catalog/mattermost/mattermost-operator/installation.mattermost.com/v1beta1/mattermosts.yaml index 2f4234221..fc3284c74 100644 --- a/crd-catalog/mattermost/mattermost-operator/installation.mattermost.com/v1beta1/mattermosts.yaml +++ b/crd-catalog/mattermost/mattermost-operator/installation.mattermost.com/v1beta1/mattermosts.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.7.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "mattermosts.installation.mattermost.com" spec: group: "installation.mattermost.com" @@ -38,10 +38,10 @@ spec: description: "Mattermost is the Schema for the mattermosts 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -81,13 +81,13 @@ spec: description: "External Services" properties: disableReadinessCheck: - description: "DisableReadinessCheck instructs Operator to not add init container responsible for checking DB access. Can be used to define custom init containers specified in `spec.PodExtensions.InitContainers`." + description: "DisableReadinessCheck instructs Operator to not add init container responsible for checking DB access.\nCan be used to define custom init containers specified in `spec.PodExtensions.InitContainers`." type: "boolean" external: description: "Defines the configuration of and external database." properties: secret: - description: "Secret contains data necessary to connect to the external database. The Kubernetes Secret should contain: - Key: DB_CONNECTION_STRING | Value: Full database connection string. It can also contain optional fields, such as: - Key: MM_SQLSETTINGS_DATASOURCEREPLICAS | Value: Connection string to read replicas of the database. - Key: DB_CONNECTION_CHECK_URL | Value: The URL used for checking that the database is accessible. Omitting this value in the secret will cause Operator to skip adding init container for database check." + description: "Secret contains data necessary to connect to the external database.\nThe Kubernetes Secret should contain:\n - Key: DB_CONNECTION_STRING | Value: Full database connection string.\nIt can also contain optional fields, such as:\n - Key: MM_SQLSETTINGS_DATASOURCEREPLICAS | Value: Connection string to read replicas of the database.\n - Key: DB_CONNECTION_CHECK_URL | Value: The URL used for checking that the database is accessible.\n Omitting this value in the secret will cause Operator to skip adding init container for database check." type: "string" type: "object" operatorManaged: @@ -109,22 +109,25 @@ spec: description: "Defines the object storage url for uploading backups." type: "string" initBucketURL: - description: "Defines the AWS S3 bucket where the Database Backup is stored. The operator will download the file to restore the data." + description: "Defines the AWS S3 bucket where the Database Backup is stored.\nThe operator will download the file to restore the data." type: "string" replicas: - description: "Defines the number of database replicas. For redundancy use at least 2 replicas. Setting this will override the number of replicas set by 'Size'." + description: "Defines the number of database replicas.\nFor redundancy use at least 2 replicas.\nSetting this will override the number of replicas set by 'Size'." format: "int32" type: "integer" resources: description: "Defines the resource requests and limits for the database pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -140,7 +143,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -149,7 +152,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" storageSize: @@ -176,12 +179,13 @@ spec: description: "Custom DNS configuration to use for the Mattermost Installation pods." properties: nameservers: - description: "A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed." + description: "A list of DNS name server IP addresses.\nThis will be appended to the base nameservers generated from DNSPolicy.\nDuplicated nameservers will be removed." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" options: - description: "A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy." + description: "A list of DNS resolver options.\nThis will be merged with the base options generated from DNSPolicy.\nDuplicated entries will be removed. Resolution options given in Options\nwill override those that appear in the base DNSPolicy." items: description: "PodDNSConfigOption defines DNS resolver options of a pod." properties: @@ -192,11 +196,13 @@ spec: type: "string" type: "object" type: "array" + x-kubernetes-list-type: "atomic" searches: - description: "A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed." + description: "A list of DNS search domains for host-name lookup.\nThis will be appended to the base search paths generated from DNSPolicy.\nDuplicated search paths will be removed." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" dnsPolicy: description: "Custom DNS policy to use for the Mattermost Installation pods." @@ -221,7 +227,7 @@ spec: description: "Set to the bucket name of your external MinIO or S3." type: "string" secret: - description: "Optionally enter the name of already existing secret. Secret should have two values: \"accesskey\" and \"secretkey\"." + description: "Optionally enter the name of already existing secret.\nSecret should have two values: \"accesskey\" and \"secretkey\"." type: "string" url: description: "Set to use an external MinIO deployment or S3." @@ -254,19 +260,22 @@ spec: description: "Defines the configuration of file store managed by Kubernetes operator." properties: replicas: - description: "Defines the number of Minio replicas. Supply 1 to run Minio in standalone mode with no redundancy. Supply 4 or more to run Minio in distributed mode. Note that it is not possible to upgrade Minio from standalone to distributed mode. Setting this will override the number of replicas set by 'Size'. More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html" + description: "Defines the number of Minio replicas.\nSupply 1 to run Minio in standalone mode with no redundancy.\nSupply 4 or more to run Minio in distributed mode.\nNote that it is not possible to upgrade Minio from standalone to distributed mode.\nSetting this will override the number of replicas set by 'Size'.\nMore info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html" format: "int32" type: "integer" resources: description: "Defines the resource requests and limits for the Minio pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -282,7 +291,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -291,7 +300,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" storageSize: @@ -309,12 +318,14 @@ spec: imagePullSecrets: description: "Specify Mattermost image pull secrets." items: - description: "LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace." + description: "LocalObjectReference contains enough information to let you locate the\nreferenced object inside the same namespace." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" type: "array" ingress: description: "Ingress defines configuration for Ingress resource created by the Operator." @@ -325,7 +336,7 @@ spec: description: "Annotations defines annotations passed to the Ingress associated with Mattermost." type: "object" enabled: - description: "Enabled determines whether the Operator should create Ingress resource or not. Disabling ingress on existing installation will cause Operator to remove it." + description: "Enabled determines whether the Operator should create Ingress resource or not.\nDisabling ingress on existing installation will cause Operator to remove it." type: "boolean" host: description: "Host defines the Ingress host to be used when creating the ingress rules." @@ -343,7 +354,7 @@ spec: description: "IngressClass will be set on Ingress resource to associate it with specified IngressClass resource." type: "string" tlsSecret: - description: "TLSSecret specifies secret used for configuring TLS for Ingress. If empty TLS will not be configured." + description: "TLSSecret specifies secret used for configuring TLS for Ingress.\nIf empty TLS will not be configured." type: "string" required: - "enabled" @@ -351,10 +362,10 @@ spec: ingressAnnotations: additionalProperties: type: "string" - description: "IngressAnnotations defines annotations passed to the Ingress associated with Mattermost. Deprecated: Use Spec.Ingress.Annotations." + description: "IngressAnnotations defines annotations passed to the Ingress associated with Mattermost.\nDeprecated: Use Spec.Ingress.Annotations." type: "object" ingressName: - description: "IngressName defines the host to be used when creating the ingress rules. Deprecated: Use Spec.Ingress.Host instead." + description: "IngressName defines the host to be used when creating the ingress rules.\nDeprecated: Use Spec.Ingress.Host instead." type: "string" licenseSecret: description: "LicenseSecret is the name of the secret containing a Mattermost license." @@ -368,7 +379,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -380,7 +391,8 @@ spec: description: "The key to select." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -388,8 +400,9 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -400,8 +413,9 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -419,6 +433,7 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" secretKeyRef: description: "Selects a key of a secret in the pod's namespace" properties: @@ -426,7 +441,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -434,58 +450,61 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" type: "object" required: - "name" type: "object" type: "array" podExtensions: - description: "PodExtensions specify custom extensions for Mattermost pods. This can be used for custom readiness checks etc. These settings generally don't need to be changed." + description: "PodExtensions specify custom extensions for Mattermost pods.\nThis can be used for custom readiness checks etc.\nThese settings generally don't need to be changed." properties: containerPorts: - description: "Additional Container Ports injected into pod's main container. The setting does not override ContainerPorts defined by the Operator." + description: "Additional Container Ports injected into pod's main container.\nThe setting does not override ContainerPorts defined by the Operator." items: description: "ContainerPort represents a network port in a single container." properties: containerPort: - description: "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536." + description: "Number of port to expose on the pod's IP address.\nThis must be a valid port number, 0 < x < 65536." format: "int32" type: "integer" hostIP: description: "What host IP to bind the external port to." type: "string" hostPort: - description: "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." + description: "Number of port to expose on the host.\nIf specified, this must be a valid port number, 0 < x < 65536.\nIf HostNetwork is specified, this must match ContainerPort.\nMost containers do not need this." format: "int32" type: "integer" name: - description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." + description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\nnamed port in a pod must have a unique name. Name for the port that can be\nreferred to by services." type: "string" protocol: default: "TCP" - description: "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\"." + description: "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\"." type: "string" required: - "containerPort" type: "object" type: "array" initContainers: - description: "Additional InitContainers injected into pods. The setting does not override InitContainers defined by the Operator." + description: "Additional InitContainers injected into pods.\nThe setting does not override InitContainers defined by the Operator." items: description: "A single application container that you want to run within a pod." properties: args: - description: "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" + description: "Arguments to the entrypoint.\nThe container image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: - description: "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" + description: "Entrypoint array. Not executed within a shell.\nThe container image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: - description: "List of environment variables to set in the container. Cannot be updated." + description: "List of environment variables to set in the container.\nCannot be updated." items: description: "EnvVar represents an environment variable present in a Container." properties: @@ -493,7 +512,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -505,7 +524,8 @@ spec: description: "The key to select." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -513,8 +533,9 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -525,8 +546,9 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -544,6 +566,7 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" secretKeyRef: description: "Selects a key of a secret in the pod's namespace" properties: @@ -551,7 +574,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -559,13 +583,17 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" type: "object" required: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: - description: "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." + description: "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key exists in multiple\nsources, the value associated with the last source will take precedence.\nValues defined by an Env with a duplicate key will take precedence.\nCannot be updated." items: description: "EnvFromSource represents the source of a set of ConfigMaps" properties: @@ -573,12 +601,14 @@ spec: description: "The ConfigMap to select from" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" prefix: description: "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." type: "string" @@ -586,40 +616,44 @@ spec: description: "The Secret to select from" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: - description: "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets." + description: "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." type: "string" imagePullPolicy: - description: "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images" + description: "Image pull policy.\nOne of Always, Never, IfNotPresent.\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images" type: "string" lifecycle: - description: "Actions that the management system should take in response to container lifecycle events. Cannot be updated." + description: "Actions that the management system should take in response to container lifecycle events.\nCannot be updated." properties: postStart: - description: "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + description: "PostStart is called immediately after a container is created. If the handler fails,\nthe container is terminated and restarted according to its restart policy.\nOther management of the container blocks until the hook completes.\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -627,7 +661,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -637,6 +671,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -644,16 +679,26 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" + sleep: + description: "Sleep represents the duration that the container should sleep before being terminated." + properties: + seconds: + description: "Seconds is the number of seconds to sleep." + format: "int64" + type: "integer" + required: + - "seconds" + type: "object" tcpSocket: - description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified." + description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\nfor the backward compatibility. There are no validation of this field and\nlifecycle hooks will fail in runtime when tcp handler is specified." properties: host: description: "Optional: Host name to connect to, defaults to the pod IP." @@ -662,29 +707,30 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" type: "object" preStop: - description: "PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + description: "PreStop is called immediately before a container is terminated due to an\nAPI request or management event such as liveness/startup probe failure,\npreemption, resource contention, etc. The handler is not called if the\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\nPreStop hook is executed. Regardless of the outcome of the handler, the\ncontainer will eventually terminate within the Pod's termination grace\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\nor until the termination grace period is reached.\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -692,7 +738,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -702,6 +748,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -709,16 +756,26 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" + sleep: + description: "Sleep represents the duration that the container should sleep before being terminated." + properties: + seconds: + description: "Seconds is the number of seconds to sleep." + format: "int64" + type: "integer" + required: + - "seconds" + type: "object" tcpSocket: - description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified." + description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\nfor the backward compatibility. There are no validation of this field and\nlifecycle hooks will fail in runtime when tcp handler is specified." properties: host: description: "Optional: Host name to connect to, defaults to the pod IP." @@ -727,7 +784,7 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" @@ -735,30 +792,32 @@ spec: type: "object" type: "object" livenessProbe: - description: "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Periodic probe of container liveness.\nContainer will be restarted if the probe fails.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -767,7 +826,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -775,7 +834,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -785,6 +844,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -792,24 +852,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -822,45 +882,45 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" name: - description: "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." + description: "Name of the container specified as a DNS_LABEL.\nEach container in a pod must have a unique name (DNS_LABEL).\nCannot be updated." type: "string" ports: - description: "List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated." + description: "List of ports to expose from the container. Not specifying a port here\nDOES NOT prevent that port from being exposed. Any port which is\nlistening on the default \"0.0.0.0\" address inside a container will be\naccessible from the network.\nModifying this array with strategic merge patch may corrupt the data.\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\nCannot be updated." items: description: "ContainerPort represents a network port in a single container." properties: containerPort: - description: "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536." + description: "Number of port to expose on the pod's IP address.\nThis must be a valid port number, 0 < x < 65536." format: "int32" type: "integer" hostIP: description: "What host IP to bind the external port to." type: "string" hostPort: - description: "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." + description: "Number of port to expose on the host.\nIf specified, this must be a valid port number, 0 < x < 65536.\nIf HostNetwork is specified, this must match ContainerPort.\nMost containers do not need this." format: "int32" type: "integer" name: - description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." + description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\nnamed port in a pod must have a unique name. Name for the port that can be\nreferred to by services." type: "string" protocol: default: "TCP" - description: "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\"." + description: "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\"." type: "string" required: - "containerPort" @@ -871,30 +931,32 @@ spec: - "protocol" x-kubernetes-list-type: "map" readinessProbe: - description: "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Periodic probe of container service readiness.\nContainer will be removed from service endpoints if the probe fails.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -903,7 +965,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -911,7 +973,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -921,6 +983,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -928,24 +991,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -958,30 +1021,50 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" + resizePolicy: + description: "Resources resize policy for the container." + items: + description: "ContainerResizePolicy represents resource resize policy for the container." + properties: + resourceName: + description: "Name of the resource to which this resource resize policy applies.\nSupported values: cpu, memory." + type: "string" + restartPolicy: + description: "Restart policy to apply when specified resource is resized.\nIf not specified, it defaults to NotRequired." + type: "string" + required: + - "resourceName" + - "restartPolicy" + type: "object" + type: "array" + x-kubernetes-list-type: "atomic" resources: - description: "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Compute Resources required by this container.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -997,7 +1080,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -1006,17 +1089,32 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" + restartPolicy: + description: "RestartPolicy defines the restart behavior of individual containers in a pod.\nThis field may only be set for init containers, and the only allowed value is \"Always\".\nFor non-init containers or when this field is not specified,\nthe restart behavior is defined by the Pod's restart policy and the container type.\nSetting the RestartPolicy as \"Always\" for the init container will have the following effect:\nthis init container will be continually restarted on\nexit until all regular containers have terminated. Once all regular\ncontainers have completed, all init containers with restartPolicy \"Always\"\nwill be shut down. This lifecycle differs from normal init containers and\nis often referred to as a \"sidecar\" container. Although this init\ncontainer still starts in the init container sequence, it does not wait\nfor the container to complete before proceeding to the next init\ncontainer. Instead, the next init container starts immediately after this\ninit container is started, or after any startupProbe has successfully\ncompleted." + type: "string" securityContext: - description: "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" + description: "SecurityContext defines the security options the container should be run with.\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" properties: allowPrivilegeEscalation: - description: "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows." + description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: - description: "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows." + description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: add: description: "Added capabilities" @@ -1024,35 +1122,37 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: - description: "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows." + description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: - description: "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows." + description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" runAsGroup: - description: "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" runAsNonRoot: - description: "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "Indicates that the container must run as a non-root user.\nIf true, the Kubelet will validate the image at runtime to ensure that it\ndoes not run as UID 0 (root) and fail to start the container if it does.\nIf unset or false, no such validation will be performed.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "boolean" runAsUser: - description: "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" seLinuxOptions: - description: "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The SELinux context to be applied to the container.\nIf unspecified, the container runtime will allocate a random SELinux context for each\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." properties: level: description: "Level is SELinux level label that applies to the container." @@ -1068,59 +1168,61 @@ spec: type: "string" type: "object" seccompProfile: - description: "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows." + description: "The seccomp options to use by this container. If seccomp options are\nprovided at both the pod & container level, the container options\noverride the pod options.\nNote that this field cannot be set when spec.os.name is windows." properties: localhostProfile: - description: "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\"." + description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" type: "object" windowsOptions: - description: "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." + description: "The Windows specific settings applied to all containers.\nIf unspecified, the options from the PodSecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux." properties: gmsaCredentialSpec: - description: "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field." + description: "GMSACredentialSpec is where the GMSA admission webhook\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\nGMSA credential spec named by the GMSACredentialSpecName field." type: "string" gmsaCredentialSpecName: description: "GMSACredentialSpecName is the name of the GMSA credential spec to use." type: "string" hostProcess: - description: "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true." + description: "HostProcess determines if a container should be run as a 'Host Process' container.\nAll of a Pod's containers must have the same effective HostProcess value\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\nIn addition, if HostProcess is true then HostNetwork must also be set to true." type: "boolean" runAsUserName: - description: "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "The UserName in Windows to run the entrypoint of the container process.\nDefaults to the user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "string" type: "object" type: "object" startupProbe: - description: "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "StartupProbe indicates that the Pod has successfully initialized.\nIf specified, no other probes are executed until this completes successfully.\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\nThis cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1129,7 +1231,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1137,7 +1239,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1147,6 +1249,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1154,24 +1257,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -1184,34 +1287,34 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" stdin: - description: "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." + description: "Whether this container should allocate a buffer for stdin in the container runtime. If this\nis not set, reads from stdin in the container will always result in EOF.\nDefault is false." type: "boolean" stdinOnce: - description: "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" + description: "Whether the container runtime should close the stdin channel after it has been opened by\na single attach. When stdin is true the stdin stream will remain open across multiple attach\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\nat which time stdin is closed and remains closed until the container is restarted. If this\nflag is false, a container processes that reads from stdin will never receive an EOF.\nDefault is false" type: "boolean" terminationMessagePath: - description: "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." + description: "Optional: Path at which the file to which the container's termination message\nwill be written is mounted into the container's filesystem.\nMessage written is intended to be brief final status, such as an assertion failure message.\nWill be truncated by the node if greater than 4096 bytes. The total message length across\nall containers will be limited to 12kb.\nDefaults to /dev/termination-log.\nCannot be updated." type: "string" terminationMessagePolicy: - description: "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." + description: "Indicate how the termination message should be populated. File will use the contents of\nterminationMessagePath to populate the container status message on both success and failure.\nFallbackToLogsOnError will use the last chunk of container log output if the termination\nmessage file is empty and the container exited with an error.\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\nDefaults to File.\nCannot be updated." type: "string" tty: - description: "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." + description: "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\nDefault is false." type: "boolean" volumeDevices: description: "volumeDevices is the list of block devices to be used by the container." @@ -1229,58 +1332,69 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: - description: "Pod volumes to mount into the container's filesystem. Cannot be updated." + description: "Pod volumes to mount into the container's filesystem.\nCannot be updated." items: description: "VolumeMount describes a mounting of a Volume within a container." properties: mountPath: - description: "Path within the container at which the volume should be mounted. Must not contain ':'." + description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." type: "string" readOnly: - description: "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." + description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: - description: "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." + description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" subPathExpr: - description: "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive." + description: "Expanded path within the volume from which the container's volume should be mounted.\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\nDefaults to \"\" (volume's root).\nSubPathExpr and SubPath are mutually exclusive." type: "string" required: - "mountPath" - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: - description: "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." + description: "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated." type: "string" required: - "name" type: "object" type: "array" sidecarContainers: - description: "Additional sidecar containers injected into pods. The setting does not override any sidecar containers defined by the Operator. Note that sidecars are injected as standard pod containers alongside the Mattermost application server. In the future, this may be migrated to use the currently-feature-gated init container method introduced in k8s v1.28: https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/" + description: "Additional sidecar containers injected into pods.\nThe setting does not override any sidecar containers defined by the Operator.\nNote that sidecars are injected as standard pod containers alongside the\nMattermost application server. In the future, this may be migrated to\nuse the currently-feature-gated init container method introduced in k8s v1.28:\nhttps://kubernetes.io/blog/2023/08/25/native-sidecar-containers/" items: description: "A single application container that you want to run within a pod." properties: args: - description: "Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" + description: "Arguments to the entrypoint.\nThe container image's CMD is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" command: - description: "Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" + description: "Entrypoint array. Not executed within a shell.\nThe container image's ENTRYPOINT is used if this is not provided.\nVariable references $(VAR_NAME) are expanded using the container's environment. If a variable\ncannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will\nproduce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless\nof whether the variable exists or not. Cannot be updated.\nMore info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" env: - description: "List of environment variables to set in the container. Cannot be updated." + description: "List of environment variables to set in the container.\nCannot be updated." items: description: "EnvVar represents an environment variable present in a Container." properties: @@ -1288,7 +1402,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -1300,7 +1414,8 @@ spec: description: "The key to select." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -1308,8 +1423,9 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -1320,8 +1436,9 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -1339,6 +1456,7 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" secretKeyRef: description: "Selects a key of a secret in the pod's namespace" properties: @@ -1346,7 +1464,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -1354,13 +1473,17 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" type: "object" required: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "name" + x-kubernetes-list-type: "map" envFrom: - description: "List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated." + description: "List of sources to populate environment variables in the container.\nThe keys defined within a source must be a C_IDENTIFIER. All invalid keys\nwill be reported as an event when the container is starting. When a key exists in multiple\nsources, the value associated with the last source will take precedence.\nValues defined by an Env with a duplicate key will take precedence.\nCannot be updated." items: description: "EnvFromSource represents the source of a set of ConfigMaps" properties: @@ -1368,12 +1491,14 @@ spec: description: "The ConfigMap to select from" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" prefix: description: "An optional identifier to prepend to each key in the ConfigMap. Must be a C_IDENTIFIER." type: "string" @@ -1381,40 +1506,44 @@ spec: description: "The Secret to select from" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" type: "object" type: "array" + x-kubernetes-list-type: "atomic" image: - description: "Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets." + description: "Container image name.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." type: "string" imagePullPolicy: - description: "Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images" + description: "Image pull policy.\nOne of Always, Never, IfNotPresent.\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/containers/images#updating-images" type: "string" lifecycle: - description: "Actions that the management system should take in response to container lifecycle events. Cannot be updated." + description: "Actions that the management system should take in response to container lifecycle events.\nCannot be updated." properties: postStart: - description: "PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + description: "PostStart is called immediately after a container is created. If the handler fails,\nthe container is terminated and restarted according to its restart policy.\nOther management of the container blocks until the hook completes.\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1422,7 +1551,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1432,6 +1561,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1439,16 +1569,26 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" + sleep: + description: "Sleep represents the duration that the container should sleep before being terminated." + properties: + seconds: + description: "Seconds is the number of seconds to sleep." + format: "int64" + type: "integer" + required: + - "seconds" + type: "object" tcpSocket: - description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified." + description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\nfor the backward compatibility. There are no validation of this field and\nlifecycle hooks will fail in runtime when tcp handler is specified." properties: host: description: "Optional: Host name to connect to, defaults to the pod IP." @@ -1457,29 +1597,30 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" type: "object" preStop: - description: "PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" + description: "PreStop is called immediately before a container is terminated due to an\nAPI request or management event such as liveness/startup probe failure,\npreemption, resource contention, etc. The handler is not called if the\ncontainer crashes or exits. The Pod's termination grace period countdown begins before the\nPreStop hook is executed. Regardless of the outcome of the handler, the\ncontainer will eventually terminate within the Pod's termination grace\nperiod (unless delayed by finalizers). Other management of the container blocks until the hook completes\nor until the termination grace period is reached.\nMore info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" httpGet: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1487,7 +1628,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1497,6 +1638,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1504,16 +1646,26 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" + sleep: + description: "Sleep represents the duration that the container should sleep before being terminated." + properties: + seconds: + description: "Seconds is the number of seconds to sleep." + format: "int64" + type: "integer" + required: + - "seconds" + type: "object" tcpSocket: - description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified." + description: "Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept\nfor the backward compatibility. There are no validation of this field and\nlifecycle hooks will fail in runtime when tcp handler is specified." properties: host: description: "Optional: Host name to connect to, defaults to the pod IP." @@ -1522,7 +1674,7 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" @@ -1530,30 +1682,32 @@ spec: type: "object" type: "object" livenessProbe: - description: "Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Periodic probe of container liveness.\nContainer will be restarted if the probe fails.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1562,7 +1716,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1570,7 +1724,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1580,6 +1734,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1587,24 +1742,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -1617,45 +1772,45 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" name: - description: "Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated." + description: "Name of the container specified as a DNS_LABEL.\nEach container in a pod must have a unique name (DNS_LABEL).\nCannot be updated." type: "string" ports: - description: "List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default \"0.0.0.0\" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated." + description: "List of ports to expose from the container. Not specifying a port here\nDOES NOT prevent that port from being exposed. Any port which is\nlistening on the default \"0.0.0.0\" address inside a container will be\naccessible from the network.\nModifying this array with strategic merge patch may corrupt the data.\nFor more information See https://github.com/kubernetes/kubernetes/issues/108255.\nCannot be updated." items: description: "ContainerPort represents a network port in a single container." properties: containerPort: - description: "Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536." + description: "Number of port to expose on the pod's IP address.\nThis must be a valid port number, 0 < x < 65536." format: "int32" type: "integer" hostIP: description: "What host IP to bind the external port to." type: "string" hostPort: - description: "Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this." + description: "Number of port to expose on the host.\nIf specified, this must be a valid port number, 0 < x < 65536.\nIf HostNetwork is specified, this must match ContainerPort.\nMost containers do not need this." format: "int32" type: "integer" name: - description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services." + description: "If specified, this must be an IANA_SVC_NAME and unique within the pod. Each\nnamed port in a pod must have a unique name. Name for the port that can be\nreferred to by services." type: "string" protocol: default: "TCP" - description: "Protocol for port. Must be UDP, TCP, or SCTP. Defaults to \"TCP\"." + description: "Protocol for port. Must be UDP, TCP, or SCTP.\nDefaults to \"TCP\"." type: "string" required: - "containerPort" @@ -1666,30 +1821,32 @@ spec: - "protocol" x-kubernetes-list-type: "map" readinessProbe: - description: "Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Periodic probe of container service readiness.\nContainer will be removed from service endpoints if the probe fails.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1698,7 +1855,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1706,7 +1863,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1716,6 +1873,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1723,24 +1881,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -1753,30 +1911,50 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" + resizePolicy: + description: "Resources resize policy for the container." + items: + description: "ContainerResizePolicy represents resource resize policy for the container." + properties: + resourceName: + description: "Name of the resource to which this resource resize policy applies.\nSupported values: cpu, memory." + type: "string" + restartPolicy: + description: "Restart policy to apply when specified resource is resized.\nIf not specified, it defaults to NotRequired." + type: "string" + required: + - "resourceName" + - "restartPolicy" + type: "object" + type: "array" + x-kubernetes-list-type: "atomic" resources: - description: "Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Compute Resources required by this container.\nCannot be updated.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -1792,7 +1970,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -1801,17 +1979,32 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" + restartPolicy: + description: "RestartPolicy defines the restart behavior of individual containers in a pod.\nThis field may only be set for init containers, and the only allowed value is \"Always\".\nFor non-init containers or when this field is not specified,\nthe restart behavior is defined by the Pod's restart policy and the container type.\nSetting the RestartPolicy as \"Always\" for the init container will have the following effect:\nthis init container will be continually restarted on\nexit until all regular containers have terminated. Once all regular\ncontainers have completed, all init containers with restartPolicy \"Always\"\nwill be shut down. This lifecycle differs from normal init containers and\nis often referred to as a \"sidecar\" container. Although this init\ncontainer still starts in the init container sequence, it does not wait\nfor the container to complete before proceeding to the next init\ncontainer. Instead, the next init container starts immediately after this\ninit container is started, or after any startupProbe has successfully\ncompleted." + type: "string" securityContext: - description: "SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" + description: "SecurityContext defines the security options the container should be run with.\nIf set, the fields of SecurityContext override the equivalent fields of PodSecurityContext.\nMore info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/" properties: allowPrivilegeEscalation: - description: "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows." + description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: - description: "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows." + description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: add: description: "Added capabilities" @@ -1819,35 +2012,37 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: - description: "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows." + description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: - description: "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows." + description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" runAsGroup: - description: "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" runAsNonRoot: - description: "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "Indicates that the container must run as a non-root user.\nIf true, the Kubelet will validate the image at runtime to ensure that it\ndoes not run as UID 0 (root) and fail to start the container if it does.\nIf unset or false, no such validation will be performed.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "boolean" runAsUser: - description: "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" seLinuxOptions: - description: "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The SELinux context to be applied to the container.\nIf unspecified, the container runtime will allocate a random SELinux context for each\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." properties: level: description: "Level is SELinux level label that applies to the container." @@ -1863,59 +2058,61 @@ spec: type: "string" type: "object" seccompProfile: - description: "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows." + description: "The seccomp options to use by this container. If seccomp options are\nprovided at both the pod & container level, the container options\noverride the pod options.\nNote that this field cannot be set when spec.os.name is windows." properties: localhostProfile: - description: "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\"." + description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" type: "object" windowsOptions: - description: "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." + description: "The Windows specific settings applied to all containers.\nIf unspecified, the options from the PodSecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux." properties: gmsaCredentialSpec: - description: "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field." + description: "GMSACredentialSpec is where the GMSA admission webhook\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\nGMSA credential spec named by the GMSACredentialSpecName field." type: "string" gmsaCredentialSpecName: description: "GMSACredentialSpecName is the name of the GMSA credential spec to use." type: "string" hostProcess: - description: "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true." + description: "HostProcess determines if a container should be run as a 'Host Process' container.\nAll of a Pod's containers must have the same effective HostProcess value\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\nIn addition, if HostProcess is true then HostNetwork must also be set to true." type: "boolean" runAsUserName: - description: "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "The UserName in Windows to run the entrypoint of the container process.\nDefaults to the user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "string" type: "object" type: "object" startupProbe: - description: "StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "StartupProbe indicates that the Pod has successfully initialized.\nIf specified, no other probes are executed until this completes successfully.\nIf this probe fails, the Pod will be restarted, just as if the livenessProbe failed.\nThis can be used to provide different probe parameters at the beginning of a Pod's lifecycle,\nwhen it might take a long time to load data or warm a cache, than during steady-state operation.\nThis cannot be updated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" properties: exec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -1924,7 +2121,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -1932,7 +2129,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -1942,6 +2139,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -1949,24 +2147,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -1979,34 +2177,34 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" stdin: - description: "Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false." + description: "Whether this container should allocate a buffer for stdin in the container runtime. If this\nis not set, reads from stdin in the container will always result in EOF.\nDefault is false." type: "boolean" stdinOnce: - description: "Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false" + description: "Whether the container runtime should close the stdin channel after it has been opened by\na single attach. When stdin is true the stdin stream will remain open across multiple attach\nsessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the\nfirst client attaches to stdin, and then remains open and accepts data until the client disconnects,\nat which time stdin is closed and remains closed until the container is restarted. If this\nflag is false, a container processes that reads from stdin will never receive an EOF.\nDefault is false" type: "boolean" terminationMessagePath: - description: "Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated." + description: "Optional: Path at which the file to which the container's termination message\nwill be written is mounted into the container's filesystem.\nMessage written is intended to be brief final status, such as an assertion failure message.\nWill be truncated by the node if greater than 4096 bytes. The total message length across\nall containers will be limited to 12kb.\nDefaults to /dev/termination-log.\nCannot be updated." type: "string" terminationMessagePolicy: - description: "Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated." + description: "Indicate how the termination message should be populated. File will use the contents of\nterminationMessagePath to populate the container status message on both success and failure.\nFallbackToLogsOnError will use the last chunk of container log output if the termination\nmessage file is empty and the container exited with an error.\nThe log output is limited to 2048 bytes or 80 lines, whichever is smaller.\nDefaults to File.\nCannot be updated." type: "string" tty: - description: "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false." + description: "Whether this container should allocate a TTY for itself, also requires 'stdin' to be true.\nDefault is false." type: "boolean" volumeDevices: description: "volumeDevices is the list of block devices to be used by the container." @@ -2024,36 +2222,45 @@ spec: - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "devicePath" + x-kubernetes-list-type: "map" volumeMounts: - description: "Pod volumes to mount into the container's filesystem. Cannot be updated." + description: "Pod volumes to mount into the container's filesystem.\nCannot be updated." items: description: "VolumeMount describes a mounting of a Volume within a container." properties: mountPath: - description: "Path within the container at which the volume should be mounted. Must not contain ':'." + description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." type: "string" readOnly: - description: "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." + description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: - description: "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." + description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" subPathExpr: - description: "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive." + description: "Expanded path within the volume from which the container's volume should be mounted.\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\nDefaults to \"\" (volume's root).\nSubPathExpr and SubPath are mutually exclusive." type: "string" required: - "mountPath" - "name" type: "object" type: "array" + x-kubernetes-list-map-keys: + - "mountPath" + x-kubernetes-list-type: "map" workingDir: - description: "Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated." + description: "Container's working directory.\nIf not specified, the container runtime's default will be used, which\nmight be configured in the container image.\nCannot be updated." type: "string" required: - "name" @@ -2067,10 +2274,22 @@ spec: description: "Defines the security context for the Mattermost app server container." properties: allowPrivilegeEscalation: - description: "AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows." + description: "AllowPrivilegeEscalation controls whether a process can gain more\nprivileges than its parent process. This bool directly controls if\nthe no_new_privs flag will be set on the container process.\nAllowPrivilegeEscalation is true always when the container is:\n1) run as Privileged\n2) has CAP_SYS_ADMIN\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by this container. If set, this profile\noverrides the pod's appArmorProfile.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" capabilities: - description: "The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows." + description: "The capabilities to add/drop when running containers.\nDefaults to the default set of capabilities granted by the container runtime.\nNote that this field cannot be set when spec.os.name is windows." properties: add: description: "Added capabilities" @@ -2078,35 +2297,37 @@ spec: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" drop: description: "Removed capabilities" items: description: "Capability represent POSIX capabilities type" type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" privileged: - description: "Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows." + description: "Run container in privileged mode.\nProcesses in privileged containers are essentially equivalent to root on the host.\nDefaults to false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" procMount: - description: "procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows." + description: "procMount denotes the type of proc mount to use for the containers.\nThe default value is Default which uses the container runtime defaults for\nreadonly paths and masked paths.\nThis requires the ProcMountType feature flag to be enabled.\nNote that this field cannot be set when spec.os.name is windows." type: "string" readOnlyRootFilesystem: - description: "Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows." + description: "Whether this container has a read-only root filesystem.\nDefault is false.\nNote that this field cannot be set when spec.os.name is windows." type: "boolean" runAsGroup: - description: "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" runAsNonRoot: - description: "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "Indicates that the container must run as a non-root user.\nIf true, the Kubelet will validate the image at runtime to ensure that it\ndoes not run as UID 0 (root) and fail to start the container if it does.\nIf unset or false, no such validation will be performed.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "boolean" runAsUser: - description: "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" seLinuxOptions: - description: "The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows." + description: "The SELinux context to be applied to the container.\nIf unspecified, the container runtime will allocate a random SELinux context for each\ncontainer. May also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is windows." properties: level: description: "Level is SELinux level label that applies to the container." @@ -2122,67 +2343,79 @@ spec: type: "string" type: "object" seccompProfile: - description: "The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows." + description: "The seccomp options to use by this container. If seccomp options are\nprovided at both the pod & container level, the container options\noverride the pod options.\nNote that this field cannot be set when spec.os.name is windows." properties: localhostProfile: - description: "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\"." + description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" type: "object" windowsOptions: - description: "The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." + description: "The Windows specific settings applied to all containers.\nIf unspecified, the options from the PodSecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux." properties: gmsaCredentialSpec: - description: "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field." + description: "GMSACredentialSpec is where the GMSA admission webhook\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\nGMSA credential spec named by the GMSACredentialSpecName field." type: "string" gmsaCredentialSpecName: description: "GMSACredentialSpecName is the name of the GMSA credential spec to use." type: "string" hostProcess: - description: "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true." + description: "HostProcess determines if a container should be run as a 'Host Process' container.\nAll of a Pod's containers must have the same effective HostProcess value\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\nIn addition, if HostProcess is true then HostNetwork must also be set to true." type: "boolean" runAsUserName: - description: "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "The UserName in Windows to run the entrypoint of the container process.\nDefaults to the user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "string" type: "object" type: "object" extraAnnotations: additionalProperties: type: "string" - description: "Defines annotations to add to the Mattermost app server pods. Overrides of default prometheus annotations are ignored." + description: "Defines annotations to add to the Mattermost app server pods.\nOverrides of default prometheus annotations are ignored." type: "object" extraLabels: additionalProperties: type: "string" - description: "Defines labels to add to the Mattermost app server pods. Overrides what is set in ResourceLabels, does not override default labels (app and cluster labels)." + description: "Defines labels to add to the Mattermost app server pods.\nOverrides what is set in ResourceLabels, does not override default labels (app and cluster labels)." type: "object" securityContext: description: "Defines the security context for the Mattermost app server pods." properties: + appArmorProfile: + description: "appArmorProfile is the AppArmor options to use by the containers in this pod.\nNote that this field cannot be set when spec.os.name is windows." + properties: + localhostProfile: + description: "localhostProfile indicates a profile loaded on the node that should be used.\nThe profile must be preconfigured on the node to work.\nMust match the loaded name of the profile.\nMust be set if and only if type is \"Localhost\"." + type: "string" + type: + description: "type indicates which kind of AppArmor profile will be applied.\nValid options are:\n Localhost - a profile pre-loaded on the node.\n RuntimeDefault - the container runtime's default profile.\n Unconfined - no AppArmor enforcement." + type: "string" + required: + - "type" + type: "object" fsGroup: - description: "A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: \n 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- \n If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows." + description: "A special supplemental group that applies to all containers in a pod.\nSome volume types allow the Kubelet to change the ownership of that volume\nto be owned by the pod:\n\n1. The owning GID will be the FSGroup\n2. The setgid bit is set (new files created in the volume will be owned by FSGroup)\n3. The permission bits are OR'd with rw-rw----\n\nIf unset, the Kubelet will not modify the ownership and permissions of any volume.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" fsGroupChangePolicy: - description: "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used. Note that this field cannot be set when spec.os.name is windows." + description: "fsGroupChangePolicy defines behavior of changing ownership and permission of the volume\nbefore being exposed inside Pod. This field will only apply to\nvolume types which support fsGroup based ownership(and permissions).\nIt will have no effect on ephemeral volume types such as: secret, configmaps\nand emptydir.\nValid values are \"OnRootMismatch\" and \"Always\". If not specified, \"Always\" is used.\nNote that this field cannot be set when spec.os.name is windows." type: "string" runAsGroup: - description: "The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows." + description: "The GID to run the entrypoint of the container process.\nUses runtime default if unset.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" runAsNonRoot: - description: "Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "Indicates that the container must run as a non-root user.\nIf true, the Kubelet will validate the image at runtime to ensure that it\ndoes not run as UID 0 (root) and fail to start the container if it does.\nIf unset or false, no such validation will be performed.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "boolean" runAsUser: - description: "The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows." + description: "The UID to run the entrypoint of the container process.\nDefaults to user specified in image metadata if unspecified.\nMay also be set in SecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence\nfor that container.\nNote that this field cannot be set when spec.os.name is windows." format: "int64" type: "integer" seLinuxOptions: - description: "The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows." + description: "The SELinux context to be applied to all containers.\nIf unspecified, the container runtime will allocate a random SELinux context for each\ncontainer. May also be set in SecurityContext. If set in\nboth SecurityContext and PodSecurityContext, the value specified in SecurityContext\ntakes precedence for that container.\nNote that this field cannot be set when spec.os.name is windows." properties: level: description: "Level is SELinux level label that applies to the container." @@ -2198,25 +2431,29 @@ spec: type: "string" type: "object" seccompProfile: - description: "The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows." + description: "The seccomp options to use by the containers in this pod.\nNote that this field cannot be set when spec.os.name is windows." properties: localhostProfile: - description: "localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is \"Localhost\"." + description: "localhostProfile indicates a profile defined in a file on the node should be used.\nThe profile must be preconfigured on the node to work.\nMust be a descending path, relative to the kubelet's configured seccomp profile location.\nMust be set if type is \"Localhost\". Must NOT be set for any other type." type: "string" type: - description: "type indicates which kind of seccomp profile will be applied. Valid options are: \n Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied." + description: "type indicates which kind of seccomp profile will be applied.\nValid options are:\n\nLocalhost - a profile defined in a file on the node should be used.\nRuntimeDefault - the container runtime default profile should be used.\nUnconfined - no profile should be applied." type: "string" required: - "type" type: "object" supplementalGroups: - description: "A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows." + description: "A list of groups applied to the first process run in each container, in\naddition to the container's primary GID and fsGroup (if specified). If\nthe SupplementalGroupsPolicy feature is enabled, the\nsupplementalGroupsPolicy field determines whether these are in addition\nto or instead of any group memberships defined in the container image.\nIf unspecified, no additional groups are added, though group memberships\ndefined in the container image may still be used, depending on the\nsupplementalGroupsPolicy field.\nNote that this field cannot be set when spec.os.name is windows." items: format: "int64" type: "integer" type: "array" + x-kubernetes-list-type: "atomic" + supplementalGroupsPolicy: + description: "Defines how supplemental groups of the first container processes are calculated.\nValid values are \"Merge\" and \"Strict\". If not specified, \"Merge\" is used.\n(Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled\nand the container runtime must implement support for this feature.\nNote that this field cannot be set when spec.os.name is windows." + type: "string" sysctls: - description: "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows." + description: "Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported\nsysctls (by the container runtime) might fail to launch.\nNote that this field cannot be set when spec.os.name is windows." items: description: "Sysctl defines a kernel parameter to be set" properties: @@ -2231,26 +2468,27 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" windowsOptions: - description: "The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux." + description: "The Windows specific settings applied to all containers.\nIf unspecified, the options within a container's SecurityContext will be used.\nIf set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence.\nNote that this field cannot be set when spec.os.name is linux." properties: gmsaCredentialSpec: - description: "GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field." + description: "GMSACredentialSpec is where the GMSA admission webhook\n(https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the\nGMSA credential spec named by the GMSACredentialSpecName field." type: "string" gmsaCredentialSpecName: description: "GMSACredentialSpecName is the name of the GMSA credential spec to use." type: "string" hostProcess: - description: "HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true." + description: "HostProcess determines if a container should be run as a 'Host Process' container.\nAll of a Pod's containers must have the same effective HostProcess value\n(it is not allowed to have a mix of HostProcess containers and non-HostProcess containers).\nIn addition, if HostProcess is true then HostNetwork must also be set to true." type: "boolean" runAsUserName: - description: "The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence." + description: "The UserName in Windows to run the entrypoint of the container process.\nDefaults to the user specified in image metadata if unspecified.\nMay also be set in PodSecurityContext. If set in both SecurityContext and\nPodSecurityContext, the value specified in SecurityContext takes precedence." type: "string" type: "object" type: "object" type: "object" probes: - description: "Probes defines configuration of liveness and readiness probe for Mattermost pods. These settings generally don't need to be changed." + description: "Probes defines configuration of liveness and readiness probe for Mattermost pods.\nThese settings generally don't need to be changed." properties: livenessProbe: description: "Defines the probe to check if the application is up and running." @@ -2259,24 +2497,26 @@ spec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2285,7 +2525,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -2293,7 +2533,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -2303,6 +2543,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2310,24 +2551,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -2340,17 +2581,17 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" @@ -2361,24 +2602,26 @@ spec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -2387,7 +2630,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -2395,7 +2638,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -2405,6 +2648,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -2412,24 +2656,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -2442,23 +2686,23 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" type: "object" replicas: - description: "Replicas defines the number of replicas to use for the Mattermost app servers." + description: "Replicas defines the number of replicas to use for the Mattermost app\nservers." format: "int32" type: "integer" resourceLabels: @@ -2466,7 +2710,7 @@ spec: type: "string" type: "object" resourcePatch: - description: "ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator. \n WARNING: ResourcePatch is highly experimental and subject to change. Some patches may be impossible to perform or may impact the stability of Mattermost server. \n Use at your own risk when no other options are available." + description: "ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator.\n\nWARNING: ResourcePatch is highly experimental and subject to change.\nSome patches may be impossible to perform or may impact the stability of Mattermost server.\n\nUse at your own risk when no other options are available." properties: deployment: properties: @@ -2484,7 +2728,7 @@ spec: type: "object" type: "object" scheduling: - description: "Scheduling defines the configuration related to scheduling of the Mattermost pods as well as resource constraints. These settings generally don't need to be changed." + description: "Scheduling defines the configuration related to scheduling of the Mattermost pods\nas well as resource constraints. These settings generally don't need to be changed." properties: affinity: description: "If specified, affinity will define the pod's scheduling constraints" @@ -2493,9 +2737,9 @@ spec: description: "Describes node affinity scheduling rules for the pod." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions; the\nnode(s) with the highest sum are the most preferred." items: - description: "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." + description: "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." properties: preference: description: "A node selector term, associated with the corresponding weight." @@ -2503,46 +2747,51 @@ spec: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" + x-kubernetes-map-type: "atomic" weight: description: "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." format: "int32" @@ -2552,67 +2801,75 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: nodeSelectorTerms: description: "Required. A list of node selector terms. The terms are ORed." items: - description: "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm." + description: "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm." properties: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" + x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" + x-kubernetes-map-type: "atomic" type: "object" podAffinity: description: "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -2620,78 +2877,97 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -2699,89 +2975,110 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: description: "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe anti-affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -2789,78 +3086,97 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -2868,100 +3184,124 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" nodeSelector: additionalProperties: type: "string" - description: "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" + description: "NodeSelector is a selector which must be true for the pod to fit on a node.\nSelector which must match a node's labels for the pod to be scheduled on that node.\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" type: "object" resources: description: "Defines the resource requests and limits for the Mattermost app server pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -2977,7 +3317,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -2986,29 +3326,29 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" tolerations: - description: "Defines tolerations for the Mattermost app server pods More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/" + description: "Defines tolerations for the Mattermost app server pods\nMore info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/" items: - description: "The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator ." + description: "The pod this Toleration is attached to tolerates any taint that matches\nthe triple using the matching operator ." properties: effect: - description: "Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." + description: "Effect indicates the taint effect to match. Empty means match all taint effects.\nWhen specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute." type: "string" key: - description: "Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys." + description: "Key is the taint key that the toleration applies to. Empty means match all taint keys.\nIf the key is empty, operator must be Exists; this combination means to match all values and all keys." type: "string" operator: - description: "Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category." + description: "Operator represents a key's relationship to the value.\nValid operators are Exists and Equal. Defaults to Equal.\nExists is equivalent to wildcard for value, so that a pod can\ntolerate all taints of a particular category." type: "string" tolerationSeconds: - description: "TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system." + description: "TolerationSeconds represents the period of time the toleration (which must be\nof effect NoExecute, otherwise this field is ignored) tolerates the taint. By default,\nit is not set, which means tolerate the taint forever (do not evict). Zero and\nnegative values will be treated as 0 (evict immediately) by the system." format: "int64" type: "integer" value: - description: "Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string." + description: "Value is the taint value the toleration matches to.\nIf the operator is Exists, the value should be empty, otherwise just a regular string." type: "string" type: "object" type: "array" @@ -3018,7 +3358,7 @@ spec: type: "string" type: "object" size: - description: "Size defines the size of the Mattermost. This is typically specified in number of users. This will override replica and resource requests/limits appropriately for the provided number of users. This is a write-only field - its value is erased after setting appropriate values of resources. Accepted values are: 100users, 1000users, 5000users, 10000users, and 250000users. If replicas and resource requests/limits are not specified, and Size is not provided the configuration for 5000users will be applied. Setting 'Replicas', 'Scheduling.Resources', 'FileStore.Replicas', 'FileStore.Resource', 'Database.Replicas', or 'Database.Resources' will override the values set by Size. Setting new Size will override previous values regardless if set by Size or manually." + description: "Size defines the size of the Mattermost. This is typically specified in\nnumber of users. This will override replica and resource requests/limits\nappropriately for the provided number of users. This is a write-only\nfield - its value is erased after setting appropriate values of resources.\nAccepted values are: 100users, 1000users, 5000users, 10000users,\nand 250000users. If replicas and resource requests/limits are not\nspecified, and Size is not provided the configuration for 5000users will\nbe applied. Setting 'Replicas', 'Scheduling.Resources', 'FileStore.Replicas',\n'FileStore.Resource', 'Database.Replicas', or 'Database.Resources' will\noverride the values set by Size. Setting new Size will override previous\nvalues regardless if set by Size or manually." type: "string" updateJob: description: "UpdateJob defines configuration for the template for the update job." @@ -3034,11 +3374,11 @@ spec: extraLabels: additionalProperties: type: "string" - description: "Defines labels to add to the update job pod. Overrides what is set in ResourceLabels, does not override default label (app label)." + description: "Defines labels to add to the update job pod.\nOverrides what is set in ResourceLabels, does not override default label (app label)." type: "object" type: "object" useIngressTLS: - description: "UseIngressTLS specifies whether TLS secret should be configured for Ingress. Deprecated: Use Spec.Ingress.TLSSecret." + description: "UseIngressTLS specifies whether TLS secret should be configured for Ingress.\nDeprecated: Use Spec.Ingress.TLSSecret." type: "boolean" useServiceLoadBalancer: type: "boolean" @@ -3051,22 +3391,25 @@ spec: description: "VolumeMount describes a mounting of a Volume within a container." properties: mountPath: - description: "Path within the container at which the volume should be mounted. Must not contain ':'." + description: "Path within the container at which the volume should be mounted. Must\nnot contain ':'." type: "string" mountPropagation: - description: "mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10." + description: "mountPropagation determines how mounts are propagated from the host\nto container and the other way around.\nWhen not set, MountPropagationNone is used.\nThis field is beta in 1.10.\nWhen RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified\n(which defaults to None)." type: "string" name: description: "This must match the Name of a Volume." type: "string" readOnly: - description: "Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false." + description: "Mounted read-only if true, read-write otherwise (false or unspecified).\nDefaults to false." type: "boolean" + recursiveReadOnly: + description: "RecursiveReadOnly specifies whether read-only mounts should be handled\nrecursively.\n\nIf ReadOnly is false, this field has no meaning and must be unspecified.\n\nIf ReadOnly is true, and this field is set to Disabled, the mount is not made\nrecursively read-only. If this field is set to IfPossible, the mount is made\nrecursively read-only, if it is supported by the container runtime. If this\nfield is set to Enabled, the mount is made recursively read-only if it is\nsupported by the container runtime, otherwise the pod will not be started and\nan error will be generated to indicate the reason.\n\nIf this field is set to IfPossible or Enabled, MountPropagation must be set to\nNone (or be unspecified, which defaults to None).\n\nIf this field is not specified, it is treated as an equivalent of Disabled." + type: "string" subPath: - description: "Path within the volume from which the container's volume should be mounted. Defaults to \"\" (volume's root)." + description: "Path within the volume from which the container's volume should be mounted.\nDefaults to \"\" (volume's root)." type: "string" subPathExpr: - description: "Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to \"\" (volume's root). SubPathExpr and SubPath are mutually exclusive." + description: "Expanded path within the volume from which the container's volume should be mounted.\nBehaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment.\nDefaults to \"\" (volume's root).\nSubPathExpr and SubPath are mutually exclusive." type: "string" required: - "mountPath" @@ -3074,25 +3417,25 @@ spec: type: "object" type: "array" volumes: - description: "Volumes allows for mounting volumes from various sources into the Mattermost application pods." + description: "Volumes allows for mounting volumes from various sources into the\nMattermost application pods." items: description: "Volume represents a named volume in a pod that may be accessed by any container in the pod." properties: awsElasticBlockStore: - description: "awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" + description: "awsElasticBlockStore represents an AWS Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" properties: fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" type: "string" partition: - description: "partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." + description: "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty)." format: "int32" type: "integer" readOnly: - description: "readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" + description: "readOnly value true will force the readOnly setting in VolumeMounts.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" type: "boolean" volumeID: - description: "volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" + description: "volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore" type: "string" required: - "volumeID" @@ -3110,13 +3453,15 @@ spec: description: "diskURI is the URI of data disk in the blob storage" type: "string" fsType: - description: "fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." + default: "ext4" + description: "fsType is Filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" kind: description: "kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared" type: "string" readOnly: - description: "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + default: false + description: "readOnly Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" required: - "diskName" @@ -3126,7 +3471,7 @@ spec: description: "azureFile represents an Azure File Service mount on the host and bind mount to the pod." properties: readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" secretName: description: "secretName is the name of secret that contains Azure Storage Account Name and Key" @@ -3142,50 +3487,55 @@ spec: description: "cephFS represents a Ceph FS mount on the host that shares a pod's lifetime" properties: monitors: - description: "monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" + description: "monitors is Required: Monitors is a collection of Ceph monitors\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" path: description: "path is Optional: Used as the mounted root, rather than the full Ceph tree, default is /" type: "string" readOnly: - description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" + description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" type: "boolean" secretFile: - description: "secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" + description: "secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" type: "string" secretRef: - description: "secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" + description: "secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty.\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" user: - description: "user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" + description: "user is optional: User is the rados user name, default is admin\nMore info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it" type: "string" required: - "monitors" type: "object" cinder: - description: "cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" + description: "cinder represents a cinder volume attached and mounted on kubelets host machine.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md" properties: fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md" type: "string" readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" + description: "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md" type: "boolean" secretRef: - description: "secretRef is optional: points to a secret object containing parameters used to connect to OpenStack." + description: "secretRef is optional: points to a secret object containing parameters used to connect\nto OpenStack." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" volumeID: - description: "volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md" + description: "volumeID used to identify the volume in cinder.\nMore info: https://examples.k8s.io/mysql-cinder-pd/README.md" type: "string" required: - "volumeID" @@ -3194,11 +3544,11 @@ spec: description: "configMap represents a configMap that should populate this volume" properties: defaultMode: - description: "defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "defaultMode is optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDefaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" items: - description: "items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." + description: "items if unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'." items: description: "Maps a string key to a path within a volume." properties: @@ -3206,47 +3556,52 @@ spec: description: "key is the key to project." type: "string" mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "mode is Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." + description: "path is the relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." type: "string" required: - "key" - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional specify whether the ConfigMap or its keys must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" csi: description: "csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature)." properties: driver: - description: "driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster." + description: "driver is the name of the CSI driver that handles this volume.\nConsult with your admin for the correct name as registered in the cluster." type: "string" fsType: - description: "fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply." + description: "fsType to mount. Ex. \"ext4\", \"xfs\", \"ntfs\".\nIf not provided, the empty value is passed to the associated CSI driver\nwhich will determine the default filesystem to apply." type: "string" nodePublishSecretRef: - description: "nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed." + description: "nodePublishSecretRef is a reference to the secret object containing\nsensitive information to pass to the CSI driver to complete the CSI\nNodePublishVolume and NodeUnpublishVolume calls.\nThis field is optional, and may be empty if no secret is required. If the\nsecret object contains more than one secret, all secret references are passed." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" readOnly: - description: "readOnly specifies a read-only configuration for the volume. Defaults to false (read/write)." + description: "readOnly specifies a read-only configuration for the volume.\nDefaults to false (read/write)." type: "boolean" volumeAttributes: additionalProperties: type: "string" - description: "volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values." + description: "volumeAttributes stores driver-specific properties that are passed to the CSI\ndriver. Consult your driver's documentation for supported values." type: "object" required: - "driver" @@ -3255,7 +3610,7 @@ spec: description: "downwardAPI represents downward API about the pod that should populate this volume" properties: defaultMode: - description: "Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "Optional: mode bits to use on created files by default. Must be a\nOptional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDefaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" items: @@ -3264,7 +3619,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -3275,15 +3630,16 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" mode: - description: "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "Optional: mode bits used to set permissions on this file, must be an octal value\nbetween 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: "string" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -3301,47 +3657,50 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" required: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" emptyDir: - description: "emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" + description: "emptyDir represents a temporary directory that shares a pod's lifetime.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" properties: medium: - description: "medium represents what type of storage medium should back this directory. The default is \"\" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" + description: "medium represents what type of storage medium should back this directory.\nThe default is \"\" which means to use the node's default medium.\nMust be an empty string (default) or Memory.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" type: "string" sizeLimit: anyOf: - type: "integer" - type: "string" - description: "sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir" + description: "sizeLimit is the total amount of local storage required for this EmptyDir volume.\nThe size limit is also applicable for memory medium.\nThe maximum usage on memory medium EmptyDir would be the minimum value between\nthe SizeLimit specified here and the sum of memory limits of all containers in a pod.\nThe default is nil which means that the limit is undefined.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true type: "object" ephemeral: - description: "ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. \n Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). \n Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. \n Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. \n A pod can use both types of ephemeral volumes and persistent volumes at the same time." + description: "ephemeral represents a volume that is handled by a cluster storage driver.\nThe volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts,\nand deleted when the pod is removed.\n\nUse this if:\na) the volume is only needed while the pod runs,\nb) features of normal volumes like restoring from snapshot or capacity\n tracking are needed,\nc) the storage driver is specified through a storage class, and\nd) the storage driver supports dynamic volume provisioning through\n a PersistentVolumeClaim (see EphemeralVolumeSource for more\n information on the connection between this volume type\n and PersistentVolumeClaim).\n\nUse PersistentVolumeClaim or one of the vendor-specific\nAPIs for volumes that persist for longer than the lifecycle\nof an individual pod.\n\nUse CSI for light-weight local ephemeral volumes if the CSI driver is meant to\nbe used that way - see the documentation of the driver for\nmore information.\n\nA pod can use both types of ephemeral volumes and\npersistent volumes at the same time." properties: volumeClaimTemplate: - description: "Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). \n An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. \n This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. \n Required, must not be nil." + description: "Will be used to create a stand-alone PVC to provision the volume.\nThe pod in which this EphemeralVolumeSource is embedded will be the\nowner of the PVC, i.e. the PVC will be deleted together with the\npod. The name of the PVC will be `-` where\n`` is the name from the `PodSpec.Volumes` array\nentry. Pod validation will reject the pod if the concatenated name\nis not valid for a PVC (for example, too long).\n\nAn existing PVC with that name that is not owned by the pod\nwill *not* be used for the pod to avoid using an unrelated\nvolume by mistake. Starting the pod is then blocked until\nthe unrelated PVC is removed. If such a pre-created PVC is\nmeant to be used by the pod, the PVC has to updated with an\nowner reference to the pod once the pod exists. Normally\nthis should not be necessary, but it may be useful when\nmanually reconstructing a broken cluster.\n\nThis field is read-only and no changes will be made by Kubernetes\nto the PVC after it has been created.\n\nRequired, must not be nil." properties: metadata: - description: "May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation." + description: "May contain labels and annotations that will be copied into the PVC\nwhen creating it. No other fields are allowed and will be rejected during\nvalidation." type: "object" spec: - description: "The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here." + description: "The specification for the PersistentVolumeClaim. The entire content is\ncopied unchanged into the PVC that gets created from this\ntemplate. The same fields as in a PersistentVolumeClaim\nare also valid here." properties: accessModes: - description: "accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" + description: "accessModes contains the desired access modes the volume should have.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" dataSource: - description: "dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource." + description: "dataSource field can be used to specify either:\n* An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot)\n* An existing PVC (PersistentVolumeClaim)\nIf the provisioner or an external controller can support the specified data source,\nit will create a new volume based on the contents of the specified data source.\nWhen the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef,\nand dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified.\nIf the namespace is specified, then dataSourceRef will not be copied to dataSource." properties: apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." + description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." type: "string" kind: description: "Kind is the type of resource being referenced" @@ -3353,11 +3712,12 @@ spec: - "kind" - "name" type: "object" + x-kubernetes-map-type: "atomic" dataSourceRef: - description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." + description: "dataSourceRef specifies the object from which to populate the volume with data, if a non-empty\nvolume is desired. This may be any object from a non-empty API group (non\ncore object) or a PersistentVolumeClaim object.\nWhen this field is specified, volume binding will only succeed if the type of\nthe specified object matches some installed volume populator or dynamic\nprovisioner.\nThis field will replace the functionality of the dataSource field and as such\nif both fields are non-empty, they must have the same value. For backwards\ncompatibility, when namespace isn't specified in dataSourceRef,\nboth fields (dataSource and dataSourceRef) will be set to the same\nvalue automatically if one of them is empty and the other is non-empty.\nWhen namespace is specified in dataSourceRef,\ndataSource isn't set to the same value and must be empty.\nThere are three important differences between dataSource and dataSourceRef:\n* While dataSource only allows two specific types of objects, dataSourceRef\n allows any non-core object, as well as PersistentVolumeClaim objects.\n* While dataSource ignores disallowed values (dropping them), dataSourceRef\n preserves all values, and generates an error if a disallowed value is\n specified.\n* While dataSource only allows local objects, dataSourceRef allows objects\n in any namespaces.\n(Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled.\n(Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled." properties: apiGroup: - description: "APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required." + description: "APIGroup is the group for the resource being referenced.\nIf APIGroup is not specified, the specified Kind must be in the core API group.\nFor any other third-party types, APIGroup is required." type: "string" kind: description: "Kind is the type of resource being referenced" @@ -3366,30 +3726,15 @@ spec: description: "Name is the name of resource being referenced" type: "string" namespace: - description: "Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." + description: "Namespace is the namespace of resource being referenced\nNote that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details.\n(Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled." type: "string" required: - "kind" - "name" type: "object" resources: - description: "resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" + description: "resources represents the minimum resources the volume should have.\nIf RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements\nthat are lower than previous value but must still be higher than capacity recorded in the\nstatus field of the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources" properties: - claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." - items: - description: "ResourceClaim references one entry in PodSpec.ResourceClaims." - properties: - name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." - type: "string" - required: - - "name" - type: "object" - type: "array" - x-kubernetes-list-map-keys: - - "name" - x-kubernetes-list-type: "map" limits: additionalProperties: anyOf: @@ -3397,7 +3742,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -3406,7 +3751,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" selector: @@ -3415,35 +3760,41 @@ spec: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" storageClassName: - description: "storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + description: "storageClassName is the name of the StorageClass required by the claim.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1" + type: "string" + volumeAttributesClassName: + description: "volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim.\nIf specified, the CSI driver will create or update the volume with the attributes defined\nin the corresponding VolumeAttributesClass. This has a different purpose than storageClassName,\nit can be changed after the claim is created. An empty string value means that no VolumeAttributesClass\nwill be applied to the claim but it's not allowed to reset this field to empty string once it is set.\nIf unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass\nwill be set by the persistentvolume controller if it exists.\nIf the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be\nset to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource\nexists.\nMore info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/\n(Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default)." type: "string" volumeMode: - description: "volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec." + description: "volumeMode defines what type of volume is required by the claim.\nValue of Filesystem is implied when not included in claim spec." type: "string" volumeName: description: "volumeName is the binding reference to the PersistentVolume backing this claim." @@ -3457,34 +3808,36 @@ spec: description: "fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod." properties: fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" lun: description: "lun is Optional: FC target lun number" format: "int32" type: "integer" readOnly: - description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly is Optional: Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" targetWWNs: description: "targetWWNs is Optional: FC target worldwide names (WWNs)" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" wwids: - description: "wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously." + description: "wwids Optional: FC volume world wide identifiers (wwids)\nEither wwids or combination of targetWWNs and lun must be set, but not both simultaneously." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" flexVolume: - description: "flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin." + description: "flexVolume represents a generic volume resource that is\nprovisioned/attached using an exec based plugin." properties: driver: description: "driver is the name of the driver to use for this volume." type: "string" fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". The default filesystem depends on FlexVolume script." type: "string" options: additionalProperties: @@ -3492,15 +3845,17 @@ spec: description: "options is Optional: this field holds extra command options if any." type: "object" readOnly: - description: "readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly is Optional: defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" secretRef: - description: "secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts." + description: "secretRef is Optional: secretRef is reference to the secret object containing\nsensitive information to pass to the plugin scripts. This may be\nempty if no secret object is specified. If the secret object\ncontains more than one secret, all secrets are passed to the plugin\nscripts." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" required: - "driver" type: "object" @@ -3508,36 +3863,36 @@ spec: description: "flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running" properties: datasetName: - description: "datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated" + description: "datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker\nshould be considered as deprecated" type: "string" datasetUUID: description: "datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset" type: "string" type: "object" gcePersistentDisk: - description: "gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" + description: "gcePersistentDisk represents a GCE Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" properties: fsType: - description: "fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" type: "string" partition: - description: "partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as \"1\". Similarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" + description: "partition is the partition in the volume that you want to mount.\nIf omitted, the default is to mount by volume name.\nExamples: For volume /dev/sda1, you specify the partition as \"1\".\nSimilarly, the volume partition for /dev/sda is \"0\" (or you can leave the property empty).\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" format: "int32" type: "integer" pdName: - description: "pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" + description: "pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" type: "string" readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" + description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk" type: "boolean" required: - "pdName" type: "object" gitRepo: - description: "gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container." + description: "gitRepo represents a git repository at a particular revision.\nDEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an\nEmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir\ninto the Pod's container." properties: directory: - description: "directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name." + description: "directory is the target directory name.\nMust not contain or start with '..'. If '.' is supplied, the volume directory will be the\ngit repository. Otherwise, if specified, the volume will contain the git repository in\nthe subdirectory with the given name." type: "string" repository: description: "repository is the URL" @@ -3549,35 +3904,45 @@ spec: - "repository" type: "object" glusterfs: - description: "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md" + description: "glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md" properties: endpoints: - description: "endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" + description: "endpoints is the endpoint name that details Glusterfs topology.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" type: "string" path: - description: "path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" + description: "path is the Glusterfs volume path.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" type: "string" readOnly: - description: "readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" + description: "readOnly here will force the Glusterfs volume to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod" type: "boolean" required: - "endpoints" - "path" type: "object" hostPath: - description: "hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write." + description: "hostPath represents a pre-existing file or directory on the host\nmachine that is directly exposed to the container. This is generally\nused for system agents or other privileged things that are allowed\nto see the host machine. Most containers will NOT need this.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" properties: path: - description: "path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" + description: "path of the directory on the host.\nIf the path is a symlink, it will follow the link to the real path.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" type: "string" type: - description: "type for HostPath Volume Defaults to \"\" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" + description: "type for HostPath Volume\nDefaults to \"\"\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath" type: "string" required: - "path" type: "object" + image: + description: "image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine.\nThe volume is resolved at pod startup depending on which PullPolicy value is provided:\n\n- Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\n- Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\n- IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\n\nThe volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation.\nA failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message.\nThe types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field.\nThe OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images.\nThe volume will be mounted read-only (ro) and non-executable files (noexec).\nSub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath).\nThe field spec.securityContext.fsGroupChangePolicy has no effect on this volume type." + properties: + pullPolicy: + description: "Policy for pulling OCI objects. Possible values are:\nAlways: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails.\nNever: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present.\nIfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails.\nDefaults to Always if :latest tag is specified, or IfNotPresent otherwise." + type: "string" + reference: + description: "Required: Image or artifact reference to be used.\nBehaves in the same way as pod.spec.containers[*].image.\nPull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets.\nMore info: https://kubernetes.io/docs/concepts/containers/images\nThis field is optional to allow higher level config management to default or override\ncontainer images in workload controllers like Deployments and StatefulSets." + type: "string" + type: "object" iscsi: - description: "iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md" + description: "iscsi represents an ISCSI Disk resource that is attached to a\nkubelet's host machine and then exposed to the pod.\nMore info: https://examples.k8s.io/volumes/iscsi/README.md" properties: chapAuthDiscovery: description: "chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication" @@ -3586,38 +3951,42 @@ spec: description: "chapAuthSession defines whether support iSCSI Session CHAP authentication" type: "boolean" fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi" type: "string" initiatorName: - description: "initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection." + description: "initiatorName is the custom iSCSI Initiator Name.\nIf initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface\n: will be created for the connection." type: "string" iqn: description: "iqn is the target iSCSI Qualified Name." type: "string" iscsiInterface: - description: "iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp)." + default: "default" + description: "iscsiInterface is the interface Name that uses an iSCSI transport.\nDefaults to 'default' (tcp)." type: "string" lun: description: "lun represents iSCSI Target Lun number." format: "int32" type: "integer" portals: - description: "portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." + description: "portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260)." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false." + description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false." type: "boolean" secretRef: description: "secretRef is the CHAP Secret for iSCSI target and initiator authentication" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" targetPortal: - description: "targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260)." + description: "targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port\nis other than default (typically TCP ports 860 and 3260)." type: "string" required: - "iqn" @@ -3625,32 +3994,32 @@ spec: - "targetPortal" type: "object" name: - description: "name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" + description: "name of the volume.\nMust be a DNS_LABEL and unique within the pod.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" nfs: - description: "nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" + description: "nfs represents an NFS mount on the host that shares a pod's lifetime\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" properties: path: - description: "path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" + description: "path that is exported by the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" type: "string" readOnly: - description: "readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" + description: "readOnly here will force the NFS export to be mounted with read-only permissions.\nDefaults to false.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" type: "boolean" server: - description: "server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" + description: "server is the hostname or IP address of the NFS server.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#nfs" type: "string" required: - "path" - "server" type: "object" persistentVolumeClaim: - description: "persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "persistentVolumeClaimVolumeSource represents a reference to a\nPersistentVolumeClaim in the same namespace.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" properties: claimName: - description: "claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" + description: "claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume.\nMore info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims" type: "string" readOnly: - description: "readOnly Will force the ReadOnly setting in VolumeMounts. Default false." + description: "readOnly Will force the ReadOnly setting in VolumeMounts.\nDefault false." type: "boolean" required: - "claimName" @@ -3659,7 +4028,7 @@ spec: description: "photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine" properties: fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" pdID: description: "pdID is the ID that identifies Photon Controller persistent disk" @@ -3671,10 +4040,10 @@ spec: description: "portworxVolume represents a portworx volume attached and mounted on kubelets host machine" properties: fsType: - description: "fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." + description: "fSType represents the filesystem type to mount\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" volumeID: description: "volumeID uniquely identifies a Portworx volume" @@ -3686,19 +4055,70 @@ spec: description: "projected items for all in one resources secrets, configmaps, and downward API" properties: defaultMode: - description: "defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "defaultMode are the mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" sources: - description: "sources is the list of volume projections" + description: "sources is the list of volume projections. Each entry in this list\nhandles one source." items: - description: "Projection that may be projected along with other supported volume types" + description: "Projection that may be projected along with other supported volume types.\nExactly one of these fields must be set." properties: + clusterTrustBundle: + description: "ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field\nof ClusterTrustBundle objects in an auto-updating file.\n\nAlpha, gated by the ClusterTrustBundleProjection feature gate.\n\nClusterTrustBundle objects can either be selected by name, or by the\ncombination of signer name and a label selector.\n\nKubelet performs aggressive normalization of the PEM contents written\ninto the pod filesystem. Esoteric PEM features such as inter-block\ncomments and block headers are stripped. Certificates are deduplicated.\nThe ordering of certificates within the file is arbitrary, and Kubelet\nmay change the order over time." + properties: + labelSelector: + description: "Select all ClusterTrustBundles that match this label selector. Only has\neffect if signerName is set. Mutually-exclusive with name. If unset,\ninterpreted as \"match nothing\". If set but empty, interpreted as \"match\neverything\"." + properties: + matchExpressions: + description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." + items: + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." + properties: + key: + description: "key is the label key that the selector applies to." + type: "string" + operator: + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." + type: "string" + values: + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + required: + - "key" + - "operator" + type: "object" + type: "array" + x-kubernetes-list-type: "atomic" + matchLabels: + additionalProperties: + type: "string" + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + type: "object" + type: "object" + x-kubernetes-map-type: "atomic" + name: + description: "Select a single ClusterTrustBundle by object name. Mutually-exclusive\nwith signerName and labelSelector." + type: "string" + optional: + description: "If true, don't block pod startup if the referenced ClusterTrustBundle(s)\naren't available. If using name, then the named ClusterTrustBundle is\nallowed not to exist. If using signerName, then the combination of\nsignerName and labelSelector is allowed to match zero\nClusterTrustBundles." + type: "boolean" + path: + description: "Relative path from the volume root to write the bundle." + type: "string" + signerName: + description: "Select all ClusterTrustBundles that match this signer name.\nMutually-exclusive with name. The contents of all selected\nClusterTrustBundles will be unified and deduplicated." + type: "string" + required: + - "path" + type: "object" configMap: description: "configMap information about the configMap data to project" properties: items: - description: "items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." + description: "items if unspecified, each key-value pair in the Data field of the referenced\nConfigMap will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the ConfigMap,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'." items: description: "Maps a string key to a path within a volume." properties: @@ -3706,24 +4126,27 @@ spec: description: "key is the key to project." type: "string" mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "mode is Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." + description: "path is the relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." type: "string" required: - "key" - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional specify whether the ConfigMap or its keys must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" downwardAPI: description: "downwardAPI information about the downwardAPI data to project" properties: @@ -3733,7 +4156,7 @@ spec: description: "DownwardAPIVolumeFile represents information to create the file containing the pod field" properties: fieldRef: - description: "Required: Selects a field of the pod: only annotations, labels, name and namespace are supported." + description: "Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -3744,15 +4167,16 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" mode: - description: "Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "Optional: mode bits used to set permissions on this file, must be an octal value\nbetween 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: description: "Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..'" type: "string" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -3770,16 +4194,18 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" required: - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" secret: description: "secret information about the secret data to project" properties: items: - description: "items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." + description: "items if unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'." items: description: "Maps a string key to a path within a volume." properties: @@ -3787,60 +4213,64 @@ spec: description: "key is the key to project." type: "string" mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "mode is Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." + description: "path is the relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." type: "string" required: - "key" - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "optional field specify whether the Secret or its key must be defined" type: "boolean" type: "object" + x-kubernetes-map-type: "atomic" serviceAccountToken: description: "serviceAccountToken is information about the serviceAccountToken data to project" properties: audience: - description: "audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver." + description: "audience is the intended audience of the token. A recipient of a token\nmust identify itself with an identifier specified in the audience of the\ntoken, and otherwise should reject the token. The audience defaults to the\nidentifier of the apiserver." type: "string" expirationSeconds: - description: "expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes." + description: "expirationSeconds is the requested duration of validity of the service\naccount token. As the token approaches expiration, the kubelet volume\nplugin will proactively rotate the service account token. The kubelet will\nstart trying to rotate the token if the token is older than 80 percent of\nits time to live or if the token is older than 24 hours.Defaults to 1 hour\nand must be at least 10 minutes." format: "int64" type: "integer" path: - description: "path is the path relative to the mount point of the file to project the token into." + description: "path is the path relative to the mount point of the file to project the\ntoken into." type: "string" required: - "path" type: "object" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" quobyte: description: "quobyte represents a Quobyte mount on the host that shares a pod's lifetime" properties: group: - description: "group to map volume access to Default is no group" + description: "group to map volume access to\nDefault is no group" type: "string" readOnly: - description: "readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false." + description: "readOnly here will force the Quobyte volume to be mounted with read-only permissions.\nDefaults to false." type: "boolean" registry: - description: "registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes" + description: "registry represents a single or multiple Quobyte Registry services\nspecified as a string as host:port pair (multiple entries are separated with commas)\nwhich acts as the central registry for volumes" type: "string" tenant: - description: "tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin" + description: "tenant owning the given Quobyte volume in the Backend\nUsed with dynamically provisioned Quobyte volumes, value is set by the plugin" type: "string" user: - description: "user to map volume access to Defaults to serivceaccount user" + description: "user to map volume access to\nDefaults to serivceaccount user" type: "string" volume: description: "volume is a string that references an already created Quobyte volume by name." @@ -3850,37 +4280,43 @@ spec: - "volume" type: "object" rbd: - description: "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md" + description: "rbd represents a Rados Block Device mount on the host that shares a pod's lifetime.\nMore info: https://examples.k8s.io/volumes/rbd/README.md" properties: fsType: - description: "fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine" + description: "fsType is the filesystem type of the volume that you want to mount.\nTip: Ensure that the filesystem type is supported by the host operating system.\nExamples: \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#rbd" type: "string" image: - description: "image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + description: "image is the rados image name.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" keyring: - description: "keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + default: "/etc/ceph/keyring" + description: "keyring is the path to key ring for RBDUser.\nDefault is /etc/ceph/keyring.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" monitors: - description: "monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + description: "monitors is a collection of Ceph monitors.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" pool: - description: "pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + default: "rbd" + description: "pool is the rados pool name.\nDefault is rbd.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" readOnly: - description: "readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + description: "readOnly here will force the ReadOnly setting in VolumeMounts.\nDefaults to false.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "boolean" secretRef: - description: "secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + description: "secretRef is name of the authentication secret for RBDUser. If provided\noverrides keyring.\nDefault is nil.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" user: - description: "user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" + default: "admin" + description: "user is the rados user name.\nDefault is admin.\nMore info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it" type: "string" required: - "image" @@ -3890,7 +4326,8 @@ spec: description: "scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes." properties: fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Default is \"xfs\"." + default: "xfs" + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\".\nDefault is \"xfs\"." type: "string" gateway: description: "gateway is the host address of the ScaleIO API Gateway." @@ -3899,20 +4336,23 @@ spec: description: "protectionDomain is the name of the ScaleIO Protection Domain for the configured storage." type: "string" readOnly: - description: "readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly Defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" secretRef: - description: "secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail." + description: "secretRef references to the secret for ScaleIO user and other\nsensitive information. If this is not provided, Login operation will fail." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" sslEnabled: description: "sslEnabled Flag enable/disable SSL communication with Gateway, default false" type: "boolean" storageMode: - description: "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned." + default: "ThinProvisioned" + description: "storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned.\nDefault is ThinProvisioned." type: "string" storagePool: description: "storagePool is the ScaleIO Storage Pool associated with the protection domain." @@ -3921,7 +4361,7 @@ spec: description: "system is the name of the storage system as configured in ScaleIO." type: "string" volumeName: - description: "volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source." + description: "volumeName is the name of a volume already created in the ScaleIO system\nthat is associated with this volume source." type: "string" required: - "gateway" @@ -3929,14 +4369,14 @@ spec: - "system" type: "object" secret: - description: "secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret" + description: "secret represents a secret that should populate this volume.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret" properties: defaultMode: - description: "defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "defaultMode is Optional: mode bits used to set permissions on created files by default.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values\nfor mode bits. Defaults to 0644.\nDirectories within the path are not affected by this setting.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" items: - description: "items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'." + description: "items If unspecified, each key-value pair in the Data field of the referenced\nSecret will be projected into the volume as a file whose name is the\nkey and content is the value. If specified, the listed keys will be\nprojected into the specified paths, and unlisted keys will not be\npresent. If a key is specified which is not present in the Secret,\nthe volume setup will error unless it is marked optional. Paths must be\nrelative and may not contain the '..' path or start with '..'." items: description: "Maps a string key to a path within a volume." properties: @@ -3944,52 +4384,55 @@ spec: description: "key is the key to project." type: "string" mode: - description: "mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set." + description: "mode is Optional: mode bits used to set permissions on this file.\nMust be an octal value between 0000 and 0777 or a decimal value between 0 and 511.\nYAML accepts both octal and decimal values, JSON requires decimal values for mode bits.\nIf not specified, the volume defaultMode will be used.\nThis might be in conflict with other options that affect the file\nmode, like fsGroup, and the result can be other mode bits set." format: "int32" type: "integer" path: - description: "path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'." + description: "path is the relative path of the file to map the key to.\nMay not be an absolute path.\nMay not contain the path element '..'.\nMay not start with the string '..'." type: "string" required: - "key" - "path" type: "object" type: "array" + x-kubernetes-list-type: "atomic" optional: description: "optional field specify whether the Secret or its keys must be defined" type: "boolean" secretName: - description: "secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret" + description: "secretName is the name of the secret in the pod's namespace to use.\nMore info: https://kubernetes.io/docs/concepts/storage/volumes#secret" type: "string" type: "object" storageos: description: "storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes." properties: fsType: - description: "fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." + description: "fsType is the filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" readOnly: - description: "readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts." + description: "readOnly defaults to false (read/write). ReadOnly here will force\nthe ReadOnly setting in VolumeMounts." type: "boolean" secretRef: - description: "secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted." + description: "secretRef specifies the secret to use for obtaining the StorageOS API\ncredentials. If not specified, default values will be attempted." 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" type: "object" + x-kubernetes-map-type: "atomic" volumeName: - description: "volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace." + description: "volumeName is the human-readable name of the StorageOS volume. Volume\nnames are only unique within a namespace." type: "string" volumeNamespace: - description: "volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to \"default\" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created." + description: "volumeNamespace specifies the scope of the volume within StorageOS. If no\nnamespace is specified then the Pod's namespace will be used. This allows the\nKubernetes name scoping to be mirrored within StorageOS for tighter integration.\nSet VolumeName to any name to override the default behaviour.\nSet to \"default\" if you are not using namespaces within StorageOS.\nNamespaces that do not pre-exist within StorageOS will be created." type: "string" type: "object" vsphereVolume: description: "vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine" properties: fsType: - description: "fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." + description: "fsType is filesystem type to mount.\nMust be a filesystem type supported by the host operating system.\nEx. \"ext4\", \"xfs\", \"ntfs\". Implicitly inferred to be \"ext4\" if unspecified." type: "string" storagePolicyID: description: "storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName." @@ -4052,7 +4495,7 @@ spec: description: "Represents the running state of the Mattermost instance" type: "string" updatedReplicas: - description: "Total number of non-terminated pods targeted by this Mattermost deployment that are running with the desired image." + description: "Total number of non-terminated pods targeted by this Mattermost deployment\nthat are running with the desired image." format: "int32" type: "integer" version: @@ -4064,9 +4507,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/clusterinstallations.yaml b/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/clusterinstallations.yaml index a5777be4d..2fd4e19ef 100644 --- a/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/clusterinstallations.yaml +++ b/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/clusterinstallations.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.7.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "clusterinstallations.mattermost.com" spec: group: "mattermost.com" @@ -36,15 +36,15 @@ spec: description: "ClusterInstallation is the Schema for the clusterinstallations 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" spec: - description: "Specification of the desired behavior of the Mattermost cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status" + description: "Specification of the desired behavior of the Mattermost cluster. More info:\nhttps://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status" properties: affinity: description: "If specified, affinity will define the pod's scheduling constraints" @@ -53,9 +53,9 @@ spec: description: "Describes node affinity scheduling rules for the pod." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node matches the corresponding matchExpressions; the\nnode(s) with the highest sum are the most preferred." items: - description: "An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." + description: "An empty preferred scheduling term matches all objects with implicit weight 0\n(i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op)." properties: preference: description: "A node selector term, associated with the corresponding weight." @@ -63,46 +63,51 @@ spec: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" + x-kubernetes-map-type: "atomic" weight: description: "Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100." format: "int32" @@ -112,67 +117,75 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to an update), the system\nmay or may not try to eventually evict the pod from its node." properties: nodeSelectorTerms: description: "Required. A list of node selector terms. The terms are ORed." items: - description: "A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm." + description: "A null or empty node selector term matches no objects. The requirements of\nthem are ANDed.\nThe TopologySelectorTerm type implements a subset of the NodeSelectorTerm." properties: matchExpressions: description: "A list of node selector requirements by node's labels." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchFields: description: "A list of node selector requirements by node's fields." items: - description: "A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A node selector requirement is a selector that contains values, a key, and an operator\nthat relates the key and values." properties: key: description: "The label key that the selector applies to." type: "string" operator: - description: "Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." + description: "Represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt." type: "string" values: - description: "An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch." + description: "An array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. If the operator is Gt or Lt, the values\narray must have a single element, which will be interpreted as an integer.\nThis array is replaced during a strategic merge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" + x-kubernetes-map-type: "atomic" type: "array" + x-kubernetes-list-type: "atomic" required: - "nodeSelectorTerms" type: "object" + x-kubernetes-map-type: "atomic" type: "object" podAffinity: description: "Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -180,78 +193,97 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -259,89 +291,110 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" podAntiAffinity: description: "Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s))." properties: preferredDuringSchedulingIgnoredDuringExecution: - description: "The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding \"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred." + description: "The scheduler will prefer to schedule pods to nodes that satisfy\nthe anti-affinity expressions specified by this field, but it may choose\na node that violates one or more of the expressions. The node that is\nmost preferred is the one with the greatest sum of weights, i.e.\nfor each node that meets all of the scheduling requirements (resource\nrequest, requiredDuringScheduling anti-affinity expressions, etc.),\ncompute a sum by iterating through the elements of this field and adding\n\"weight\" to the sum if the node has pods which matches the corresponding podAffinityTerm; the\nnode(s) with the highest sum are the most preferred." items: description: "The weights of all of the matched WeightedPodAffinityTerm fields are added per-node to find the most preferred node(s)" properties: @@ -349,78 +402,97 @@ spec: description: "Required. A pod affinity term, associated with the corresponding weight." properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" weight: - description: "weight associated with matching the corresponding podAffinityTerm, in the range 1-100." + description: "weight associated with matching the corresponding podAffinityTerm,\nin the range 1-100." format: "int32" type: "integer" required: @@ -428,83 +500,104 @@ spec: - "weight" type: "object" type: "array" + x-kubernetes-list-type: "atomic" requiredDuringSchedulingIgnoredDuringExecution: - description: "If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied." + description: "If the anti-affinity requirements specified by this field are not met at\nscheduling time, the pod will not be scheduled onto the node.\nIf the anti-affinity requirements specified by this field cease to be met\nat some point during pod execution (e.g. due to a pod label update), the\nsystem may or may not try to eventually evict the pod from its node.\nWhen there are multiple elements, the lists of nodes corresponding to each\npodAffinityTerm are intersected, i.e. all terms must be satisfied." items: - description: "Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running" + description: "Defines a set of pods (namely those matching the labelSelector\nrelative to the given namespace(s)) that this pod should be\nco-located (affinity) or not co-located (anti-affinity) with,\nwhere co-located is defined as running on a node whose value of\nthe label with key matches that of any node on which\na pod of the set of pods is running" properties: labelSelector: - description: "A label query over a set of resources, in this case pods." + description: "A label query over a set of resources, in this case pods.\nIf it's null, this PodAffinityTerm matches with no Pods." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" + matchLabelKeys: + description: "MatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both matchLabelKeys and labelSelector.\nAlso, matchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" + mismatchLabelKeys: + description: "MismatchLabelKeys is a set of pod label keys to select which pods will\nbe taken into consideration. The keys are used to lookup values from the\nincoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)`\nto select the group of existing pods which pods will be taken into consideration\nfor the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming\npod labels will be ignored. The default value is empty.\nThe same key is forbidden to exist in both mismatchLabelKeys and labelSelector.\nAlso, mismatchLabelKeys cannot be set when labelSelector isn't set.\nThis is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default)." + items: + type: "string" + type: "array" + x-kubernetes-list-type: "atomic" namespaceSelector: - description: "A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means \"this pod's namespace\". An empty selector ({}) matches all namespaces." + description: "A label query over the set of namespaces that the term applies to.\nThe term is applied to the union of the namespaces selected by this field\nand the ones listed in the namespaces field.\nnull selector and null or empty namespaces list means \"this pod's namespace\".\nAn empty selector ({}) matches all namespaces." properties: matchExpressions: description: "matchExpressions is a list of label selector requirements. The requirements are ANDed." items: - description: "A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values." + description: "A label selector requirement is a selector that contains values, a key, and an operator that\nrelates the key and values." properties: key: description: "key is the label key that the selector applies to." type: "string" operator: - description: "operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist." + description: "operator represents a key's relationship to a set of values.\nValid operators are In, NotIn, Exists and DoesNotExist." type: "string" values: - description: "values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch." + description: "values is an array of string values. If the operator is In or NotIn,\nthe values array must be non-empty. If the operator is Exists or DoesNotExist,\nthe values array must be empty. This array is replaced during a strategic\nmerge patch." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" required: - "key" - "operator" type: "object" type: "array" + x-kubernetes-list-type: "atomic" matchLabels: additionalProperties: type: "string" - description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is \"key\", the operator is \"In\", and the values array contains only \"value\". The requirements are ANDed." + description: "matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels\nmap is equivalent to an element of matchExpressions, whose key field is \"key\", the\noperator is \"In\", and the values array contains only \"value\". The requirements are ANDed." type: "object" type: "object" + x-kubernetes-map-type: "atomic" namespaces: - description: "namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." + description: "namespaces specifies a static list of namespace names that the term applies to.\nThe term is applied to the union of the namespaces listed in this field\nand the ones selected by namespaceSelector.\nnull or empty namespaces list and null namespaceSelector means \"this pod's namespace\"." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" topologyKey: - description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed." + description: "This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching\nthe labelSelector in the specified namespaces, where co-located is defined as running on a node\nwhose value of the label with key topologyKey matches that of any node on which any of the\nselected pods is running.\nEmpty topologyKey is not allowed." type: "string" required: - "topologyKey" type: "object" type: "array" + x-kubernetes-list-type: "atomic" type: "object" type: "object" blueGreen: @@ -514,10 +607,10 @@ spec: description: "Blue defines the blue deployment." properties: image: - description: "Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Image defines the base Docker image that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" ingressName: - description: "IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds." + description: "IngressName defines the ingress name that will be used by the deployment.\nThis option is not used for Canary builds." type: "string" name: description: "Name defines the name of the deployment" @@ -527,7 +620,7 @@ spec: type: "string" type: "object" version: - description: "Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Version defines the Docker image version that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" type: "object" enable: @@ -537,10 +630,10 @@ spec: description: "Green defines the green deployment." properties: image: - description: "Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Image defines the base Docker image that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" ingressName: - description: "IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds." + description: "IngressName defines the ingress name that will be used by the deployment.\nThis option is not used for Canary builds." type: "string" name: description: "Name defines the name of the deployment" @@ -550,7 +643,7 @@ spec: type: "string" type: "object" version: - description: "Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Version defines the Docker image version that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" type: "object" productionDeployment: @@ -564,10 +657,10 @@ spec: description: "Deployment defines the canary deployment." properties: image: - description: "Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Image defines the base Docker image that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" ingressName: - description: "IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds." + description: "IngressName defines the ingress name that will be used by the deployment.\nThis option is not used for Canary builds." type: "string" name: description: "Name defines the name of the deployment" @@ -577,7 +670,7 @@ spec: type: "string" type: "object" version: - description: "Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled." + description: "Version defines the Docker image version that will be used for the deployment.\nRequired when BlueGreen or Canary is enabled." type: "string" type: "object" enable: @@ -603,22 +696,25 @@ spec: description: "Defines the object storage url for uploading backups." type: "string" initBucketURL: - description: "Defines the AWS S3 bucket where the Database Backup is stored. The operator will download the file to restore the data." + description: "Defines the AWS S3 bucket where the Database Backup is stored.\nThe operator will download the file to restore the data." type: "string" replicas: - description: "Defines the number of database replicas. For redundancy use at least 2 replicas. Setting this will override the number of replicas set by 'Size'." + description: "Defines the number of database replicas.\nFor redundancy use at least 2 replicas.\nSetting this will override the number of replicas set by 'Size'." format: "int32" type: "integer" resources: description: "Defines the resource requests and limits for the database pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -634,7 +730,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -643,18 +739,18 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" secret: - description: "Optionally enter the name of an already-existing Secret for connecting to the database. This secret should be configured as follows: \n User-Managed Database - Key: DB_CONNECTION_STRING | Value: Operator-Managed Database - Key: ROOT_PASSWORD | Value: - Key: USER | Value: - Key: PASSWORD | Value: - Key: DATABASE Value: \n Notes: If you define all secret values for both User-Managed and Operator-Managed database types, the User-Managed connection string will take precedence and the Operator-Managed values will be ignored. If the secret is left blank, the default behavior is to use an Operator-Managed database with strong randomly-generated database credentials." + description: "Optionally enter the name of an already-existing Secret for connecting to\nthe database. This secret should be configured as follows:\n\nUser-Managed Database\n - Key: DB_CONNECTION_STRING | Value: \nOperator-Managed Database\n - Key: ROOT_PASSWORD | Value: \n - Key: USER | Value: \n - Key: PASSWORD | Value: \n - Key: DATABASE Value: \n\nNotes:\n If you define all secret values for both User-Managed and\n Operator-Managed database types, the User-Managed connection string will\n take precedence and the Operator-Managed values will be ignored. If the\n secret is left blank, the default behavior is to use an Operator-Managed\n database with strong randomly-generated database credentials." type: "string" storageSize: description: "Defines the storage size for the database. ie 50Gi" pattern: "^([+-]?[0-9.]+)([eEinumkKMGTP]*[-+]?[0-9]*)$" type: "string" type: - description: "Defines the type of database to use for an Operator-Managed database. This value is ignored when using a User-Managed database." + description: "Defines the type of database to use for an Operator-Managed database. This\nvalue is ignored when using a User-Managed database." type: "string" version: description: "Defines the cluster version for the database to use" @@ -690,24 +786,26 @@ spec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -716,7 +814,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -724,7 +822,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -734,6 +832,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -741,24 +840,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -771,17 +870,17 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" @@ -794,7 +893,7 @@ spec: description: "Name of the environment variable. Must be a C_IDENTIFIER." type: "string" value: - description: "Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. \"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to \"\"." + description: "Variable references $(VAR_NAME) are expanded\nusing the previously defined environment variables in the container and\nany service environment variables. If a variable cannot be resolved,\nthe reference in the input string will be unchanged. Double $$ are reduced\nto a single $, which allows for escaping the $(VAR_NAME) syntax: i.e.\n\"$$(VAR_NAME)\" will produce the string literal \"$(VAR_NAME)\".\nEscaped references will never be expanded, regardless of whether the variable\nexists or not.\nDefaults to \"\"." type: "string" valueFrom: description: "Source for the environment variable's value. Cannot be used if value is not empty." @@ -806,7 +905,8 @@ spec: description: "The key to select." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the ConfigMap or its key must be defined" @@ -814,8 +914,9 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" fieldRef: - description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." + description: "Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`,\nspec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs." properties: apiVersion: description: "Version of the schema the FieldPath is written in terms of, defaults to \"v1\"." @@ -826,8 +927,9 @@ spec: required: - "fieldPath" type: "object" + x-kubernetes-map-type: "atomic" resourceFieldRef: - description: "Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." + description: "Selects a resource of the container: only resources limits and requests\n(limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported." properties: containerName: description: "Container name: required for volumes, optional for env vars" @@ -845,6 +947,7 @@ spec: required: - "resource" type: "object" + x-kubernetes-map-type: "atomic" secretKeyRef: description: "Selects a key of a secret in the pod's namespace" properties: @@ -852,7 +955,8 @@ spec: description: "The key of the secret to select from. Must be a valid secret key." type: "string" 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?" + default: "" + description: "Name of the referent.\nThis field is effectively required, but due to backwards compatibility is\nallowed to be empty. Instances of this type with an empty value here are\nalmost certainly wrong.\nMore info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names" type: "string" optional: description: "Specify whether the Secret or its key must be defined" @@ -860,6 +964,7 @@ spec: required: - "key" type: "object" + x-kubernetes-map-type: "atomic" type: "object" required: - "name" @@ -869,7 +974,7 @@ spec: description: "Secret that contains the mattermost license" type: "string" migrate: - description: "Migrate specifies that the ClusterInstallation CR should be migrated to the Mattermost CR. CAUTION: Some features like BlueGreen or Canary are not supported with a new Custom Resource therefore migration should be performed with extra caution." + description: "Migrate specifies that the ClusterInstallation CR should be migrated to the Mattermost CR.\nCAUTION: Some features like BlueGreen or Canary are not supported with a new Custom Resource\ntherefore migration should be performed with extra caution." type: "boolean" minio: description: "Minio defines the configuration of Minio for a ClusterInstallation." @@ -881,19 +986,22 @@ spec: description: "Set to use an external MinIO deployment or S3. Must also set 'Secret' and 'ExternalBucket'." type: "string" replicas: - description: "Defines the number of Minio replicas. Supply 1 to run Minio in standalone mode with no redundancy. Supply 4 or more to run Minio in distributed mode. Note that it is not possible to upgrade Minio from standalone to distributed mode. Setting this will override the number of replicas set by 'Size'. More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html" + description: "Defines the number of Minio replicas.\nSupply 1 to run Minio in standalone mode with no redundancy.\nSupply 4 or more to run Minio in distributed mode.\nNote that it is not possible to upgrade Minio from standalone to distributed mode.\nSetting this will override the number of replicas set by 'Size'.\nMore info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html" format: "int32" type: "integer" resources: description: "Defines the resource requests and limits for the Minio pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -909,7 +1017,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -918,11 +1026,11 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" secret: - description: "Optionally enter the name of already existing secret. Secret should have two values: \"accesskey\" and \"secretkey\". Required when \"ExternalURL\" is set." + description: "Optionally enter the name of already existing secret.\nSecret should have two values: \"accesskey\" and \"secretkey\".\nRequired when \"ExternalURL\" is set." type: "string" storageSize: description: "Defines the storage size for Minio. ie 50Gi" @@ -932,7 +1040,7 @@ spec: nodeSelector: additionalProperties: type: "string" - description: "NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" + description: "NodeSelector is a selector which must be true for the pod to fit on a node.\nSelector which must match a node's labels for the pod to be scheduled on that node.\nMore info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" type: "object" readinessProbe: description: "Defines the probe to check if the application is ready to accept traffic." @@ -941,24 +1049,26 @@ spec: description: "Exec specifies the action to take." properties: command: - description: "Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy." + description: "Command is the command line to execute inside the container, the working directory for the\ncommand is root ('/') in the container's filesystem. The command is simply exec'd, it is\nnot run inside a shell, so traditional shell instructions ('|', etc) won't work. To use\na shell, you need to explicitly call out to that shell.\nExit status of 0 is treated as live/healthy and non-zero is unhealthy." items: type: "string" type: "array" + x-kubernetes-list-type: "atomic" type: "object" failureThreshold: - description: "Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1." + description: "Minimum consecutive failures for the probe to be considered failed after having succeeded.\nDefaults to 3. Minimum value is 1." format: "int32" type: "integer" grpc: - description: "GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate." + description: "GRPC specifies an action involving a GRPC port." properties: port: description: "Port number of the gRPC service. Number must be in the range 1 to 65535." format: "int32" type: "integer" service: - description: "Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). \n If this is not specified, the default behavior is defined by gRPC." + default: "" + description: "Service is the name of the service to place in the gRPC HealthCheckRequest\n(see https://github.com/grpc/grpc/blob/master/doc/health-checking.md).\n\nIf this is not specified, the default behavior is defined by gRPC." type: "string" required: - "port" @@ -967,7 +1077,7 @@ spec: description: "HTTPGet specifies the http request to perform." properties: host: - description: "Host name to connect to, defaults to the pod IP. You probably want to set \"Host\" in httpHeaders instead." + description: "Host name to connect to, defaults to the pod IP. You probably want to set\n\"Host\" in httpHeaders instead." type: "string" httpHeaders: description: "Custom headers to set in the request. HTTP allows repeated headers." @@ -975,7 +1085,7 @@ spec: description: "HTTPHeader describes a custom header to be used in HTTP probes" properties: name: - description: "The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header." + description: "The header field name.\nThis will be canonicalized upon output, so case-variant names will be understood as the same header." type: "string" value: description: "The header field value" @@ -985,6 +1095,7 @@ spec: - "value" type: "object" type: "array" + x-kubernetes-list-type: "atomic" path: description: "Path to access on the HTTP server." type: "string" @@ -992,24 +1103,24 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Name or number of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true scheme: - description: "Scheme to use for connecting to the host. Defaults to HTTP." + description: "Scheme to use for connecting to the host.\nDefaults to HTTP." type: "string" required: - "port" type: "object" initialDelaySeconds: - description: "Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after the container has started before liveness probes are initiated.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" periodSeconds: - description: "How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1." + description: "How often (in seconds) to perform the probe.\nDefault to 10 seconds. Minimum value is 1." format: "int32" type: "integer" successThreshold: - description: "Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1." + description: "Minimum consecutive successes for the probe to be considered successful after having failed.\nDefaults to 1. Must be 1 for liveness and startup. Minimum value is 1." format: "int32" type: "integer" tcpSocket: @@ -1022,22 +1133,22 @@ spec: anyOf: - type: "integer" - type: "string" - description: "Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME." + description: "Number or name of the port to access on the container.\nNumber must be in the range 1 to 65535.\nName must be an IANA_SVC_NAME." x-kubernetes-int-or-string: true required: - "port" type: "object" terminationGracePeriodSeconds: - description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset." + description: "Optional duration in seconds the pod needs to terminate gracefully upon probe failure.\nThe grace period is the duration in seconds after the processes running in the pod are sent\na termination signal and the time when the processes are forcibly halted with a kill signal.\nSet this value longer than the expected cleanup time for your process.\nIf this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this\nvalue overrides the value provided by the pod spec.\nValue must be non-negative integer. The value zero indicates stop immediately via\nthe kill signal (no opportunity to shut down).\nThis is a beta field and requires enabling ProbeTerminationGracePeriod feature gate.\nMinimum value is 1. spec.terminationGracePeriodSeconds is used if unset." format: "int64" type: "integer" timeoutSeconds: - description: "Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" + description: "Number of seconds after which the probe times out.\nDefaults to 1 second. Minimum value is 1.\nMore info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes" format: "int32" type: "integer" type: "object" replicas: - description: "Replicas defines the number of replicas to use for the Mattermost app servers. Setting this will override the number of replicas set by 'Size'." + description: "Replicas defines the number of replicas to use for the Mattermost app servers.\nSetting this will override the number of replicas set by 'Size'." format: "int32" type: "integer" resourceLabels: @@ -1048,12 +1159,15 @@ spec: description: "Defines the resource requests and limits for the Mattermost app server pods." properties: claims: - description: "Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. \n This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. \n This field is immutable. It can only be set for containers." + description: "Claims lists the names of resources, defined in spec.resourceClaims,\nthat are used by this container.\n\nThis is an alpha field and requires enabling the\nDynamicResourceAllocation feature gate.\n\nThis field is immutable. It can only be set for containers." items: description: "ResourceClaim references one entry in PodSpec.ResourceClaims." properties: name: - description: "Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container." + description: "Name must match the name of one entry in pod.spec.resourceClaims of\nthe Pod where this field is used. It makes that resource available\ninside a container." + type: "string" + request: + description: "Request is the name chosen for a request in the referenced claim.\nIf empty, everything from the claim is made available, otherwise\nonly the result of this request." type: "string" required: - "name" @@ -1069,7 +1183,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Limits describes the maximum amount of compute resources allowed.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" requests: additionalProperties: @@ -1078,7 +1192,7 @@ spec: - type: "string" pattern: "^(\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\\+|-)?(([0-9]+(\\.[0-9]*)?)|(\\.[0-9]+))))?$" x-kubernetes-int-or-string: true - description: "Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" + description: "Requests describes the minimum amount of compute resources required.\nIf Requests is omitted for a container, it defaults to Limits if that is explicitly specified,\notherwise to an implementation-defined value. Requests cannot exceed Limits.\nMore info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/" type: "object" type: "object" serviceAnnotations: @@ -1086,7 +1200,7 @@ spec: type: "string" type: "object" size: - description: "Size defines the size of the ClusterInstallation. This is typically specified in number of users. This will override replica and resource requests/limits appropriately for the provided number of users. This is a write-only field - its value is erased after setting appropriate values of resources. Accepted values are: 100users, 1000users, 5000users, 10000users, 250000users. If replicas and resource requests/limits are not specified, and Size is not provided the configuration for 5000users will be applied. Setting 'Replicas', 'Resources', 'Minio.Replicas', 'Minio.Resource', 'Database.Replicas', or 'Database.Resources' will override the values set by Size. Setting new Size will override previous values regardless if set by Size or manually." + description: "Size defines the size of the ClusterInstallation. This is typically specified in number of users.\nThis will override replica and resource requests/limits appropriately for the provided number of users.\nThis is a write-only field - its value is erased after setting appropriate values of resources.\nAccepted values are: 100users, 1000users, 5000users, 10000users, 250000users. If replicas and resource\nrequests/limits are not specified, and Size is not provided the configuration for 5000users will be applied.\nSetting 'Replicas', 'Resources', 'Minio.Replicas', 'Minio.Resource', 'Database.Replicas',\nor 'Database.Resources' will override the values set by Size.\nSetting new Size will override previous values regardless if set by Size or manually." type: "string" useIngressTLS: type: "boolean" @@ -1099,7 +1213,7 @@ spec: - "ingressName" type: "object" status: - description: "Most recent observed status of the Mattermost cluster. Read-only. Not included when requesting from the apiserver, only from the Mattermost Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status" + description: "Most recent observed status of the Mattermost cluster. Read-only. Not\nincluded when requesting from the apiserver, only from the Mattermost\nOperator API itself. More info:\nhttps://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status" properties: blueName: description: "The name of the blue deployment in BlueGreen" @@ -1129,7 +1243,7 @@ spec: description: "Represents the running state of the Mattermost instance" type: "string" updatedReplicas: - description: "Total number of non-terminated pods targeted by this Mattermost deployment that are running with the desired image." + description: "Total number of non-terminated pods targeted by this Mattermost deployment\nthat are running with the desired image." format: "int32" type: "integer" version: @@ -1143,9 +1257,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/mattermostrestoredbs.yaml b/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/mattermostrestoredbs.yaml index c22957552..2138998dd 100644 --- a/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/mattermostrestoredbs.yaml +++ b/crd-catalog/mattermost/mattermost-operator/mattermost.com/v1alpha1/mattermostrestoredbs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.7.0" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "mattermostrestoredbs.mattermost.com" spec: group: "mattermost.com" @@ -28,10 +28,10 @@ spec: description: "MattermostRestoreDB is the Schema for the mattermostrestoredbs 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" + description: "APIVersion defines the versioned schema of this representation of an object.\nServers should convert recognized schemas to the latest internal value, and\nmay reject unrecognized values.\nMore 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" + description: "Kind is a string value representing the REST resource this object represents.\nServers may infer this from the endpoint the client submits requests to.\nCannot be updated.\nIn CamelCase.\nMore info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds" type: "string" metadata: type: "object" @@ -45,16 +45,16 @@ spec: description: "MattermostClusterName defines the ClusterInstallation name." type: "string" mattermostDBName: - description: "MattermostDBName defines the database name. Need to set if different from `mattermost`." + description: "MattermostDBName defines the database name.\nNeed to set if different from `mattermost`." type: "string" mattermostDBPassword: - description: "MattermostDBPassword defines the user password to access the database. Need to set if the user is different from the one created by the operator." + description: "MattermostDBPassword defines the user password to access the database.\nNeed to set if the user is different from the one created by the operator." type: "string" mattermostDBUser: - description: "MattermostDBUser defines the user to access the database. Need to set if the user is different from `mmuser`." + description: "MattermostDBUser defines the user to access the database.\nNeed to set if the user is different from `mmuser`." type: "string" restoreSecret: - description: "RestoreSecret defines the secret that holds the credentials to MySQL Operator be able to download the DB backup file" + description: "RestoreSecret defines the secret that holds the credentials to\nMySQL Operator be able to download the DB backup file" type: "string" type: "object" status: @@ -73,9 +73,3 @@ spec: storage: true subresources: status: {} -status: - acceptedNames: - kind: "" - plural: "" - conditions: [] - storedVersions: [] diff --git a/crd-catalog/openshift/hive/hive.openshift.io/v1/clusterdeprovisions.yaml b/crd-catalog/openshift/hive/hive.openshift.io/v1/clusterdeprovisions.yaml index 4c6ce0bc1..aba1a2783 100644 --- a/crd-catalog/openshift/hive/hive.openshift.io/v1/clusterdeprovisions.yaml +++ b/crd-catalog/openshift/hive/hive.openshift.io/v1/clusterdeprovisions.yaml @@ -94,6 +94,9 @@ spec: azure: description: "Azure contains Azure-specific deprovision settings" properties: + baseDomainResourceGroupName: + description: "BaseDomainResourceGroupName is the name of the resource group where the cluster's DNS records\nwere created, if different from the default or the custom ResourceGroupName." + type: "string" cloudName: description: "cloudName is the name of the Azure cloud environment which can be used to configure the Azure SDK\nwith the appropriate Azure API endpoints.\nIf empty, the value is equal to \"AzurePublicCloud\"." enum: diff --git a/crd-catalog/openshift/hive/hive.openshift.io/v1/machinepools.yaml b/crd-catalog/openshift/hive/hive.openshift.io/v1/machinepools.yaml index 1b8e78c7d..55a12011a 100644 --- a/crd-catalog/openshift/hive/hive.openshift.io/v1/machinepools.yaml +++ b/crd-catalog/openshift/hive/hive.openshift.io/v1/machinepools.yaml @@ -357,6 +357,11 @@ spec: openstack: description: "OpenStack is the configuration used when installing on OpenStack." properties: + additionalSecurityGroupIDs: + description: "AdditionalSecurityGroupIDs contains IDs of additional security groups for machines, where each ID\nis presented in the format sg-xxxx." + items: + type: "string" + type: "array" flavor: description: "Flavor defines the OpenStack Nova flavor.\neg. m1.large\nThe json key here differs from the installer which uses both \"computeFlavor\" and type \"type\" depending on which\ntype you're looking at, and the resulting field on the MachineSet is \"flavor\". We are opting to stay consistent\nwith the end result." type: "string" diff --git a/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml b/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml index 1f1e0cdd6..124a2c192 100644 --- a/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml +++ b/crd-catalog/percona/percona-server-mongodb-operator/psmdb.percona.com/v1/perconaservermongodbs.yaml @@ -6379,6 +6379,8 @@ spec: type: "object" host: type: "string" + priority: + type: "integer" tags: additionalProperties: type: "string" @@ -14137,6 +14139,8 @@ spec: type: "object" host: type: "string" + priority: + type: "integer" tags: additionalProperties: type: "string" diff --git a/crd-catalog/projectcalico/calico/crd.projectcalico.org/v1/felixconfigurations.yaml b/crd-catalog/projectcalico/calico/crd.projectcalico.org/v1/felixconfigurations.yaml index 5a6d948fc..013eb93c6 100644 --- a/crd-catalog/projectcalico/calico/crd.projectcalico.org/v1/felixconfigurations.yaml +++ b/crd-catalog/projectcalico/calico/crd.projectcalico.org/v1/felixconfigurations.yaml @@ -54,6 +54,19 @@ spec: bpfConnectTimeLoadBalancingEnabled: description: "BPFConnectTimeLoadBalancingEnabled when in BPF mode, controls whether Felix installs the connection-time load balancer. The connect-time load balancer is required for the host to be able to reach Kubernetes services and it improves the performance of pod-to-service connections. The only reason to disable it is for debugging purposes. \n Deprecated: Use BPFConnectTimeLoadBalancing [Default: true]" type: "boolean" + bpfConntrackLogLevel: + description: "BPFConntrackLogLevel controls the log level of the BPF conntrack cleanup program, which runs periodically to clean up expired BPF conntrack entries. [Default: Off]." + enum: + - "Off" + - "Debug" + type: "string" + bpfConntrackMode: + description: "BPFConntrackCleanupMode controls how BPF conntrack entries are cleaned up. `Auto` will use a BPF program if supported, falling back to userspace if not. `Userspace` will always use the userspace cleanup code. `BPFProgram` will always use the BPF program (failing if not supported). [Default: Auto]" + enum: + - "Auto" + - "Userspace" + - "BPFProgram" + type: "string" bpfDSROptoutCIDRs: description: "BPFDSROptoutCIDRs is a list of CIDRs which are excluded from DSR. That is, clients in those CIDRs will access service node ports as if BPFExternalServiceMode was set to Tunnel." items: @@ -126,6 +139,10 @@ spec: bpfMapSizeConntrack: description: "BPFMapSizeConntrack sets the size for the conntrack map. This map must be large enough to hold an entry for each active connection. Warning: changing the size of the conntrack map can cause disruption." type: "integer" + bpfMapSizeConntrackCleanupQueue: + description: "BPFMapSizeConntrackCleanupQueue sets the size for the map used to hold NAT conntrack entries that are queued for cleanup. This should be big enough to hold all the NAT entries that expire within one cleanup interval." + minimum: 1.0 + type: "integer" bpfMapSizeIPSets: description: "BPFMapSizeIPSets sets the size for ipsets map. The IP sets map must be large enough to hold an entry for each endpoint matched by every selector in the source/destination matches in network policy. Selectors such as \"all()\" can result in large numbers of entries (one entry per endpoint in that case)." type: "integer" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/alertmanagers.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/alertmanagers.yaml index e61811935..f2560442a 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/alertmanagers.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/alertmanagers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "alertmanagers.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -5215,9 +5215,11 @@ spec: type: "string" status: description: "Status of the condition." + minLength: 1 type: "string" type: description: "Type of the condition being reported." + minLength: 1 type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/podmonitors.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/podmonitors.yaml index 6fcebb633..ebfa2eb02 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/podmonitors.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/podmonitors.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "podmonitors.monitoring.coreos.com" spec: group: "monitoring.coreos.com" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/probes.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/probes.yaml index fa5fdd6ef..a262e74c8 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/probes.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/probes.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "probes.monitoring.coreos.com" spec: group: "monitoring.coreos.com" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml index cb591ec7a..fdf21fa7c 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheuses.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "prometheuses.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -7755,9 +7755,11 @@ spec: type: "string" status: description: "Status of the condition." + minLength: 1 type: "string" type: description: "Type of the condition being reported." + minLength: 1 type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheusrules.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheusrules.yaml index a71e38093..3c78b20cb 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheusrules.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/prometheusrules.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "prometheusrules.monitoring.coreos.com" spec: group: "monitoring.coreos.com" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/servicemonitors.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/servicemonitors.yaml index 6b0fb6bb9..1ee960e33 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/servicemonitors.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/servicemonitors.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "servicemonitors.monitoring.coreos.com" spec: group: "monitoring.coreos.com" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/thanosrulers.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/thanosrulers.yaml index d33860060..da967dc37 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/thanosrulers.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1/thanosrulers.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "thanosrulers.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -4811,9 +4811,11 @@ spec: type: "string" status: description: "Status of the condition." + minLength: 1 type: "string" type: description: "Type of the condition being reported." + minLength: 1 type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/alertmanagerconfigs.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/alertmanagerconfigs.yaml index 406baf65d..2fbd53a0a 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/alertmanagerconfigs.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/alertmanagerconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "alertmanagerconfigs.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -4734,6 +4734,10 @@ spec: message: description: "Message template" type: "string" + messageThreadID: + description: "The Telegram Group Topic ID.\nIt requires Alertmanager >= 0.26.0." + format: "int64" + type: "integer" parseMode: description: "Parse mode for telegram message" enum: diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml index 190156e96..c3679ab3d 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/prometheusagents.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "prometheusagents.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -6335,9 +6335,11 @@ spec: type: "string" status: description: "Status of the condition." + minLength: 1 type: "string" type: description: "Type of the condition being reported." + minLength: 1 type: "string" required: - "lastTransitionTime" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml index 755d4e6e2..ffe5a1d17 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1alpha1/scrapeconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "scrapeconfigs.monitoring.coreos.com" spec: group: "monitoring.coreos.com" diff --git a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1beta1/alertmanagerconfigs.yaml b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1beta1/alertmanagerconfigs.yaml index e22fb9110..c8aace24f 100644 --- a/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1beta1/alertmanagerconfigs.yaml +++ b/crd-catalog/prometheus-operator/prometheus-operator/monitoring.coreos.com/v1beta1/alertmanagerconfigs.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.16.4" + controller-gen.kubebuilder.io/version: "v0.16.5" name: "alertmanagerconfigs.monitoring.coreos.com" spec: group: "monitoring.coreos.com" @@ -4625,6 +4625,10 @@ spec: message: description: "Message template" type: "string" + messageThreadID: + description: "The Telegram Group Topic ID.\nIt requires Alertmanager >= 0.26.0." + format: "int64" + type: "integer" parseMode: description: "Parse mode for telegram message" enum: diff --git a/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpoolradosnamespaces.yaml b/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpoolradosnamespaces.yaml index bf2a7bf03..a9e6e7dce 100644 --- a/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpoolradosnamespaces.yaml +++ b/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpoolradosnamespaces.yaml @@ -95,9 +95,142 @@ spec: type: "string" nullable: true type: "object" + mirroringInfo: + description: "MirroringInfoSpec is the status of the pool/radosnamespace mirroring" + properties: + details: + type: "string" + lastChanged: + type: "string" + lastChecked: + type: "string" + mode: + description: "Mode is the mirroring mode" + type: "string" + peers: + description: "Peers are the list of peer sites connected to that cluster" + items: + description: "PeersSpec contains peer details" + properties: + client_name: + description: "ClientName is the CephX user used to connect to the peer" + type: "string" + direction: + description: "Direction is the peer mirroring direction" + type: "string" + mirror_uuid: + description: "MirrorUUID is the mirror UUID" + type: "string" + site_name: + description: "SiteName is the current site name" + type: "string" + uuid: + description: "UUID is the peer UUID" + type: "string" + type: "object" + type: "array" + site_name: + description: "SiteName is the current site name" + type: "string" + type: "object" + mirroringStatus: + description: "MirroringStatusSpec is the status of the pool/radosNamespace mirroring" + properties: + details: + description: "Details contains potential status errors" + type: "string" + lastChanged: + description: "LastChanged is the last time time the status last changed" + type: "string" + lastChecked: + description: "LastChecked is the last time time the status was checked" + type: "string" + summary: + description: "Summary is the mirroring status summary" + properties: + daemon_health: + description: "DaemonHealth is the health of the mirroring daemon" + type: "string" + health: + description: "Health is the mirroring health" + type: "string" + image_health: + description: "ImageHealth is the health of the mirrored image" + type: "string" + states: + description: "States is the various state for all mirrored images" + nullable: true + properties: + error: + description: "Error is when the mirroring state is errored" + type: "integer" + replaying: + description: "Replaying is when the replay of the mirroring journal is on-going" + type: "integer" + starting_replay: + description: "StartingReplay is when the replay of the mirroring journal starts" + type: "integer" + stopped: + description: "Stopped is when the mirroring state is stopped" + type: "integer" + stopping_replay: + description: "StopReplaying is when the replay of the mirroring journal stops" + type: "integer" + syncing: + description: "Syncing is when the image is syncing" + type: "integer" + unknown: + description: "Unknown is when the mirroring state is unknown" + type: "integer" + type: "object" + type: "object" + type: "object" phase: description: "ConditionType represent a resource's status" type: "string" + snapshotScheduleStatus: + description: "SnapshotScheduleStatusSpec is the status of the snapshot schedule" + properties: + details: + description: "Details contains potential status errors" + type: "string" + lastChanged: + description: "LastChanged is the last time time the status last changed" + type: "string" + lastChecked: + description: "LastChecked is the last time time the status was checked" + type: "string" + snapshotSchedules: + description: "SnapshotSchedules is the list of snapshots scheduled" + items: + description: "SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool" + properties: + image: + description: "Image is the mirrored image" + type: "string" + items: + description: "Items is the list schedules times for a given snapshot" + items: + description: "SnapshotSchedule is a schedule" + properties: + interval: + description: "Interval is the interval in which snapshots will be taken" + type: "string" + start_time: + description: "StartTime is the snapshot starting time" + type: "string" + type: "object" + type: "array" + namespace: + description: "Namespace is the RADOS namespace the image is part of" + type: "string" + pool: + description: "Pool is the pool name" + type: "string" + type: "object" + nullable: true + type: "array" + type: "object" type: "object" x-kubernetes-preserve-unknown-fields: true required: diff --git a/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpools.yaml b/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpools.yaml index 16bb9ca23..391e5472a 100644 --- a/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpools.yaml +++ b/crd-catalog/rook/rook/ceph.rook.io/v1/cephblockpools.yaml @@ -257,7 +257,7 @@ spec: nullable: true type: "object" mirroringInfo: - description: "MirroringInfoSpec is the status of the pool mirroring" + description: "MirroringInfoSpec is the status of the pool/radosnamespace mirroring" properties: details: type: "string" @@ -295,7 +295,7 @@ spec: type: "string" type: "object" mirroringStatus: - description: "MirroringStatusSpec is the status of the pool mirroring" + description: "MirroringStatusSpec is the status of the pool/radosNamespace mirroring" properties: details: description: "Details contains potential status errors" diff --git a/crd-catalog/rook/rook/ceph.rook.io/v1/cephclusters.yaml b/crd-catalog/rook/rook/ceph.rook.io/v1/cephclusters.yaml index e0016fc16..4e1ccb11f 100644 --- a/crd-catalog/rook/rook/ceph.rook.io/v1/cephclusters.yaml +++ b/crd-catalog/rook/rook/ceph.rook.io/v1/cephclusters.yaml @@ -2120,6 +2120,9 @@ spec: type: "array" onlyApplyOSDPlacement: type: "boolean" + scheduleAlways: + description: "Whether to always schedule OSDs on a node even if the node is not currently scheduleable or ready" + type: "boolean" storageClassDeviceSets: items: description: "StorageClassDeviceSet is a storage class device set" diff --git a/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectstores.yaml b/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectstores.yaml index 42d8b14bb..64551044e 100644 --- a/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectstores.yaml +++ b/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectstores.yaml @@ -1685,7 +1685,7 @@ spec: minLength: 1 type: "string" default: - description: "Sets given placement as default. Only one placement in the list can be marked as default." + description: "Sets given placement as default. Only one placement in the list can be marked as default.\nDefault is false." type: "boolean" metadataPoolName: description: "The metadata pool used to store ObjectStore bucket index." @@ -1716,7 +1716,6 @@ spec: type: "array" required: - "dataPoolName" - - "default" - "metadataPoolName" - "name" type: "object" diff --git a/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectzones.yaml b/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectzones.yaml index a15778ba2..90df4f423 100644 --- a/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectzones.yaml +++ b/crd-catalog/rook/rook/ceph.rook.io/v1/cephobjectzones.yaml @@ -412,7 +412,7 @@ spec: minLength: 1 type: "string" default: - description: "Sets given placement as default. Only one placement in the list can be marked as default." + description: "Sets given placement as default. Only one placement in the list can be marked as default.\nDefault is false." type: "boolean" metadataPoolName: description: "The metadata pool used to store ObjectStore bucket index." @@ -443,7 +443,6 @@ spec: type: "array" required: - "dataPoolName" - - "default" - "metadataPoolName" - "name" type: "object" diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml index b8f89e207..e0e16d2ea 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/gateways.yaml @@ -850,6 +850,35 @@ spec: type: "string" drainTimeout: type: "string" + earlyHeaderManipulation: + properties: + headersToAdd: + items: + properties: + append: + nullable: true + type: "boolean" + header: + properties: + key: + type: "string" + value: + type: "string" + type: "object" + headerSecretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + type: "array" + headersToRemove: + items: + type: "string" + type: "array" + type: "object" enableTrailers: nullable: true type: "boolean" @@ -1499,6 +1528,35 @@ spec: type: "string" drainTimeout: type: "string" + earlyHeaderManipulation: + properties: + headersToAdd: + items: + properties: + append: + nullable: true + type: "boolean" + header: + properties: + key: + type: "string" + value: + type: "string" + type: "object" + headerSecretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + type: "array" + headersToRemove: + items: + type: "string" + type: "array" + type: "object" enableTrailers: nullable: true type: "boolean" @@ -2814,6 +2872,35 @@ spec: type: "string" drainTimeout: type: "string" + earlyHeaderManipulation: + properties: + headersToAdd: + items: + properties: + append: + nullable: true + type: "boolean" + header: + properties: + key: + type: "string" + value: + type: "string" + type: "object" + headerSecretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + type: "array" + headersToRemove: + items: + type: "string" + type: "array" + type: "object" enableTrailers: nullable: true type: "boolean" diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/httpgateways.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/httpgateways.yaml index 486fe154e..d83978239 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/httpgateways.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/httpgateways.yaml @@ -844,6 +844,35 @@ spec: type: "string" drainTimeout: type: "string" + earlyHeaderManipulation: + properties: + headersToAdd: + items: + properties: + append: + nullable: true + type: "boolean" + header: + properties: + key: + type: "string" + value: + type: "string" + type: "object" + headerSecretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + type: "array" + headersToRemove: + items: + type: "string" + type: "array" + type: "object" enableTrailers: nullable: true type: "boolean" diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routeoptions.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routeoptions.yaml index 34e41c0af..f5d4c1610 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routeoptions.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routeoptions.yaml @@ -77,6 +77,28 @@ spec: minimum: 0.0 type: "integer" type: "object" + moderation: + properties: + openai: + properties: + authToken: + properties: + inline: + type: "string" + passthrough: + type: "object" + secretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + model: + type: "string" + type: "object" + type: "object" regex: properties: action: @@ -182,6 +204,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -201,6 +225,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -254,6 +280,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -273,6 +301,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routetables.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routetables.yaml index 3d889056c..9143bd918 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routetables.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/routetables.yaml @@ -187,6 +187,28 @@ spec: minimum: 0.0 type: "integer" type: "object" + moderation: + properties: + openai: + properties: + authToken: + properties: + inline: + type: "string" + passthrough: + type: "object" + secretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + model: + type: "string" + type: "object" + type: "object" regex: properties: action: @@ -292,6 +314,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -311,6 +335,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -364,6 +390,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -383,6 +411,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: diff --git a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/virtualservices.yaml b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/virtualservices.yaml index ece47d430..700bc49bd 100644 --- a/crd-catalog/solo-io/gloo/gateway.solo.io/v1/virtualservices.yaml +++ b/crd-catalog/solo-io/gloo/gateway.solo.io/v1/virtualservices.yaml @@ -3206,6 +3206,28 @@ spec: minimum: 0.0 type: "integer" type: "object" + moderation: + properties: + openai: + properties: + authToken: + properties: + inline: + type: "string" + passthrough: + type: "object" + secretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + model: + type: "string" + type: "object" + type: "object" regex: properties: action: @@ -3311,6 +3333,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -3330,6 +3354,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -3383,6 +3409,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -3402,6 +3430,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: diff --git a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/upstreams.yaml b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/upstreams.yaml index b3434ede1..922e9c8e3 100644 --- a/crd-catalog/solo-io/gloo/gloo.solo.io/v1/upstreams.yaml +++ b/crd-catalog/solo-io/gloo/gloo.solo.io/v1/upstreams.yaml @@ -28,6 +28,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -58,6 +60,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -79,6 +83,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -96,6 +102,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -130,6 +138,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -160,6 +170,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -181,6 +193,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -198,6 +212,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -224,6 +240,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -244,6 +262,36 @@ spec: model: type: "string" type: "object" + vertexAi: + properties: + apiVersion: + type: "string" + authToken: + properties: + inline: + type: "string" + passthrough: + type: "object" + secretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + location: + type: "string" + model: + type: "string" + modelPath: + type: "string" + projectId: + type: "string" + publisher: + type: "string" + x-kubernetes-int-or-string: true + type: "object" type: "object" type: "array" type: "object" @@ -255,6 +303,8 @@ spec: properties: inline: type: "string" + passthrough: + type: "object" secretRef: properties: name: @@ -275,6 +325,36 @@ spec: model: type: "string" type: "object" + vertexAi: + properties: + apiVersion: + type: "string" + authToken: + properties: + inline: + type: "string" + passthrough: + type: "object" + secretRef: + properties: + name: + type: "string" + namespace: + type: "string" + type: "object" + type: "object" + location: + type: "string" + model: + type: "string" + modelPath: + type: "string" + projectId: + type: "string" + publisher: + type: "string" + x-kubernetes-int-or-string: true + type: "object" type: "object" aws: properties: diff --git a/crd-catalog/stackabletech/listener-operator/listeners.stackable.tech/v1alpha1/listenerclasses.yaml b/crd-catalog/stackabletech/listener-operator/listeners.stackable.tech/v1alpha1/listenerclasses.yaml index 8fa24fe53..cf0743d92 100644 --- a/crd-catalog/stackabletech/listener-operator/listeners.stackable.tech/v1alpha1/listenerclasses.yaml +++ b/crd-catalog/stackabletech/listener-operator/listeners.stackable.tech/v1alpha1/listenerclasses.yaml @@ -24,11 +24,12 @@ spec: description: "Defines a policy for how [Listeners](https://docs.stackable.tech/home/nightly/listener-operator/listener) should be exposed. Read the [ListenerClass documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass) for more information." properties: preferredAddressType: - default: "Hostname" - description: "Whether addresses should prefer using the IP address (`IP`) or the hostname (`Hostname`).\n\nThe other type will be used if the preferred type is not available. By default `Hostname` is used." + default: "HostnameConservative" + description: "Whether addresses should prefer using the IP address (`IP`) or the hostname (`Hostname`). Can also be set to `HostnameConservative`, which will use `IP` for `NodePort` service types, but `Hostname` for everything else.\n\nThe other type will be used if the preferred type is not available.\n\nDefaults to `HostnameConservative`." enum: - "Hostname" - "IP" + - "HostnameConservative" type: "string" serviceAnnotations: additionalProperties: diff --git a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/ingressroutes.yaml b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/ingressroutes.yaml index 93a3ecccf..d7b1b4707 100644 --- a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/ingressroutes.yaml +++ b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/ingressroutes.yaml @@ -40,7 +40,7 @@ spec: description: "Route holds the HTTP route configuration." properties: kind: - description: "Kind defines the kind of the route.\nRule is the only supported kind." + description: "Kind defines the kind of the route.\nRule is the only supported kind.\nIf not defined, defaults to Rule." enum: - "Rule" type: "string" @@ -165,11 +165,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" @@ -192,7 +195,6 @@ spec: description: "Syntax defines the router's rule syntax.\nMore info: https://doc.traefik.io/traefik/v3.2/routing/routers/#rulesyntax" type: "string" required: - - "kind" - "match" type: "object" type: "array" diff --git a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml index 7c2411307..2154b9f52 100644 --- a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml +++ b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/middlewares.yaml @@ -274,11 +274,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" diff --git a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/traefikservices.yaml b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/traefikservices.yaml index c595ea0e5..4d99ea395 100644 --- a/crd-catalog/traefik/traefik/traefik.io/v1alpha1/traefikservices.yaml +++ b/crd-catalog/traefik/traefik/traefik.io/v1alpha1/traefikservices.yaml @@ -193,11 +193,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" @@ -260,11 +263,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" @@ -385,11 +391,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" @@ -418,11 +427,14 @@ spec: description: "HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript." type: "boolean" maxAge: - description: "MaxAge indicates the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." + description: "MaxAge defines the number of seconds until the cookie expires.\nWhen set to a negative number, the cookie expires immediately.\nWhen set to zero, the cookie never expires." type: "integer" name: description: "Name defines the Cookie name." type: "string" + path: + description: "Path defines the path that must exist in the requested URL for the browser to send the Cookie header.\nWhen not provided the cookie will be sent on every request to the domain.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value" + type: "string" sameSite: description: "SameSite defines the same site policy.\nMore info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite" type: "string" diff --git a/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml b/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml index ece88cee4..3aee95c4f 100644 --- a/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml +++ b/crd-catalog/validatedpatterns/patterns-operator/gitops.hybrid-cloud-patterns.io/v1alpha1/patterns.yaml @@ -2,7 +2,7 @@ apiVersion: "apiextensions.k8s.io/v1" kind: "CustomResourceDefinition" metadata: annotations: - controller-gen.kubebuilder.io/version: "v0.14.0" + controller-gen.kubebuilder.io/version: "v0.16.4" name: "patterns.gitops.hybrid-cloud-patterns.io" spec: group: "gitops.hybrid-cloud-patterns.io" diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesetbindings.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesetbindings.rs index f790ddb71..bede6e5f3 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesetbindings.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesetbindings.rs @@ -17,7 +17,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ClusterResourceSetBindingSpec { - /// Bindings is a list of ClusterResourceSets and their resources. + /// bindings is a list of ClusterResourceSets and their resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub bindings: Option>, } @@ -25,10 +25,10 @@ pub struct ClusterResourceSetBindingSpec { /// ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetBindingBindings { - /// ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. + /// clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. #[serde(rename = "clusterResourceSetName")] pub cluster_resource_set_name: String, - /// Resources is a list of resources that the ClusterResourceSet has. + /// resources is a list of resources that the ClusterResourceSet has. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, } @@ -36,18 +36,18 @@ pub struct ClusterResourceSetBindingBindings { /// ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetBindingBindingsResources { - /// Applied is to track if a resource is applied to the cluster or not. + /// applied is to track if a resource is applied to the cluster or not. pub applied: bool, - /// Hash is the hash of a resource's data. This can be used to decide if a resource is changed. + /// hash is the hash of a resource's data. This can be used to decide if a resource is changed. /// For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change. #[serde(default, skip_serializing_if = "Option::is_none")] pub hash: Option, - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetBindingBindingsResourcesKind, - /// LastAppliedTime identifies when this resource was last applied to the cluster. + /// lastAppliedTime identifies when this resource was last applied to the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedTime")] pub last_applied_time: Option, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesets.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesets.rs index 0d360a500..761092d7b 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesets.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha3/clusterresourcesets.rs @@ -25,10 +25,10 @@ pub struct ClusterResourceSetSpec { /// It must match the Cluster labels. This field is immutable. #[serde(rename = "clusterSelector")] pub cluster_selector: ClusterResourceSetClusterSelector, - /// Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. + /// resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, - /// Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. + /// strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -68,9 +68,9 @@ pub struct ClusterResourceSetClusterSelectorMatchExpressions { /// ResourceRef specifies a resource. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetResources { - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetResourcesKind, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } @@ -90,10 +90,10 @@ pub enum ClusterResourceSetStrategy { /// ClusterResourceSetStatus defines the observed state of ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetStatus { - /// Conditions defines current state of the ClusterResourceSet. + /// conditions defines current state of the ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet. + /// observedGeneration reflects the generation of the most recently observed ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, } diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesetbindings.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesetbindings.rs index 26ce3c604..c7c136ed4 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesetbindings.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesetbindings.rs @@ -17,7 +17,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ClusterResourceSetBindingSpec { - /// Bindings is a list of ClusterResourceSets and their resources. + /// bindings is a list of ClusterResourceSets and their resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub bindings: Option>, } @@ -25,10 +25,10 @@ pub struct ClusterResourceSetBindingSpec { /// ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetBindingBindings { - /// ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. + /// clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. #[serde(rename = "clusterResourceSetName")] pub cluster_resource_set_name: String, - /// Resources is a list of resources that the ClusterResourceSet has. + /// resources is a list of resources that the ClusterResourceSet has. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, } @@ -36,18 +36,18 @@ pub struct ClusterResourceSetBindingBindings { /// ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetBindingBindingsResources { - /// Applied is to track if a resource is applied to the cluster or not. + /// applied is to track if a resource is applied to the cluster or not. pub applied: bool, - /// Hash is the hash of a resource's data. This can be used to decide if a resource is changed. + /// hash is the hash of a resource's data. This can be used to decide if a resource is changed. /// For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change. #[serde(default, skip_serializing_if = "Option::is_none")] pub hash: Option, - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetBindingBindingsResourcesKind, - /// LastAppliedTime identifies when this resource was last applied to the cluster. + /// lastAppliedTime identifies when this resource was last applied to the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedTime")] pub last_applied_time: Option, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesets.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesets.rs index f38575871..c1675cd46 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesets.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1alpha4/clusterresourcesets.rs @@ -26,10 +26,10 @@ pub struct ClusterResourceSetSpec { /// Label selector cannot be empty. #[serde(rename = "clusterSelector")] pub cluster_selector: ClusterResourceSetClusterSelector, - /// Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. + /// resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, - /// Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. + /// strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -70,9 +70,9 @@ pub struct ClusterResourceSetClusterSelectorMatchExpressions { /// ResourceRef specifies a resource. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetResources { - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetResourcesKind, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } @@ -92,10 +92,10 @@ pub enum ClusterResourceSetStrategy { /// ClusterResourceSetStatus defines the observed state of ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetStatus { - /// Conditions defines current state of the ClusterResourceSet. + /// conditions defines current state of the ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet. + /// observedGeneration reflects the generation of the most recently observed ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, } diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesetbindings.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesetbindings.rs index 457026dc5..9e4c33dde 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesetbindings.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesetbindings.rs @@ -17,10 +17,10 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ClusterResourceSetBindingSpec { - /// Bindings is a list of ClusterResourceSets and their resources. + /// bindings is a list of ClusterResourceSets and their resources. #[serde(default, skip_serializing_if = "Option::is_none")] pub bindings: Option>, - /// ClusterName is the name of the Cluster this binding applies to. + /// clusterName is the name of the Cluster this binding applies to. /// Note: this field mandatory in v1beta2. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterName")] pub cluster_name: Option, @@ -29,10 +29,10 @@ pub struct ClusterResourceSetBindingSpec { /// ResourceSetBinding keeps info on all of the resources in a ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetBindingBindings { - /// ClusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. + /// clusterResourceSetName is the name of the ClusterResourceSet that is applied to the owner cluster of the binding. #[serde(rename = "clusterResourceSetName")] pub cluster_resource_set_name: String, - /// Resources is a list of resources that the ClusterResourceSet has. + /// resources is a list of resources that the ClusterResourceSet has. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, } @@ -40,18 +40,18 @@ pub struct ClusterResourceSetBindingBindings { /// ResourceBinding shows the status of a resource that belongs to a ClusterResourceSet matched by the owner cluster of the ClusterResourceSetBinding object. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetBindingBindingsResources { - /// Applied is to track if a resource is applied to the cluster or not. + /// applied is to track if a resource is applied to the cluster or not. pub applied: bool, - /// Hash is the hash of a resource's data. This can be used to decide if a resource is changed. + /// hash is the hash of a resource's data. This can be used to decide if a resource is changed. /// For "ApplyOnce" ClusterResourceSet.spec.strategy, this is no-op as that strategy does not act on change. #[serde(default, skip_serializing_if = "Option::is_none")] pub hash: Option, - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetBindingBindingsResourcesKind, - /// LastAppliedTime identifies when this resource was last applied to the cluster. + /// lastAppliedTime identifies when this resource was last applied to the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastAppliedTime")] pub last_applied_time: Option, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } diff --git a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesets.rs b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesets.rs index 0f9a5d260..5b03303e9 100644 --- a/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesets.rs +++ b/kube-custom-resources-rs/src/addons_cluster_x_k8s_io/v1beta1/clusterresourcesets.rs @@ -26,10 +26,10 @@ pub struct ClusterResourceSetSpec { /// Label selector cannot be empty. #[serde(rename = "clusterSelector")] pub cluster_selector: ClusterResourceSetClusterSelector, - /// Resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. + /// resources is a list of Secrets/ConfigMaps where each contains 1 or more resources to be applied to remote clusters. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, - /// Strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. + /// strategy is the strategy to be used during applying resources. Defaults to ApplyOnce. This field is immutable. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, } @@ -70,9 +70,9 @@ pub struct ClusterResourceSetClusterSelectorMatchExpressions { /// ResourceRef specifies a resource. #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct ClusterResourceSetResources { - /// Kind of the resource. Supported kinds are: Secrets and ConfigMaps. + /// kind of the resource. Supported kinds are: Secrets and ConfigMaps. pub kind: ClusterResourceSetResourcesKind, - /// Name of the resource that is in the same namespace with ClusterResourceSet object. + /// name of the resource that is in the same namespace with ClusterResourceSet object. pub name: String, } @@ -93,10 +93,10 @@ pub enum ClusterResourceSetStrategy { /// ClusterResourceSetStatus defines the observed state of ClusterResourceSet. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterResourceSetStatus { - /// Conditions defines current state of the ClusterResourceSet. + /// conditions defines current state of the ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ObservedGeneration reflects the generation of the most recently observed ClusterResourceSet. + /// observedGeneration reflects the generation of the most recently observed ClusterResourceSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, /// v1beta2 groups all the fields that will be added or modified in ClusterResourceSet's status with the V1Beta2 version. diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/clusters.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/clusters.rs index 5e1864bfb..4d6ef745a 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/clusters.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/clusters.rs @@ -13665,13 +13665,12 @@ pub struct ClusterStatusComponents { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum ClusterStatusComponentsPhase { Creating, - Running, + Deleting, Updating, Stopping, + Running, Stopped, - Deleting, Failed, - Abnormal, } /// ClusterStatus defines the observed state of the Cluster. @@ -13703,12 +13702,11 @@ pub struct ClusterStatusShardings { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum ClusterStatusShardingsPhase { Creating, - Running, + Deleting, Updating, Stopping, + Running, Stopped, - Deleting, Failed, - Abnormal, } diff --git a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/components.rs b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/components.rs index 1d8a3d16e..1480cdef9 100644 --- a/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/components.rs +++ b/kube-custom-resources-rs/src/apps_kubeblocks_io/v1/components.rs @@ -6445,12 +6445,9 @@ pub struct ComponentStatus { /// /// /// - Creating: The initial phase for new Components, transitioning from 'empty'(""). - /// - Running: All Pods in a Running state. + /// - Running: All Pods are up-to-date and in a Running state. /// - Updating: The Component is currently being updated, with no failed Pods present. - /// - Abnormal: Some Pods have failed, indicating a potentially unstable state. - /// However, the cluster remains available as long as a quorum of members is functioning. - /// - Failed: A significant number of Pods or critical Pods have failed - /// The cluster may be non-functional or may offer only limited services (e.g, read-only). + /// - Failed: A significant number of Pods have failed. /// - Stopping: All Pods are being terminated, with current replica count at zero. /// - Stopped: All associated Pods have been successfully deleted. /// - Deleting: The Component is being deleted. @@ -6462,12 +6459,11 @@ pub struct ComponentStatus { #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum ComponentStatusPhase { Creating, - Running, + Deleting, Updating, Stopping, + Running, Stopped, - Deleting, Failed, - Abnormal, } diff --git a/kube-custom-resources-rs/src/beegfs_csi_netapp_com/v1/beegfsdrivers.rs b/kube-custom-resources-rs/src/beegfs_csi_netapp_com/v1/beegfsdrivers.rs index bdf7c5749..9ba4dd2f8 100644 --- a/kube-custom-resources-rs/src/beegfs_csi_netapp_com/v1/beegfsdrivers.rs +++ b/kube-custom-resources-rs/src/beegfs_csi_netapp_com/v1/beegfsdrivers.rs @@ -176,11 +176,9 @@ pub struct BeegfsDriverContainerResourceOverridesControllerBeegfs { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -203,6 +201,11 @@ pub struct BeegfsDriverContainerResourceOverridesControllerBeegfsClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// The resource specifications for the csi-provisioner container of the BeeGFS driver controller pod. @@ -213,11 +216,9 @@ pub struct BeegfsDriverContainerResourceOverridesControllerCsiProvisioner { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -240,6 +241,11 @@ pub struct BeegfsDriverContainerResourceOverridesControllerCsiProvisionerClaims /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// The resource specifications for the beegfs container of the BeeGFS driver node pod. @@ -250,11 +256,9 @@ pub struct BeegfsDriverContainerResourceOverridesNodeBeegfs { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -277,6 +281,11 @@ pub struct BeegfsDriverContainerResourceOverridesNodeBeegfsClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// The resource specifications for the node-driver-registrar container of the BeeGFS driver node pod. @@ -287,11 +296,9 @@ pub struct BeegfsDriverContainerResourceOverridesNodeDriverRegistrar { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -314,6 +321,11 @@ pub struct BeegfsDriverContainerResourceOverridesNodeDriverRegistrarClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// The resource specifications for the liveness-probe container of the BeeGFS driver node pod. @@ -324,11 +336,9 @@ pub struct BeegfsDriverContainerResourceOverridesNodeLivenessProbe { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -351,6 +361,11 @@ pub struct BeegfsDriverContainerResourceOverridesNodeLivenessProbeClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// The controller service consists of a single Pod. It preferably runs on an infrastructure/master node, but the diff --git a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpoolradosnamespaces.rs b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpoolradosnamespaces.rs index cc5c7b0ed..becdfa738 100644 --- a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpoolradosnamespaces.rs +++ b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpoolradosnamespaces.rs @@ -74,8 +74,162 @@ pub struct CephBlockPoolRadosNamespaceMirroringSnapshotSchedules { pub struct CephBlockPoolRadosNamespaceStatus { #[serde(default, skip_serializing_if = "Option::is_none")] pub info: Option>, + /// MirroringInfoSpec is the status of the pool/radosnamespace mirroring + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mirroringInfo")] + pub mirroring_info: Option, + /// MirroringStatusSpec is the status of the pool/radosNamespace mirroring + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mirroringStatus")] + pub mirroring_status: Option, /// ConditionType represent a resource's status #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, + /// SnapshotScheduleStatusSpec is the status of the snapshot schedule + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotScheduleStatus")] + pub snapshot_schedule_status: Option, +} + +/// MirroringInfoSpec is the status of the pool/radosnamespace mirroring +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusMirroringInfo { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub details: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChanged")] + pub last_changed: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChecked")] + pub last_checked: Option, + /// Mode is the mirroring mode + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mode: Option, + /// Peers are the list of peer sites connected to that cluster + #[serde(default, skip_serializing_if = "Option::is_none")] + pub peers: Option>, + /// SiteName is the current site name + #[serde(default, skip_serializing_if = "Option::is_none")] + pub site_name: Option, +} + +/// PeersSpec contains peer details +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusMirroringInfoPeers { + /// ClientName is the CephX user used to connect to the peer + #[serde(default, skip_serializing_if = "Option::is_none")] + pub client_name: Option, + /// Direction is the peer mirroring direction + #[serde(default, skip_serializing_if = "Option::is_none")] + pub direction: Option, + /// MirrorUUID is the mirror UUID + #[serde(default, skip_serializing_if = "Option::is_none")] + pub mirror_uuid: Option, + /// SiteName is the current site name + #[serde(default, skip_serializing_if = "Option::is_none")] + pub site_name: Option, + /// UUID is the peer UUID + #[serde(default, skip_serializing_if = "Option::is_none")] + pub uuid: Option, +} + +/// MirroringStatusSpec is the status of the pool/radosNamespace mirroring +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusMirroringStatus { + /// Details contains potential status errors + #[serde(default, skip_serializing_if = "Option::is_none")] + pub details: Option, + /// LastChanged is the last time time the status last changed + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChanged")] + pub last_changed: Option, + /// LastChecked is the last time time the status was checked + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChecked")] + pub last_checked: Option, + /// Summary is the mirroring status summary + #[serde(default, skip_serializing_if = "Option::is_none")] + pub summary: Option, +} + +/// Summary is the mirroring status summary +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusMirroringStatusSummary { + /// DaemonHealth is the health of the mirroring daemon + #[serde(default, skip_serializing_if = "Option::is_none")] + pub daemon_health: Option, + /// Health is the mirroring health + #[serde(default, skip_serializing_if = "Option::is_none")] + pub health: Option, + /// ImageHealth is the health of the mirrored image + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image_health: Option, + /// States is the various state for all mirrored images + #[serde(default, skip_serializing_if = "Option::is_none")] + pub states: Option, +} + +/// States is the various state for all mirrored images +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusMirroringStatusSummaryStates { + /// Error is when the mirroring state is errored + #[serde(default, skip_serializing_if = "Option::is_none")] + pub error: Option, + /// Replaying is when the replay of the mirroring journal is on-going + #[serde(default, skip_serializing_if = "Option::is_none")] + pub replaying: Option, + /// StartingReplay is when the replay of the mirroring journal starts + #[serde(default, skip_serializing_if = "Option::is_none")] + pub starting_replay: Option, + /// Stopped is when the mirroring state is stopped + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stopped: Option, + /// StopReplaying is when the replay of the mirroring journal stops + #[serde(default, skip_serializing_if = "Option::is_none")] + pub stopping_replay: Option, + /// Syncing is when the image is syncing + #[serde(default, skip_serializing_if = "Option::is_none")] + pub syncing: Option, + /// Unknown is when the mirroring state is unknown + #[serde(default, skip_serializing_if = "Option::is_none")] + pub unknown: Option, +} + +/// SnapshotScheduleStatusSpec is the status of the snapshot schedule +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusSnapshotScheduleStatus { + /// Details contains potential status errors + #[serde(default, skip_serializing_if = "Option::is_none")] + pub details: Option, + /// LastChanged is the last time time the status last changed + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChanged")] + pub last_changed: Option, + /// LastChecked is the last time time the status was checked + #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastChecked")] + pub last_checked: Option, + /// SnapshotSchedules is the list of snapshots scheduled + #[serde(default, skip_serializing_if = "Option::is_none", rename = "snapshotSchedules")] + pub snapshot_schedules: Option>, +} + +/// SnapshotSchedulesSpec is the list of snapshot scheduled for images in a pool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusSnapshotScheduleStatusSnapshotSchedules { + /// Image is the mirrored image + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + /// Items is the list schedules times for a given snapshot + #[serde(default, skip_serializing_if = "Option::is_none")] + pub items: Option>, + /// Namespace is the RADOS namespace the image is part of + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, + /// Pool is the pool name + #[serde(default, skip_serializing_if = "Option::is_none")] + pub pool: Option, +} + +/// SnapshotSchedule is a schedule +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct CephBlockPoolRadosNamespaceStatusSnapshotScheduleStatusSnapshotSchedulesItems { + /// Interval is the interval in which snapshots will be taken + #[serde(default, skip_serializing_if = "Option::is_none")] + pub interval: Option, + /// StartTime is the snapshot starting time + #[serde(default, skip_serializing_if = "Option::is_none")] + pub start_time: Option, } diff --git a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpools.rs b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpools.rs index af6492e72..ee5584c1e 100644 --- a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpools.rs +++ b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephblockpools.rs @@ -229,10 +229,10 @@ pub struct CephBlockPoolStatus { pub conditions: Option>, #[serde(default, skip_serializing_if = "Option::is_none")] pub info: Option>, - /// MirroringInfoSpec is the status of the pool mirroring + /// MirroringInfoSpec is the status of the pool/radosnamespace mirroring #[serde(default, skip_serializing_if = "Option::is_none", rename = "mirroringInfo")] pub mirroring_info: Option, - /// MirroringStatusSpec is the status of the pool mirroring + /// MirroringStatusSpec is the status of the pool/radosNamespace mirroring #[serde(default, skip_serializing_if = "Option::is_none", rename = "mirroringStatus")] pub mirroring_status: Option, /// ObservedGeneration is the latest generation observed by the controller. @@ -246,7 +246,7 @@ pub struct CephBlockPoolStatus { pub snapshot_schedule_status: Option, } -/// MirroringInfoSpec is the status of the pool mirroring +/// MirroringInfoSpec is the status of the pool/radosnamespace mirroring #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CephBlockPoolStatusMirroringInfo { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -286,7 +286,7 @@ pub struct CephBlockPoolStatusMirroringInfoPeers { pub uuid: Option, } -/// MirroringStatusSpec is the status of the pool mirroring +/// MirroringStatusSpec is the status of the pool/radosNamespace mirroring #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct CephBlockPoolStatusMirroringStatus { /// Details contains potential status errors diff --git a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectstores.rs b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectstores.rs index 52843aa19..5baf8fc7b 100644 --- a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectstores.rs +++ b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectstores.rs @@ -1584,7 +1584,9 @@ pub struct CephObjectStoreSharedPoolsPoolPlacements { #[serde(rename = "dataPoolName")] pub data_pool_name: String, /// Sets given placement as default. Only one placement in the list can be marked as default. - pub default: bool, + /// Default is false. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub default: Option, /// The metadata pool used to store ObjectStore bucket index. #[serde(rename = "metadataPoolName")] pub metadata_pool_name: String, diff --git a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectzones.rs b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectzones.rs index df0ba5b85..1106b2dd4 100644 --- a/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectzones.rs +++ b/kube-custom-resources-rs/src/ceph_rook_io/v1/cephobjectzones.rs @@ -454,7 +454,9 @@ pub struct CephObjectZoneSharedPoolsPoolPlacements { #[serde(rename = "dataPoolName")] pub data_pool_name: String, /// Sets given placement as default. Only one placement in the list can be marked as default. - pub default: bool, + /// Default is false. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub default: Option, /// The metadata pool used to store ObjectStore bucket index. #[serde(rename = "metadataPoolName")] pub metadata_pool_name: String, diff --git a/kube-custom-resources-rs/src/claudie_io/v1beta1/inputmanifests.rs b/kube-custom-resources-rs/src/claudie_io/v1beta1/inputmanifests.rs index 9e1688ea4..6e6eb572a 100644 --- a/kube-custom-resources-rs/src/claudie_io/v1beta1/inputmanifests.rs +++ b/kube-custom-resources-rs/src/claudie_io/v1beta1/inputmanifests.rs @@ -46,6 +46,9 @@ pub struct InputManifestKubernetes { /// Collection of data used to define a Kubernetes cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InputManifestKubernetesClusters { + /// General information about a proxy used to build a K8s cluster. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "installationProxy")] + pub installation_proxy: Option, /// Name of the Kubernetes cluster. Each cluster will have a random hash appended to the name, so the whole name will be of format -. pub name: String, /// Network range for the VPN of the cluster. The value should be defined in format A.B.C.D/mask. @@ -54,12 +57,22 @@ pub struct InputManifestKubernetesClusters { pub pools: InputManifestKubernetesClustersPools, /// Version should be defined in format vX.Y. In terms of supported versions of Kubernetes, /// Claudie follows kubeone releases and their supported versions. - /// The current kubeone version used in Claudie is 1.5. + /// The current kubeone version used in Claudie is 1.8.1. /// To see the list of supported versions, please refer to kubeone documentation. /// https://docs.kubermatic.com/kubeone/v1.8/architecture/compatibility/supported-versions/ pub version: String, } +/// General information about a proxy used to build a K8s cluster. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct InputManifestKubernetesClustersInstallationProxy { + /// Endpoint defines the proxy endpoint. If undefined, the default value is http://proxy.claudie.io:8880. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub endpoint: Option, + /// Mode defines if the proxy mode (on/off/default). If undefined, the default mode is used. + pub mode: String, +} + /// List of nodepool names this cluster will use. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InputManifestKubernetesClustersPools { diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/clusters.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/clusters.rs index 67134e881..5279ce887 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/clusters.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/clusters.rs @@ -24,18 +24,18 @@ pub struct ClusterSpec { /// Cluster network configuration. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterNetwork")] pub cluster_network: Option, - /// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. + /// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneEndpoint")] pub control_plane_endpoint: Option, - /// ControlPlaneRef is an optional reference to a provider-specific resource that holds + /// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneRef")] pub control_plane_ref: Option, - /// InfrastructureRef is a reference to a provider-specific resource that holds the details + /// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureRef")] pub infrastructure_ref: Option, - /// Paused can be used to prevent controllers from processing the Cluster and all its associated objects. + /// paused can be used to prevent controllers from processing the Cluster and all its associated objects. #[serde(default, skip_serializing_if = "Option::is_none")] pub paused: Option, } @@ -43,7 +43,7 @@ pub struct ClusterSpec { /// Cluster network configuration. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClusterNetwork { - /// APIServerPort specifies the port the API Server should bind to. + /// apiServerPort specifies the port the API Server should bind to. /// Defaults to 6443. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerPort")] pub api_server_port: Option, @@ -72,7 +72,7 @@ pub struct ClusterClusterNetworkServices { pub cidr_blocks: Vec, } -/// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. +/// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneEndpoint { /// The hostname on which the API server is serving. @@ -81,7 +81,7 @@ pub struct ClusterControlPlaneEndpoint { pub port: i32, } -/// ControlPlaneRef is an optional reference to a provider-specific resource that holds +/// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneRef { @@ -119,7 +119,7 @@ pub struct ClusterControlPlaneRef { pub uid: Option, } -/// InfrastructureRef is a reference to a provider-specific resource that holds the details +/// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInfrastructureRef { @@ -160,46 +160,46 @@ pub struct ClusterInfrastructureRef { /// ClusterStatus defines the observed state of Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatus { - /// Conditions defines current service state of the cluster. + /// conditions defines current service state of the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ControlPlaneInitialized defines if the control plane has been initialized. + /// controlPlaneInitialized defines if the control plane has been initialized. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneInitialized")] pub control_plane_initialized: Option, - /// ControlPlaneReady defines if the control plane is ready. + /// controlPlaneReady defines if the control plane is ready. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneReady")] pub control_plane_ready: Option, - /// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. + /// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, - /// FailureMessage indicates that there is a fatal problem reconciling the + /// failureMessage indicates that there is a fatal problem reconciling the /// state, and will be set to a descriptive error message. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a fatal problem reconciling the + /// failureReason indicates that there is a fatal problem reconciling the /// state, and will be set to a token value suitable for /// programmatic interpretation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, } -/// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. +/// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatusFailureDomains { - /// Attributes is a free form map of attributes an infrastructure provider might use or require. + /// attributes is a free form map of attributes an infrastructure provider might use or require. #[serde(default, skip_serializing_if = "Option::is_none")] pub attributes: Option>, - /// ControlPlane determines if this failure domain is suitable for use by control plane machines. + /// controlPlane determines if this failure domain is suitable for use by control plane machines. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, } diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinedeployments.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinedeployments.rs index 386dbcabf..91e6ceaf8 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinedeployments.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinedeployments.rs @@ -21,7 +21,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineDeploymentSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, /// Minimum number of seconds for which a newly created machine should @@ -57,7 +57,7 @@ pub struct MachineDeploymentSpec { /// new ones. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachineDeploymentTemplate, } @@ -101,7 +101,7 @@ pub struct MachineDeploymentStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. Currently the only supported strategy is + /// type of deployment. Currently the only supported strategy is /// "RollingUpdate". /// Default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] @@ -143,7 +143,7 @@ pub struct MachineDeploymentStrategyRollingUpdate { pub max_unavailable: Option, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplate { /// Standard object's metadata. @@ -160,13 +160,13 @@ pub struct MachineDeploymentTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// GenerateName is an optional prefix, used by the server, to generate a unique + /// generateName is an optional prefix, used by the server, to generate a unique /// name ONLY IF the Name field has not been provided. /// If this field is used, the name returned to the client will be different /// than the name passed. This value will also be combined with a unique suffix. @@ -191,7 +191,7 @@ pub struct MachineDeploymentTemplateMetadata { /// More info: http://kubernetes.io/docs/user-guide/labels #[serde(default, skip_serializing_if = "Option::is_none")] pub labels: Option>, - /// Name must be unique within a namespace. Is required when creating resources, although + /// name must be unique within a namespace. Is required when creating resources, although /// some resources may allow a client to request the generation of an appropriate name /// automatically. Name is primarily intended for creation idempotence and configuration /// definition. @@ -201,7 +201,7 @@ pub struct MachineDeploymentTemplateMetadata { /// Deprecated: This field has no function and is going to be removed in a next release. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace defines the space within each name must be unique. An empty namespace is + /// namespace defines the space within each name must be unique. An empty namespace is /// equivalent to the "default" namespace, but "default" is the canonical representation. /// Not all objects are required to be scoped to a namespace - the value of this field for /// those objects will be empty. @@ -259,26 +259,26 @@ pub struct MachineDeploymentTemplateMetadataOwnerReferences { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineDeploymentTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -290,35 +290,35 @@ pub struct MachineDeploymentTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// Data contains the bootstrap data, such as cloud-init details scripts. + /// data contains the bootstrap data, such as cloud-init details scripts. /// If nil, the Machine should remain in the Pending state. /// /// Deprecated: Switch to DataSecretName. #[serde(default, skip_serializing_if = "Option::is_none")] pub data: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. @@ -358,7 +358,7 @@ pub struct MachineDeploymentTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecInfrastructureRef { @@ -406,7 +406,7 @@ pub struct MachineDeploymentStatus { /// The generation observed by the deployment controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). + /// phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// Total number of ready machines targeted by this deployment. @@ -416,7 +416,7 @@ pub struct MachineDeploymentStatus { /// (their labels match the selector). #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinehealthchecks.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinehealthchecks.rs index 20b709c95..2ec518cc1 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinehealthchecks.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinehealthchecks.rs @@ -22,7 +22,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineHealthCheckSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, /// Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by @@ -33,7 +33,7 @@ pub struct MachineHealthCheckSpec { /// failed and will be remediated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -43,14 +43,14 @@ pub struct MachineHealthCheckSpec { pub remediation_template: Option, /// Label selector to match machines whose health will be exercised pub selector: MachineHealthCheckSelector, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(rename = "unhealthyConditions")] pub unhealthy_conditions: Vec, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -136,7 +136,7 @@ pub struct MachineHealthCheckUnhealthyConditions { /// Most recently observed status of MachineHealthCheck resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineHealthCheckStatus { - /// Conditions defines current service state of the MachineHealthCheck. + /// conditions defines current service state of the MachineHealthCheck. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// total number of healthy machines counted by this machine health check @@ -145,14 +145,14 @@ pub struct MachineHealthCheckStatus { /// total number of machines counted by this machine health check #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedMachines")] pub expected_machines: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// RemediationsAllowed is the number of further remediations allowed by this machine health check before + /// remediationsAllowed is the number of further remediations allowed by this machine health check before /// maxUnhealthy short circuiting will be applied #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationsAllowed")] pub remediations_allowed: Option, - /// Targets shows the current list of machines the machine health check is watching + /// targets shows the current list of machines the machine health check is watching #[serde(default, skip_serializing_if = "Option::is_none")] pub targets: Option>, } diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinepools.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinepools.rs index c102b2635..9db51ca9e 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinepools.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinepools.rs @@ -22,10 +22,10 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachinePoolSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomains is the list of failure domains this MachinePool should be attached to. + /// failureDomains is the list of failure domains this MachinePool should be attached to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, /// Minimum number of seconds for which a newly created machine instances should @@ -34,7 +34,7 @@ pub struct MachinePoolSpec { /// is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// ProviderIDList are the identification IDs of machine instances provided by the provider. + /// providerIDList are the identification IDs of machine instances provided by the provider. /// This field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerIDList")] pub provider_id_list: Option>, @@ -46,7 +46,7 @@ pub struct MachinePoolSpec { /// new ones. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachinePoolTemplate, } @@ -58,7 +58,7 @@ pub struct MachinePoolStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. Currently the only supported strategy is + /// type of deployment. Currently the only supported strategy is /// "RollingUpdate". /// Default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] @@ -100,7 +100,7 @@ pub struct MachinePoolStrategyRollingUpdate { pub max_unavailable: Option, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplate { /// Standard object's metadata. @@ -117,13 +117,13 @@ pub struct MachinePoolTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// GenerateName is an optional prefix, used by the server, to generate a unique + /// generateName is an optional prefix, used by the server, to generate a unique /// name ONLY IF the Name field has not been provided. /// If this field is used, the name returned to the client will be different /// than the name passed. This value will also be combined with a unique suffix. @@ -148,7 +148,7 @@ pub struct MachinePoolTemplateMetadata { /// More info: http://kubernetes.io/docs/user-guide/labels #[serde(default, skip_serializing_if = "Option::is_none")] pub labels: Option>, - /// Name must be unique within a namespace. Is required when creating resources, although + /// name must be unique within a namespace. Is required when creating resources, although /// some resources may allow a client to request the generation of an appropriate name /// automatically. Name is primarily intended for creation idempotence and configuration /// definition. @@ -158,7 +158,7 @@ pub struct MachinePoolTemplateMetadata { /// Deprecated: This field has no function and is going to be removed in a next release. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace defines the space within each name must be unique. An empty namespace is + /// namespace defines the space within each name must be unique. An empty namespace is /// equivalent to the "default" namespace, but "default" is the canonical representation. /// Not all objects are required to be scoped to a namespace - the value of this field for /// those objects will be empty. @@ -216,26 +216,26 @@ pub struct MachinePoolTemplateMetadataOwnerReferences { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachinePoolTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -247,35 +247,35 @@ pub struct MachinePoolTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// Data contains the bootstrap data, such as cloud-init details scripts. + /// data contains the bootstrap data, such as cloud-init details scripts. /// If nil, the Machine should remain in the Pending state. /// /// Deprecated: Switch to DataSecretName. #[serde(default, skip_serializing_if = "Option::is_none")] pub data: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. @@ -315,7 +315,7 @@ pub struct MachinePoolTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecInfrastructureRef { @@ -359,37 +359,37 @@ pub struct MachinePoolStatus { /// The number of available replicas (ready for at least minReadySeconds) for this MachinePool. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// Conditions define the current service state of the MachinePool. + /// conditions define the current service state of the MachinePool. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// FailureMessage indicates that there is a problem reconciling the state, + /// failureMessage indicates that there is a problem reconciling the state, /// and will be set to a descriptive error message. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a problem reconciling the state, and + /// failureReason indicates that there is a problem reconciling the state, and /// will be set to a token value suitable for programmatic interpretation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// NodeRefs will point to the corresponding Nodes if it they exist. + /// nodeRefs will point to the corresponding Nodes if it they exist. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRefs")] pub node_refs: Option>, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Total number of unavailable machine instances targeted by this machine pool. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machines.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machines.rs index e2937babd..42e84f6f5 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machines.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machines.rs @@ -20,26 +20,26 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -51,35 +51,35 @@ pub struct MachineSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// Data contains the bootstrap data, such as cloud-init details scripts. + /// data contains the bootstrap data, such as cloud-init details scripts. /// If nil, the Machine should remain in the Pending state. /// /// Deprecated: Switch to DataSecretName. #[serde(default, skip_serializing_if = "Option::is_none")] pub data: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. @@ -119,7 +119,7 @@ pub struct MachineBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineInfrastructureRef { @@ -160,17 +160,17 @@ pub struct MachineInfrastructureRef { /// MachineStatus defines the observed state of Machine. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatus { - /// Addresses is a list of addresses assigned to the machine. + /// addresses is a list of addresses assigned to the machine. /// This field is copied from the infrastructure provider reference. #[serde(default, skip_serializing_if = "Option::is_none")] pub addresses: Option>, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// Conditions defines current service state of the Machine. + /// conditions defines current service state of the Machine. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// FailureMessage will be set in the event that there is a terminal problem + /// failureMessage will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a more verbose string suitable /// for logging and human consumption. /// @@ -188,7 +188,7 @@ pub struct MachineStatus { /// controller's output. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason will be set in the event that there is a terminal problem + /// failureReason will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a succinct value suitable /// for machine interpretation. /// @@ -206,23 +206,23 @@ pub struct MachineStatus { /// controller's output. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// LastUpdated identifies when the phase of the Machine last transitioned. + /// lastUpdated identifies when the phase of the Machine last transitioned. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdated")] pub last_updated: Option, - /// NodeRef will point to the corresponding Node if it exists. + /// nodeRef will point to the corresponding Node if it exists. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRef")] pub node_ref: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of machine actuation. + /// phase represents the current phase of machine actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, - /// Version specifies the current version of Kubernetes running + /// version specifies the current version of Kubernetes running /// on the corresponding Node. This is meant to be a means of bubbling /// up status from the Node to the Machine. /// It is entirely optional, but useful for end-user UX if it’s present. @@ -240,7 +240,7 @@ pub struct MachineStatusAddresses { pub r#type: String, } -/// NodeRef will point to the corresponding Node if it exists. +/// nodeRef will point to the corresponding Node if it exists. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatusNodeRef { /// API version of the referent. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinesets.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinesets.rs index f387eabba..c8c29f2ab 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinesets.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha3/machinesets.rs @@ -20,28 +20,28 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSetSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// DeletePolicy defines the policy used to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used to identify nodes to delete when downscaling. /// Defaults to "Random". Valid values are "Random, "Newest", "Oldest" #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] pub delete_policy: Option, - /// MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready. + /// minReadySeconds is the minimum number of seconds for which a newly created machine should be ready. /// Defaults to 0 (machine will be considered available as soon as it is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// Replicas is the number of desired replicas. + /// replicas is the number of desired replicas. /// This is a pointer to distinguish between explicit zero and unspecified. /// Defaults to 1. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is a label query over machines that should match the replica count. + /// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors pub selector: MachineSetSelector, - /// Template is the object that describes the machine that will be created if + /// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -56,7 +56,7 @@ pub enum MachineSetDeletePolicy { Oldest, } -/// Selector is a label query over machines that should match the replica count. +/// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors @@ -89,7 +89,7 @@ pub struct MachineSetSelectorMatchExpressions { pub values: Option>, } -/// Template is the object that describes the machine that will be created if +/// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -108,13 +108,13 @@ pub struct MachineSetTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// GenerateName is an optional prefix, used by the server, to generate a unique + /// generateName is an optional prefix, used by the server, to generate a unique /// name ONLY IF the Name field has not been provided. /// If this field is used, the name returned to the client will be different /// than the name passed. This value will also be combined with a unique suffix. @@ -139,7 +139,7 @@ pub struct MachineSetTemplateMetadata { /// More info: http://kubernetes.io/docs/user-guide/labels #[serde(default, skip_serializing_if = "Option::is_none")] pub labels: Option>, - /// Name must be unique within a namespace. Is required when creating resources, although + /// name must be unique within a namespace. Is required when creating resources, although /// some resources may allow a client to request the generation of an appropriate name /// automatically. Name is primarily intended for creation idempotence and configuration /// definition. @@ -149,7 +149,7 @@ pub struct MachineSetTemplateMetadata { /// Deprecated: This field has no function and is going to be removed in a next release. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace defines the space within each name must be unique. An empty namespace is + /// namespace defines the space within each name must be unique. An empty namespace is /// equivalent to the "default" namespace, but "default" is the canonical representation. /// Not all objects are required to be scoped to a namespace - the value of this field for /// those objects will be empty. @@ -207,26 +207,26 @@ pub struct MachineSetTemplateMetadataOwnerReferences { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineSetTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -238,35 +238,35 @@ pub struct MachineSetTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// Data contains the bootstrap data, such as cloud-init details scripts. + /// data contains the bootstrap data, such as cloud-init details scripts. /// If nil, the Machine should remain in the Pending state. /// /// Deprecated: Switch to DataSecretName. #[serde(default, skip_serializing_if = "Option::is_none")] pub data: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.Data without /// the need of a controller. @@ -306,7 +306,7 @@ pub struct MachineSetTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecInfrastructureRef { @@ -375,16 +375,16 @@ pub struct MachineSetStatus { /// The number of replicas that have labels matching the labels of the machine template of the MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fullyLabeledReplicas")] pub fully_labeled_replicas: Option, - /// ObservedGeneration reflects the generation of the most recently observed MachineSet. + /// observedGeneration reflects the generation of the most recently observed MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, /// The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusterclasses.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusterclasses.rs index aedfdbc6a..e20f32d42 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusterclasses.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusterclasses.rs @@ -19,25 +19,25 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ClusterClassSpec { - /// ControlPlane is a reference to a local struct that holds the details + /// controlPlane is a reference to a local struct that holds the details /// for provisioning the Control Plane for the Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, - /// Infrastructure is a reference to a provider-specific template that holds + /// infrastructure is a reference to a provider-specific template that holds /// the details for provisioning infrastructure specific cluster /// for the underlying provider. /// The underlying provider is responsible for the implementation /// of the template to an infrastructure cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub infrastructure: Option, - /// Workers describes the worker nodes for the cluster. + /// workers describes the worker nodes for the cluster. /// It is a collection of node types which can be used to create /// the worker nodes of the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub workers: Option, } -/// ControlPlane is a reference to a local struct that holds the details +/// controlPlane is a reference to a local struct that holds the details /// for provisioning the Control Plane for the Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlane { @@ -48,14 +48,14 @@ pub struct ClusterClassControlPlane { /// referenced above is Machine based and supports setting replicas. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineInfrastructure")] pub machine_infrastructure: Option, - /// Metadata is the metadata applied to the machines of the ControlPlane. + /// metadata is the metadata applied to the machines of the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the topology. /// /// This field is supported if and only if the control plane provider template /// referenced is Machine based. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, @@ -68,13 +68,13 @@ pub struct ClusterClassControlPlane { /// referenced above is Machine based and supports setting replicas. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMachineInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMachineInfrastructureRef { @@ -112,14 +112,14 @@ pub struct ClusterClassControlPlaneMachineInfrastructureRef { pub uid: Option, } -/// Metadata is the metadata applied to the machines of the ControlPlane. +/// metadata is the metadata applied to the machines of the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the topology. /// /// This field is supported if and only if the control plane provider template /// referenced is Machine based. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -133,7 +133,7 @@ pub struct ClusterClassControlPlaneMetadata { pub labels: Option>, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneRef { @@ -171,20 +171,20 @@ pub struct ClusterClassControlPlaneRef { pub uid: Option, } -/// Infrastructure is a reference to a provider-specific template that holds +/// infrastructure is a reference to a provider-specific template that holds /// the details for provisioning infrastructure specific cluster /// for the underlying provider. /// The underlying provider is responsible for the implementation /// of the template to an infrastructure cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassInfrastructureRef { @@ -222,12 +222,12 @@ pub struct ClusterClassInfrastructureRef { pub uid: Option, } -/// Workers describes the worker nodes for the cluster. +/// workers describes the worker nodes for the cluster. /// It is a collection of node types which can be used to create /// the worker nodes of the cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkers { - /// MachineDeployments is a list of machine deployment classes that can be used to create + /// machineDeployments is a list of machine deployment classes that can be used to create /// a set of worker nodes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineDeployments")] pub machine_deployments: Option>, @@ -237,42 +237,42 @@ pub struct ClusterClassWorkers { /// provisioned using the `ClusterClass`. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeployments { - /// Class denotes a type of worker node present in the cluster, + /// class denotes a type of worker node present in the cluster, /// this name MUST be unique within a ClusterClass and can be referenced /// in the Cluster to create a managed MachineDeployment. pub class: String, - /// Template is a local struct containing a collection of templates for creation of + /// template is a local struct containing a collection of templates for creation of /// MachineDeployment objects representing a set of worker nodes. pub template: ClusterClassWorkersMachineDeploymentsTemplate, } -/// Template is a local struct containing a collection of templates for creation of +/// template is a local struct containing a collection of templates for creation of /// MachineDeployment objects representing a set of worker nodes. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplate { - /// Bootstrap contains the bootstrap template reference to be used + /// bootstrap contains the bootstrap template reference to be used /// for the creation of worker Machines. pub bootstrap: ClusterClassWorkersMachineDeploymentsTemplateBootstrap, - /// Infrastructure contains the infrastructure template reference to be used + /// infrastructure contains the infrastructure template reference to be used /// for the creation of worker Machines. pub infrastructure: ClusterClassWorkersMachineDeploymentsTemplateInfrastructure, - /// Metadata is the metadata applied to the machines of the MachineDeployment. + /// metadata is the metadata applied to the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, } -/// Bootstrap contains the bootstrap template reference to be used +/// bootstrap contains the bootstrap template reference to be used /// for the creation of worker Machines. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrap { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrapRef { @@ -310,17 +310,17 @@ pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrapRef { pub uid: Option, } -/// Infrastructure contains the infrastructure template reference to be used +/// infrastructure contains the infrastructure template reference to be used /// for the creation of worker Machines. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructureRef { @@ -358,11 +358,11 @@ pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructureRef { pub uid: Option, } -/// Metadata is the metadata applied to the machines of the MachineDeployment. +/// metadata is the metadata applied to the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusters.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusters.rs index 7652587c1..bd6752af4 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusters.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/clusters.rs @@ -24,18 +24,18 @@ pub struct ClusterSpec { /// Cluster network configuration. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterNetwork")] pub cluster_network: Option, - /// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. + /// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneEndpoint")] pub control_plane_endpoint: Option, - /// ControlPlaneRef is an optional reference to a provider-specific resource that holds + /// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneRef")] pub control_plane_ref: Option, - /// InfrastructureRef is a reference to a provider-specific resource that holds the details + /// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureRef")] pub infrastructure_ref: Option, - /// Paused can be used to prevent controllers from processing the Cluster and all its associated objects. + /// paused can be used to prevent controllers from processing the Cluster and all its associated objects. #[serde(default, skip_serializing_if = "Option::is_none")] pub paused: Option, /// This encapsulates the topology for the cluster. @@ -49,7 +49,7 @@ pub struct ClusterSpec { /// Cluster network configuration. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClusterNetwork { - /// APIServerPort specifies the port the API Server should bind to. + /// apiServerPort specifies the port the API Server should bind to. /// Defaults to 6443. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerPort")] pub api_server_port: Option, @@ -78,7 +78,7 @@ pub struct ClusterClusterNetworkServices { pub cidr_blocks: Vec, } -/// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. +/// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneEndpoint { /// The hostname on which the API server is serving. @@ -87,7 +87,7 @@ pub struct ClusterControlPlaneEndpoint { pub port: i32, } -/// ControlPlaneRef is an optional reference to a provider-specific resource that holds +/// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneRef { @@ -125,7 +125,7 @@ pub struct ClusterControlPlaneRef { pub uid: Option, } -/// InfrastructureRef is a reference to a provider-specific resource that holds the details +/// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInfrastructureRef { @@ -171,32 +171,32 @@ pub struct ClusterInfrastructureRef { pub struct ClusterTopology { /// The name of the ClusterClass object to create the topology. pub class: String, - /// ControlPlane describes the cluster control plane. + /// controlPlane describes the cluster control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, - /// RolloutAfter performs a rollout of the entire cluster one component at a time, + /// rolloutAfter performs a rollout of the entire cluster one component at a time, /// control plane first and then machine deployments. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rolloutAfter")] pub rollout_after: Option, /// The Kubernetes version of the cluster. pub version: String, - /// Workers encapsulates the different constructs that form the worker nodes + /// workers encapsulates the different constructs that form the worker nodes /// for the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub workers: Option, } -/// ControlPlane describes the cluster control plane. +/// controlPlane describes the cluster control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlane { - /// Metadata is the metadata applied to the machines of the ControlPlane. + /// metadata is the metadata applied to the machines of the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. /// /// This field is supported if and only if the control plane provider template /// referenced in the ClusterClass is Machine based. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// Replicas is the number of control plane nodes. + /// replicas is the number of control plane nodes. /// If the value is nil, the ControlPlane object is created without the number of Replicas /// and it's assumed that the control plane controller does not implement support for this field. /// When specified against a control plane provider that lacks support for this field, this value will be ignored. @@ -204,14 +204,14 @@ pub struct ClusterTopologyControlPlane { pub replicas: Option, } -/// Metadata is the metadata applied to the machines of the ControlPlane. +/// metadata is the metadata applied to the machines of the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. /// /// This field is supported if and only if the control plane provider template /// referenced in the ClusterClass is Machine based. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlaneMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -225,11 +225,11 @@ pub struct ClusterTopologyControlPlaneMetadata { pub labels: Option>, } -/// Workers encapsulates the different constructs that form the worker nodes +/// workers encapsulates the different constructs that form the worker nodes /// for the cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkers { - /// MachineDeployments is a list of machine deployments in the cluster. + /// machineDeployments is a list of machine deployments in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineDeployments")] pub machine_deployments: Option>, } @@ -238,20 +238,20 @@ pub struct ClusterTopologyWorkers { /// This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeployments { - /// Class is the name of the MachineDeploymentClass used to create the set of worker nodes. + /// class is the name of the MachineDeploymentClass used to create the set of worker nodes. /// This should match one of the deployment classes defined in the ClusterClass object /// mentioned in the `Cluster.Spec.Class` field. pub class: String, - /// Metadata is the metadata applied to the machines of the MachineDeployment. + /// metadata is the metadata applied to the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// Name is the unique identifier for this MachineDeploymentTopology. + /// name is the unique identifier for this MachineDeploymentTopology. /// The value is used with other unique identifiers to create a MachineDeployment's Name /// (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, /// the values are hashed together. pub name: String, - /// Replicas is the number of worker nodes belonging to this set. + /// replicas is the number of worker nodes belonging to this set. /// If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to zero) /// and it's assumed that an external entity (like cluster autoscaler) is responsible for the management /// of this value. @@ -259,11 +259,11 @@ pub struct ClusterTopologyWorkersMachineDeployments { pub replicas: Option, } -/// Metadata is the metadata applied to the machines of the MachineDeployment. +/// metadata is the metadata applied to the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -280,43 +280,43 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMetadata { /// ClusterStatus defines the observed state of Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatus { - /// Conditions defines current service state of the cluster. + /// conditions defines current service state of the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ControlPlaneReady defines if the control plane is ready. + /// controlPlaneReady defines if the control plane is ready. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneReady")] pub control_plane_ready: Option, - /// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. + /// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, - /// FailureMessage indicates that there is a fatal problem reconciling the + /// failureMessage indicates that there is a fatal problem reconciling the /// state, and will be set to a descriptive error message. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a fatal problem reconciling the + /// failureReason indicates that there is a fatal problem reconciling the /// state, and will be set to a token value suitable for /// programmatic interpretation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, } -/// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. +/// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatusFailureDomains { - /// Attributes is a free form map of attributes an infrastructure provider might use or require. + /// attributes is a free form map of attributes an infrastructure provider might use or require. #[serde(default, skip_serializing_if = "Option::is_none")] pub attributes: Option>, - /// ControlPlane determines if this failure domain is suitable for use by control plane machines. + /// controlPlane determines if this failure domain is suitable for use by control plane machines. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, } diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinedeployments.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinedeployments.rs index 7a87e9800..ccc6d7df0 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinedeployments.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinedeployments.rs @@ -22,7 +22,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineDeploymentSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, /// Minimum number of seconds for which a newly created machine should @@ -58,7 +58,7 @@ pub struct MachineDeploymentSpec { /// new ones. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachineDeploymentTemplate, } @@ -102,7 +102,7 @@ pub struct MachineDeploymentStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. + /// type of deployment. /// Default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, @@ -112,7 +112,7 @@ pub struct MachineDeploymentStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentStrategyRollingUpdate { - /// DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. /// Valid values are "Random, "Newest", "Oldest" /// When no value is supplied, the default DeletePolicy of MachineSet is used #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] @@ -165,7 +165,7 @@ pub enum MachineDeploymentStrategyType { OnDelete, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplate { /// Standard object's metadata. @@ -182,7 +182,7 @@ pub struct MachineDeploymentTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -200,26 +200,26 @@ pub struct MachineDeploymentTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineDeploymentTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -231,29 +231,29 @@ pub struct MachineDeploymentTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -293,7 +293,7 @@ pub struct MachineDeploymentTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecInfrastructureRef { @@ -338,13 +338,13 @@ pub struct MachineDeploymentStatus { /// targeted by this deployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Conditions defines current service state of the MachineDeployment. + /// conditions defines current service state of the MachineDeployment. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// The generation observed by the deployment controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). + /// phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// Total number of ready machines targeted by this deployment. @@ -354,7 +354,7 @@ pub struct MachineDeploymentStatus { /// (their labels match the selector). #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinehealthchecks.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinehealthchecks.rs index 29a328d16..556fb799c 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinehealthchecks.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinehealthchecks.rs @@ -22,7 +22,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineHealthCheckSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, /// Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by @@ -35,7 +35,7 @@ pub struct MachineHealthCheckSpec { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -45,7 +45,7 @@ pub struct MachineHealthCheckSpec { pub remediation_template: Option, /// Label selector to match machines whose health will be exercised pub selector: MachineHealthCheckSelector, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(rename = "unhealthyConditions")] @@ -59,7 +59,7 @@ pub struct MachineHealthCheckSpec { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -145,7 +145,7 @@ pub struct MachineHealthCheckUnhealthyConditions { /// Most recently observed status of MachineHealthCheck resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineHealthCheckStatus { - /// Conditions defines current service state of the MachineHealthCheck. + /// conditions defines current service state of the MachineHealthCheck. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// total number of healthy machines counted by this machine health check @@ -154,14 +154,14 @@ pub struct MachineHealthCheckStatus { /// total number of machines counted by this machine health check #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedMachines")] pub expected_machines: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// RemediationsAllowed is the number of further remediations allowed by this machine health check before + /// remediationsAllowed is the number of further remediations allowed by this machine health check before /// maxUnhealthy short circuiting will be applied #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationsAllowed")] pub remediations_allowed: Option, - /// Targets shows the current list of machines the machine health check is watching + /// targets shows the current list of machines the machine health check is watching #[serde(default, skip_serializing_if = "Option::is_none")] pub targets: Option>, } diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinepools.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinepools.rs index e123d2e78..a1855ecbe 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinepools.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinepools.rs @@ -21,10 +21,10 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachinePoolSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomains is the list of failure domains this MachinePool should be attached to. + /// failureDomains is the list of failure domains this MachinePool should be attached to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, /// Minimum number of seconds for which a newly created machine instances should @@ -33,7 +33,7 @@ pub struct MachinePoolSpec { /// is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// ProviderIDList are the identification IDs of machine instances provided by the provider. + /// providerIDList are the identification IDs of machine instances provided by the provider. /// This field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerIDList")] pub provider_id_list: Option>, @@ -41,11 +41,11 @@ pub struct MachinePoolSpec { /// This is a pointer to distinguish between explicit zero and not specified. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachinePoolTemplate, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplate { /// Standard object's metadata. @@ -62,7 +62,7 @@ pub struct MachinePoolTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -80,26 +80,26 @@ pub struct MachinePoolTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachinePoolTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -111,29 +111,29 @@ pub struct MachinePoolTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -173,7 +173,7 @@ pub struct MachinePoolTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecInfrastructureRef { @@ -217,37 +217,37 @@ pub struct MachinePoolStatus { /// The number of available replicas (ready for at least minReadySeconds) for this MachinePool. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// Conditions define the current service state of the MachinePool. + /// conditions define the current service state of the MachinePool. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// FailureMessage indicates that there is a problem reconciling the state, + /// failureMessage indicates that there is a problem reconciling the state, /// and will be set to a descriptive error message. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a problem reconciling the state, and + /// failureReason indicates that there is a problem reconciling the state, and /// will be set to a token value suitable for programmatic interpretation. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// NodeRefs will point to the corresponding Nodes if it they exist. + /// nodeRefs will point to the corresponding Nodes if it they exist. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRefs")] pub node_refs: Option>, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Total number of unavailable machine instances targeted by this machine pool. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machines.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machines.rs index 5fab2ebd1..61980e4cb 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machines.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machines.rs @@ -20,26 +20,26 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -51,29 +51,29 @@ pub struct MachineSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -113,7 +113,7 @@ pub struct MachineBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineInfrastructureRef { @@ -154,17 +154,17 @@ pub struct MachineInfrastructureRef { /// MachineStatus defines the observed state of Machine. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatus { - /// Addresses is a list of addresses assigned to the machine. + /// addresses is a list of addresses assigned to the machine. /// This field is copied from the infrastructure provider reference. #[serde(default, skip_serializing_if = "Option::is_none")] pub addresses: Option>, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// Conditions defines current service state of the Machine. + /// conditions defines current service state of the Machine. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// FailureMessage will be set in the event that there is a terminal problem + /// failureMessage will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a more verbose string suitable /// for logging and human consumption. /// @@ -182,7 +182,7 @@ pub struct MachineStatus { /// controller's output. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason will be set in the event that there is a terminal problem + /// failureReason will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a succinct value suitable /// for machine interpretation. /// @@ -200,27 +200,27 @@ pub struct MachineStatus { /// controller's output. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// LastUpdated identifies when the phase of the Machine last transitioned. + /// lastUpdated identifies when the phase of the Machine last transitioned. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdated")] pub last_updated: Option, - /// NodeInfo is a set of ids/uuids to uniquely identify the node. + /// nodeInfo is a set of ids/uuids to uniquely identify the node. /// More info: https://kubernetes.io/docs/concepts/nodes/node/#info #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeInfo")] pub node_info: Option, - /// NodeRef will point to the corresponding Node if it exists. + /// nodeRef will point to the corresponding Node if it exists. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRef")] pub node_ref: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of machine actuation. + /// phase represents the current phase of machine actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, - /// Version specifies the current version of Kubernetes running + /// version specifies the current version of Kubernetes running /// on the corresponding Node. This is meant to be a means of bubbling /// up status from the Node to the Machine. /// It is entirely optional, but useful for end-user UX if it’s present. @@ -238,7 +238,7 @@ pub struct MachineStatusAddresses { pub r#type: String, } -/// NodeInfo is a set of ids/uuids to uniquely identify the node. +/// nodeInfo is a set of ids/uuids to uniquely identify the node. /// More info: https://kubernetes.io/docs/concepts/nodes/node/#info #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatusNodeInfo { @@ -277,7 +277,7 @@ pub struct MachineStatusNodeInfo { pub system_uuid: String, } -/// NodeRef will point to the corresponding Node if it exists. +/// nodeRef will point to the corresponding Node if it exists. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatusNodeRef { /// API version of the referent. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinesets.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinesets.rs index 0671e80d3..d79d2fbab 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinesets.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1alpha4/machinesets.rs @@ -21,28 +21,28 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSetSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// DeletePolicy defines the policy used to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used to identify nodes to delete when downscaling. /// Defaults to "Random". Valid values are "Random, "Newest", "Oldest" #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] pub delete_policy: Option, - /// MinReadySeconds is the minimum number of seconds for which a newly created machine should be ready. + /// minReadySeconds is the minimum number of seconds for which a newly created machine should be ready. /// Defaults to 0 (machine will be considered available as soon as it is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// Replicas is the number of desired replicas. + /// replicas is the number of desired replicas. /// This is a pointer to distinguish between explicit zero and unspecified. /// Defaults to 1. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is a label query over machines that should match the replica count. + /// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors pub selector: MachineSetSelector, - /// Template is the object that describes the machine that will be created if + /// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -57,7 +57,7 @@ pub enum MachineSetDeletePolicy { Oldest, } -/// Selector is a label query over machines that should match the replica count. +/// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors @@ -90,7 +90,7 @@ pub struct MachineSetSelectorMatchExpressions { pub values: Option>, } -/// Template is the object that describes the machine that will be created if +/// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -109,7 +109,7 @@ pub struct MachineSetTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -127,26 +127,26 @@ pub struct MachineSetTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineSetTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -158,29 +158,29 @@ pub struct MachineSetTemplateSpec { /// be interfacing with cluster-api as generic provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerID")] pub provider_id: Option, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -220,7 +220,7 @@ pub struct MachineSetTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecInfrastructureRef { @@ -264,7 +264,7 @@ pub struct MachineSetStatus { /// The number of available replicas (ready for at least minReadySeconds) for this MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Conditions defines current service state of the MachineSet. + /// conditions defines current service state of the MachineSet. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] @@ -292,16 +292,16 @@ pub struct MachineSetStatus { /// The number of replicas that have labels matching the labels of the machine template of the MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fullyLabeledReplicas")] pub fully_labeled_replicas: Option, - /// ObservedGeneration reflects the generation of the most recently observed MachineSet. + /// observedGeneration reflects the generation of the most recently observed MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, /// The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusterclasses.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusterclasses.rs index 600ccda41..1aaf937de 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusterclasses.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusterclasses.rs @@ -22,50 +22,50 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ClusterClassSpec { - /// ControlPlane is a reference to a local struct that holds the details + /// controlPlane is a reference to a local struct that holds the details /// for provisioning the Control Plane for the Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, - /// Infrastructure is a reference to a provider-specific template that holds + /// infrastructure is a reference to a provider-specific template that holds /// the details for provisioning infrastructure specific cluster /// for the underlying provider. /// The underlying provider is responsible for the implementation /// of the template to an infrastructure cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub infrastructure: Option, - /// Patches defines the patches which are applied to customize + /// patches defines the patches which are applied to customize /// referenced templates of a ClusterClass. /// Note: Patches will be applied in the order of the array. #[serde(default, skip_serializing_if = "Option::is_none")] pub patches: Option>, - /// Variables defines the variables which can be configured + /// variables defines the variables which can be configured /// in the Cluster topology and are then used in patches. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option>, - /// Workers describes the worker nodes for the cluster. + /// workers describes the worker nodes for the cluster. /// It is a collection of node types which can be used to create /// the worker nodes of the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub workers: Option, } -/// ControlPlane is a reference to a local struct that holds the details +/// controlPlane is a reference to a local struct that holds the details /// for provisioning the Control Plane for the Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlane { - /// MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. + /// machineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. /// This field is supported if and only if the ControlPlane provider template /// referenced above is Machine based and supports setting replicas. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineHealthCheck")] pub machine_health_check: Option, - /// MachineInfrastructure defines the metadata and infrastructure information + /// machineInfrastructure defines the metadata and infrastructure information /// for control plane machines. /// /// This field is supported if and only if the control plane provider template /// referenced above is Machine based and supports setting replicas. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineInfrastructure")] pub machine_infrastructure: Option, - /// Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane + /// metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane /// if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the /// ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the topology. @@ -74,33 +74,33 @@ pub struct ClusterClassControlPlane { /// referenced is Machine based. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// NamingStrategy allows changing the naming pattern used when creating the control plane provider object. + /// namingStrategy allows changing the naming pattern used when creating the control plane provider object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namingStrategy")] pub naming_strategy: Option, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. /// NOTE: This value can be overridden while defining a Cluster.Topology. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` /// NOTE: This value can be overridden while defining a Cluster.Topology. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. /// NOTE: This value can be overridden while defining a Cluster.Topology. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// MachineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. +/// machineHealthCheck defines a MachineHealthCheck for this ControlPlaneClass. /// This field is supported if and only if the ControlPlane provider template /// referenced above is Machine based and supports setting replicas. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -109,7 +109,7 @@ pub struct ClusterClassControlPlaneMachineHealthCheck { /// "selector" are not healthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnhealthy")] pub max_unhealthy: Option, - /// NodeStartupTimeout allows to set the maximum time for MachineHealthCheck + /// nodeStartupTimeout allows to set the maximum time for MachineHealthCheck /// to consider a Machine unhealthy if a corresponding Node isn't associated /// through a `Spec.ProviderID` field. /// @@ -123,7 +123,7 @@ pub struct ClusterClassControlPlaneMachineHealthCheck { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -131,7 +131,7 @@ pub struct ClusterClassControlPlaneMachineHealthCheck { /// a controller that lives outside of Cluster API. #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationTemplate")] pub remediation_template: Option, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unhealthyConditions")] @@ -145,7 +145,7 @@ pub struct ClusterClassControlPlaneMachineHealthCheck { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -198,20 +198,20 @@ pub struct ClusterClassControlPlaneMachineHealthCheckUnhealthyConditions { pub r#type: String, } -/// MachineInfrastructure defines the metadata and infrastructure information +/// machineInfrastructure defines the metadata and infrastructure information /// for control plane machines. /// /// This field is supported if and only if the control plane provider template /// referenced above is Machine based and supports setting replicas. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMachineInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMachineInfrastructureRef { @@ -249,7 +249,7 @@ pub struct ClusterClassControlPlaneMachineInfrastructureRef { pub uid: Option, } -/// Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane +/// metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane /// if the ControlPlaneTemplate referenced is machine based. If not, it is applied only to the /// ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the topology. @@ -258,7 +258,7 @@ pub struct ClusterClassControlPlaneMachineInfrastructureRef { /// referenced is Machine based. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -272,10 +272,10 @@ pub struct ClusterClassControlPlaneMetadata { pub labels: Option>, } -/// NamingStrategy allows changing the naming pattern used when creating the control plane provider object. +/// namingStrategy allows changing the naming pattern used when creating the control plane provider object. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneNamingStrategy { - /// Template defines the template to use for generating the name of the ControlPlane object. + /// template defines the template to use for generating the name of the ControlPlane object. /// If not defined, it will fallback to `{{ .cluster.name }}-{{ .random }}`. /// If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will /// get concatenated with a random suffix of length 5. @@ -286,7 +286,7 @@ pub struct ClusterClassControlPlaneNamingStrategy { pub template: Option, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassControlPlaneRef { @@ -324,20 +324,20 @@ pub struct ClusterClassControlPlaneRef { pub uid: Option, } -/// Infrastructure is a reference to a provider-specific template that holds +/// infrastructure is a reference to a provider-specific template that holds /// the details for provisioning infrastructure specific cluster /// for the underlying provider. /// The underlying provider is responsible for the implementation /// of the template to an infrastructure cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassInfrastructureRef { @@ -378,54 +378,54 @@ pub struct ClusterClassInfrastructureRef { /// ClusterClassPatch defines a patch which is applied to customize the referenced templates. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatches { - /// Definitions define inline patches. + /// definitions define inline patches. /// Note: Patches will be applied in the order of the array. /// Note: Exactly one of Definitions or External must be set. #[serde(default, skip_serializing_if = "Option::is_none")] pub definitions: Option>, - /// Description is a human-readable description of this patch. + /// description is a human-readable description of this patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub description: Option, - /// EnabledIf is a Go template to be used to calculate if a patch should be enabled. + /// enabledIf is a Go template to be used to calculate if a patch should be enabled. /// It can reference variables defined in .spec.variables and builtin variables. /// The patch will be enabled if the template evaluates to `true`, otherwise it will /// be disabled. /// If EnabledIf is not set, the patch will be enabled per default. #[serde(default, skip_serializing_if = "Option::is_none", rename = "enabledIf")] pub enabled_if: Option, - /// External defines an external patch. + /// external defines an external patch. /// Note: Exactly one of Definitions or External must be set. #[serde(default, skip_serializing_if = "Option::is_none")] pub external: Option, - /// Name of the patch. + /// name of the patch. pub name: String, } /// PatchDefinition defines a patch which is applied to customize the referenced templates. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitions { - /// JSONPatches defines the patches which should be applied on the templates + /// jsonPatches defines the patches which should be applied on the templates /// matching the selector. /// Note: Patches will be applied in the order of the array. #[serde(rename = "jsonPatches")] pub json_patches: Vec, - /// Selector defines on which templates the patch should be applied. + /// selector defines on which templates the patch should be applied. pub selector: ClusterClassPatchesDefinitionsSelector, } /// JSONPatch defines a JSON patch. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsJsonPatches { - /// Op defines the operation of the patch. + /// op defines the operation of the patch. /// Note: Only `add`, `replace` and `remove` are supported. pub op: String, - /// Path defines the path of the patch. + /// path defines the path of the patch. /// Note: Only the spec of a template can be patched, thus the path has to start with /spec/. /// Note: For now the only allowed array modifications are `append` and `prepend`, i.e.: /// * for op: `add`: only index 0 (prepend) and - (append) are allowed /// * for op: `replace` or `remove`: no indexes are allowed pub path: String, - /// Value defines the value of the patch. + /// value defines the value of the patch. /// Note: Either Value or ValueFrom is required for add and replace /// operations. Only one of them is allowed to be set at the same time. /// Note: We have to use apiextensionsv1.JSON instead of our JSON type, @@ -434,97 +434,97 @@ pub struct ClusterClassPatchesDefinitionsJsonPatches { /// Ref: https://github.com/kubernetes-sigs/controller-tools/blob/d0e03a142d0ecdd5491593e941ee1d6b5d91dba6/pkg/crd/known_types.go#L106-L111 #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, - /// ValueFrom defines the value of the patch. + /// valueFrom defines the value of the patch. /// Note: Either Value or ValueFrom is required for add and replace /// operations. Only one of them is allowed to be set at the same time. #[serde(default, skip_serializing_if = "Option::is_none", rename = "valueFrom")] pub value_from: Option, } -/// ValueFrom defines the value of the patch. +/// valueFrom defines the value of the patch. /// Note: Either Value or ValueFrom is required for add and replace /// operations. Only one of them is allowed to be set at the same time. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsJsonPatchesValueFrom { - /// Template is the Go template to be used to calculate the value. + /// template is the Go template to be used to calculate the value. /// A template can reference variables defined in .spec.variables and builtin variables. /// Note: The template must evaluate to a valid YAML or JSON value. #[serde(default, skip_serializing_if = "Option::is_none")] pub template: Option, - /// Variable is the variable to be used as value. + /// variable is the variable to be used as value. /// Variable can be one of the variables defined in .spec.variables or a builtin variable. #[serde(default, skip_serializing_if = "Option::is_none")] pub variable: Option, } -/// Selector defines on which templates the patch should be applied. +/// selector defines on which templates the patch should be applied. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsSelector { - /// APIVersion filters templates by apiVersion. + /// apiVersion filters templates by apiVersion. #[serde(rename = "apiVersion")] pub api_version: String, - /// Kind filters templates by kind. + /// kind filters templates by kind. pub kind: String, - /// MatchResources selects templates based on where they are referenced. + /// matchResources selects templates based on where they are referenced. #[serde(rename = "matchResources")] pub match_resources: ClusterClassPatchesDefinitionsSelectorMatchResources, } -/// MatchResources selects templates based on where they are referenced. +/// matchResources selects templates based on where they are referenced. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsSelectorMatchResources { - /// ControlPlane selects templates referenced in .spec.ControlPlane. + /// controlPlane selects templates referenced in .spec.ControlPlane. /// Note: this will match the controlPlane and also the controlPlane /// machineInfrastructure (depending on the kind and apiVersion). #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, - /// InfrastructureCluster selects templates referenced in .spec.infrastructure. + /// infrastructureCluster selects templates referenced in .spec.infrastructure. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureCluster")] pub infrastructure_cluster: Option, - /// MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in + /// machineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in /// .spec.workers.machineDeployments. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineDeploymentClass")] pub machine_deployment_class: Option, - /// MachinePoolClass selects templates referenced in specific MachinePoolClasses in + /// machinePoolClass selects templates referenced in specific MachinePoolClasses in /// .spec.workers.machinePools. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machinePoolClass")] pub machine_pool_class: Option, } -/// MachineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in +/// machineDeploymentClass selects templates referenced in specific MachineDeploymentClasses in /// .spec.workers.machineDeployments. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsSelectorMatchResourcesMachineDeploymentClass { - /// Names selects templates by class names. + /// names selects templates by class names. #[serde(default, skip_serializing_if = "Option::is_none")] pub names: Option>, } -/// MachinePoolClass selects templates referenced in specific MachinePoolClasses in +/// machinePoolClass selects templates referenced in specific MachinePoolClasses in /// .spec.workers.machinePools. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesDefinitionsSelectorMatchResourcesMachinePoolClass { - /// Names selects templates by class names. + /// names selects templates by class names. #[serde(default, skip_serializing_if = "Option::is_none")] pub names: Option>, } -/// External defines an external patch. +/// external defines an external patch. /// Note: Exactly one of Definitions or External must be set. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassPatchesExternal { - /// DiscoverVariablesExtension references an extension which is called to discover variables. + /// discoverVariablesExtension references an extension which is called to discover variables. #[serde(default, skip_serializing_if = "Option::is_none", rename = "discoverVariablesExtension")] pub discover_variables_extension: Option, - /// GenerateExtension references an extension which is called to generate patches. + /// generateExtension references an extension which is called to generate patches. #[serde(default, skip_serializing_if = "Option::is_none", rename = "generateExtension")] pub generate_extension: Option, - /// Settings defines key value pairs to be passed to the extensions. + /// settings defines key value pairs to be passed to the extensions. /// Values defined here take precedence over the values defined in the /// corresponding ExtensionConfig. #[serde(default, skip_serializing_if = "Option::is_none")] pub settings: Option>, - /// ValidateExtension references an extension which is called to validate the topology. + /// validateExtension references an extension which is called to validate the topology. #[serde(default, skip_serializing_if = "Option::is_none", rename = "validateExtension")] pub validate_extension: Option, } @@ -533,32 +533,32 @@ pub struct ClusterClassPatchesExternal { /// be configured in the Cluster topology and used in patches. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariables { - /// Metadata is the metadata of a variable. + /// metadata is the metadata of a variable. /// It can be used to add additional data for higher level tools to /// a ClusterClassVariable. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please use XMetadata in JSONSchemaProps instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// Name of the variable. + /// name of the variable. pub name: String, - /// Required specifies if the variable is required. + /// required specifies if the variable is required. /// Note: this applies to the variable as a whole and thus the /// top-level object defined in the schema. If nested fields are /// required, this will be specified inside the schema. pub required: bool, - /// Schema defines the schema of the variable. + /// schema defines the schema of the variable. pub schema: ClusterClassVariablesSchema, } -/// Metadata is the metadata of a variable. +/// metadata is the metadata of a variable. /// It can be used to add additional data for higher level tools to /// a ClusterClassVariable. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please use XMetadata in JSONSchemaProps instead. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariablesMetadata { - /// Annotations is an unstructured key value map that can be used to store and + /// annotations is an unstructured key value map that can be used to store and /// retrieve arbitrary metadata. /// They are not queryable. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -569,138 +569,138 @@ pub struct ClusterClassVariablesMetadata { pub labels: Option>, } -/// Schema defines the schema of the variable. +/// schema defines the schema of the variable. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariablesSchema { - /// OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 + /// openAPIV3Schema defines the schema of a variable via OpenAPI v3 /// schema. The schema is a subset of the schema used in /// Kubernetes CRDs. #[serde(rename = "openAPIV3Schema")] pub open_apiv3_schema: ClusterClassVariablesSchemaOpenApiv3Schema, } -/// OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 +/// openAPIV3Schema defines the schema of a variable via OpenAPI v3 /// schema. The schema is a subset of the schema used in /// Kubernetes CRDs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariablesSchemaOpenApiv3Schema { - /// AdditionalProperties specifies the schema of values in a map (keys are always strings). + /// additionalProperties specifies the schema of values in a map (keys are always strings). /// NOTE: Can only be set if type is object. /// NOTE: AdditionalProperties is mutually exclusive with Properties. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "additionalProperties")] pub additional_properties: Option, - /// AllOf specifies that the variable must validate against all of the subschemas in the array. + /// allOf specifies that the variable must validate against all of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allOf")] pub all_of: Option, - /// AnyOf specifies that the variable must validate against one or more of the subschemas in the array. + /// anyOf specifies that the variable must validate against one or more of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "anyOf")] pub any_of: Option, - /// Default is the default value of the variable. + /// default is the default value of the variable. /// NOTE: Can be set for all types. #[serde(default, skip_serializing_if = "Option::is_none")] pub default: Option, - /// Description is a human-readable description of this variable. + /// description is a human-readable description of this variable. #[serde(default, skip_serializing_if = "Option::is_none")] pub description: Option, - /// Enum is the list of valid values of the variable. + /// enum is the list of valid values of the variable. /// NOTE: Can be set for all types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "enum")] pub r#enum: Option>>, - /// Example is an example for this variable. + /// example is an example for this variable. #[serde(default, skip_serializing_if = "Option::is_none")] pub example: Option, - /// ExclusiveMaximum specifies if the Maximum is exclusive. + /// exclusiveMaximum specifies if the Maximum is exclusive. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none", rename = "exclusiveMaximum")] pub exclusive_maximum: Option, - /// ExclusiveMinimum specifies if the Minimum is exclusive. + /// exclusiveMinimum specifies if the Minimum is exclusive. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none", rename = "exclusiveMinimum")] pub exclusive_minimum: Option, - /// Format is an OpenAPI v3 format string. Unknown formats are ignored. + /// format is an OpenAPI v3 format string. Unknown formats are ignored. /// For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using) /// https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none")] pub format: Option, - /// Items specifies fields of an array. + /// items specifies fields of an array. /// NOTE: Can only be set if type is array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option, - /// MaxItems is the max length of an array variable. + /// maxItems is the max length of an array variable. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxItems")] pub max_items: Option, - /// MaxLength is the max length of a string variable. + /// maxLength is the max length of a string variable. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxLength")] pub max_length: Option, - /// MaxProperties is the maximum amount of entries in a map or properties in an object. + /// maxProperties is the maximum amount of entries in a map or properties in an object. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxProperties")] pub max_properties: Option, - /// Maximum is the maximum of an integer or number variable. + /// maximum is the maximum of an integer or number variable. /// If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum. /// If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none")] pub maximum: Option, - /// MinItems is the min length of an array variable. + /// minItems is the min length of an array variable. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minItems")] pub min_items: Option, - /// MinLength is the min length of a string variable. + /// minLength is the min length of a string variable. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minLength")] pub min_length: Option, - /// MinProperties is the minimum amount of entries in a map or properties in an object. + /// minProperties is the minimum amount of entries in a map or properties in an object. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minProperties")] pub min_properties: Option, - /// Minimum is the minimum of an integer or number variable. + /// minimum is the minimum of an integer or number variable. /// If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum. /// If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none")] pub minimum: Option, - /// Not specifies that the variable must not validate against the subschema. + /// not specifies that the variable must not validate against the subschema. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub not: Option, - /// OneOf specifies that the variable must validate against exactly one of the subschemas in the array. + /// oneOf specifies that the variable must validate against exactly one of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "oneOf")] pub one_of: Option, - /// Pattern is the regex which a string variable must match. + /// pattern is the regex which a string variable must match. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none")] pub pattern: Option, - /// Properties specifies fields of an object. + /// properties specifies fields of an object. /// NOTE: Can only be set if type is object. /// NOTE: Properties is mutually exclusive with AdditionalProperties. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub properties: Option, - /// Required specifies which fields of an object are required. + /// required specifies which fields of an object are required. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none")] pub required: Option>, - /// Type is the type of the variable. + /// type is the type of the variable. /// Valid values are: object, array, string, integer, number or boolean. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, - /// UniqueItems specifies if items in an array must be unique. + /// uniqueItems specifies if items in an array must be unique. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "uniqueItems")] pub unique_items: Option, @@ -719,15 +719,15 @@ pub struct ClusterClassVariablesSchemaOpenApiv3Schema { /// - ... zero or more #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-int-or-string")] pub x_kubernetes_int_or_string: Option, - /// XPreserveUnknownFields allows setting fields in a variable object + /// x-kubernetes-preserve-unknown-fields allows setting fields in a variable object /// which are not defined in the variable schema. This affects fields recursively, /// except if nested properties or additionalProperties are specified in the schema. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-preserve-unknown-fields")] pub x_kubernetes_preserve_unknown_fields: Option, - /// XValidations describes a list of validation rules written in the CEL expression language. + /// x-kubernetes-validations describes a list of validation rules written in the CEL expression language. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-validations")] pub x_kubernetes_validations: Option>, - /// XMetadata is the metadata of a variable or a nested field within a variable. + /// x-metadata is the metadata of a variable or a nested field within a variable. /// It can be used to add additional data for higher level tools. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-metadata")] pub x_metadata: Option, @@ -736,7 +736,7 @@ pub struct ClusterClassVariablesSchemaOpenApiv3Schema { /// ValidationRule describes a validation rule written in the CEL expression language. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariablesSchemaOpenApiv3SchemaXKubernetesValidations { - /// FieldPath represents the field path returned when the validation fails. + /// fieldPath represents the field path returned when the validation fails. /// It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. /// e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` /// If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` @@ -747,13 +747,13 @@ pub struct ClusterClassVariablesSchemaOpenApiv3SchemaXKubernetesValidations { /// e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, - /// Message represents the message displayed when validation fails. The message is required if the Rule contains + /// message represents the message displayed when validation fails. The message is required if the Rule contains /// line breaks. The message must not contain line breaks. /// If unset, the message is "failed rule: {Rule}". /// e.g. "must be a URL with the host matching spec.host" #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + /// messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. /// Since messageExpression is used as a failure message, it must evaluate to a string. /// If both message and messageExpression are present on a rule, then messageExpression will be used if validation /// fails. If messageExpression results in a runtime error, the validation failure message is produced @@ -764,13 +764,13 @@ pub struct ClusterClassVariablesSchemaOpenApiv3SchemaXKubernetesValidations { /// "x must be less than max ("+string(self.max)+")" #[serde(default, skip_serializing_if = "Option::is_none", rename = "messageExpression")] pub message_expression: Option, - /// Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. + /// reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. /// The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". /// If not set, default to use "FieldValueInvalid". /// All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. #[serde(default, skip_serializing_if = "Option::is_none")] pub reason: Option, - /// Rule represents the expression which will be evaluated by CEL. + /// rule represents the expression which will be evaluated by CEL. /// ref: https://github.com/google/cel-spec /// The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. /// The `self` variable in the CEL expression is bound to the scoped value. @@ -828,11 +828,11 @@ pub enum ClusterClassVariablesSchemaOpenApiv3SchemaXKubernetesValidationsReason FieldValueDuplicate, } -/// XMetadata is the metadata of a variable or a nested field within a variable. +/// x-metadata is the metadata of a variable or a nested field within a variable. /// It can be used to add additional data for higher level tools. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassVariablesSchemaOpenApiv3SchemaXMetadata { - /// Annotations is an unstructured key value map that can be used to store and + /// annotations is an unstructured key value map that can be used to store and /// retrieve arbitrary metadata. /// They are not queryable. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -843,16 +843,16 @@ pub struct ClusterClassVariablesSchemaOpenApiv3SchemaXMetadata { pub labels: Option>, } -/// Workers describes the worker nodes for the cluster. +/// workers describes the worker nodes for the cluster. /// It is a collection of node types which can be used to create /// the worker nodes of the cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkers { - /// MachineDeployments is a list of machine deployment classes that can be used to create + /// machineDeployments is a list of machine deployment classes that can be used to create /// a set of worker nodes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineDeployments")] pub machine_deployments: Option>, - /// MachinePools is a list of machine pool classes that can be used to create + /// machinePools is a list of machine pool classes that can be used to create /// a set of worker nodes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machinePools")] pub machine_pools: Option>, @@ -862,16 +862,16 @@ pub struct ClusterClassWorkers { /// provisioned using the `ClusterClass`. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeployments { - /// Class denotes a type of worker node present in the cluster, + /// class denotes a type of worker node present in the cluster, /// this name MUST be unique within a ClusterClass and can be referenced /// in the Cluster to create a managed MachineDeployment. pub class: String, - /// FailureDomain is the failure domain the machines will be created in. + /// failureDomain is the failure domain the machines will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// MachineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass. + /// machineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineHealthCheck")] pub machine_health_check: Option, /// Minimum number of seconds for which a newly created machine should @@ -881,22 +881,22 @@ pub struct ClusterClassWorkersMachineDeployments { /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// NamingStrategy allows changing the naming pattern used when creating the MachineDeployment. + /// namingStrategy allows changing the naming pattern used when creating the MachineDeployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namingStrategy")] pub naming_strategy: Option, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] @@ -906,19 +906,19 @@ pub struct ClusterClassWorkersMachineDeployments { /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Template is a local struct containing a collection of templates for creation of + /// template is a local struct containing a collection of templates for creation of /// MachineDeployment objects representing a set of worker nodes. pub template: ClusterClassWorkersMachineDeploymentsTemplate, } -/// MachineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass. +/// machineHealthCheck defines a MachineHealthCheck for this MachineDeploymentClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsMachineHealthCheck { /// Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by /// "selector" are not healthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnhealthy")] pub max_unhealthy: Option, - /// NodeStartupTimeout allows to set the maximum time for MachineHealthCheck + /// nodeStartupTimeout allows to set the maximum time for MachineHealthCheck /// to consider a Machine unhealthy if a corresponding Node isn't associated /// through a `Spec.ProviderID` field. /// @@ -932,7 +932,7 @@ pub struct ClusterClassWorkersMachineDeploymentsMachineHealthCheck { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -940,7 +940,7 @@ pub struct ClusterClassWorkersMachineDeploymentsMachineHealthCheck { /// a controller that lives outside of Cluster API. #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationTemplate")] pub remediation_template: Option, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unhealthyConditions")] @@ -954,7 +954,7 @@ pub struct ClusterClassWorkersMachineDeploymentsMachineHealthCheck { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -1007,10 +1007,10 @@ pub struct ClusterClassWorkersMachineDeploymentsMachineHealthCheckUnhealthyCondi pub r#type: String, } -/// NamingStrategy allows changing the naming pattern used when creating the MachineDeployment. +/// namingStrategy allows changing the naming pattern used when creating the MachineDeployment. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsNamingStrategy { - /// Template defines the template to use for generating the name of the MachineDeployment object. + /// template defines the template to use for generating the name of the MachineDeployment object. /// If not defined, it will fallback to `{{ .cluster.name }}-{{ .machineDeployment.topologyName }}-{{ .random }}`. /// If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will /// get concatenated with a random suffix of length 5. @@ -1027,7 +1027,7 @@ pub struct ClusterClassWorkersMachineDeploymentsNamingStrategy { /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachineDeploymentClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsStrategy { - /// Remediation controls the strategy of remediating unhealthy machines + /// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[serde(default, skip_serializing_if = "Option::is_none")] pub remediation: Option, @@ -1035,17 +1035,17 @@ pub struct ClusterClassWorkersMachineDeploymentsStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. Allowed values are RollingUpdate and OnDelete. + /// type of deployment. Allowed values are RollingUpdate and OnDelete. /// The default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, } -/// Remediation controls the strategy of remediating unhealthy machines +/// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsStrategyRemediation { - /// MaxInFlight determines how many in flight remediations should happen at the same time. + /// maxInFlight determines how many in flight remediations should happen at the same time. /// /// Remediation only happens on the MachineSet with the most current revision, while /// older MachineSets (usually present during rollout operations) aren't allowed to remediate. @@ -1067,7 +1067,7 @@ pub struct ClusterClassWorkersMachineDeploymentsStrategyRemediation { /// MachineDeploymentStrategyType = RollingUpdate. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsStrategyRollingUpdate { - /// DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. /// Valid values are "Random, "Newest", "Oldest" /// When no value is supplied, the default DeletePolicy of MachineSet is used #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] @@ -1121,33 +1121,33 @@ pub enum ClusterClassWorkersMachineDeploymentsStrategyType { OnDelete, } -/// Template is a local struct containing a collection of templates for creation of +/// template is a local struct containing a collection of templates for creation of /// MachineDeployment objects representing a set of worker nodes. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplate { - /// Bootstrap contains the bootstrap template reference to be used + /// bootstrap contains the bootstrap template reference to be used /// for the creation of worker Machines. pub bootstrap: ClusterClassWorkersMachineDeploymentsTemplateBootstrap, - /// Infrastructure contains the infrastructure template reference to be used + /// infrastructure contains the infrastructure template reference to be used /// for the creation of worker Machines. pub infrastructure: ClusterClassWorkersMachineDeploymentsTemplateInfrastructure, - /// Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. + /// metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, } -/// Bootstrap contains the bootstrap template reference to be used +/// bootstrap contains the bootstrap template reference to be used /// for the creation of worker Machines. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrap { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrapRef { @@ -1185,17 +1185,17 @@ pub struct ClusterClassWorkersMachineDeploymentsTemplateBootstrapRef { pub uid: Option, } -/// Infrastructure contains the infrastructure template reference to be used +/// infrastructure contains the infrastructure template reference to be used /// for the creation of worker Machines. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructureRef { @@ -1233,11 +1233,11 @@ pub struct ClusterClassWorkersMachineDeploymentsTemplateInfrastructureRef { pub uid: Option, } -/// Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. +/// metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachineDeploymentsTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -1255,11 +1255,11 @@ pub struct ClusterClassWorkersMachineDeploymentsTemplateMetadata { /// provisioned using `ClusterClass`. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePools { - /// Class denotes a type of machine pool present in the cluster, + /// class denotes a type of machine pool present in the cluster, /// this name MUST be unique within a ClusterClass and can be referenced /// in the Cluster to create a managed MachinePool. pub class: String, - /// FailureDomains is the list of failure domains the MachinePool should be attached to. + /// failureDomains is the list of failure domains the MachinePool should be attached to. /// Must match a key in the FailureDomains map stored on the cluster object. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] @@ -1271,35 +1271,35 @@ pub struct ClusterClassWorkersMachinePools { /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// NamingStrategy allows changing the naming pattern used when creating the MachinePool. + /// namingStrategy allows changing the naming pattern used when creating the MachinePool. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namingStrategy")] pub naming_strategy: Option, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine Pool is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. /// NOTE: This value can be overridden while defining a Cluster.Topology using this MachinePoolClass. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// Template is a local struct containing a collection of templates for creation of + /// template is a local struct containing a collection of templates for creation of /// MachinePools objects representing a pool of worker nodes. pub template: ClusterClassWorkersMachinePoolsTemplate, } -/// NamingStrategy allows changing the naming pattern used when creating the MachinePool. +/// namingStrategy allows changing the naming pattern used when creating the MachinePool. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsNamingStrategy { - /// Template defines the template to use for generating the name of the MachinePool object. + /// template defines the template to use for generating the name of the MachinePool object. /// If not defined, it will fallback to `{{ .cluster.name }}-{{ .machinePool.topologyName }}-{{ .random }}`. /// If the templated string exceeds 63 characters, it will be trimmed to 58 characters and will /// get concatenated with a random suffix of length 5. @@ -1311,33 +1311,33 @@ pub struct ClusterClassWorkersMachinePoolsNamingStrategy { pub template: Option, } -/// Template is a local struct containing a collection of templates for creation of +/// template is a local struct containing a collection of templates for creation of /// MachinePools objects representing a pool of worker nodes. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplate { - /// Bootstrap contains the bootstrap template reference to be used + /// bootstrap contains the bootstrap template reference to be used /// for the creation of the Machines in the MachinePool. pub bootstrap: ClusterClassWorkersMachinePoolsTemplateBootstrap, - /// Infrastructure contains the infrastructure template reference to be used + /// infrastructure contains the infrastructure template reference to be used /// for the creation of the MachinePool. pub infrastructure: ClusterClassWorkersMachinePoolsTemplateInfrastructure, - /// Metadata is the metadata applied to the MachinePool. + /// metadata is the metadata applied to the MachinePool. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, } -/// Bootstrap contains the bootstrap template reference to be used +/// bootstrap contains the bootstrap template reference to be used /// for the creation of the Machines in the MachinePool. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplateBootstrap { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplateBootstrapRef { @@ -1375,17 +1375,17 @@ pub struct ClusterClassWorkersMachinePoolsTemplateBootstrapRef { pub uid: Option, } -/// Infrastructure contains the infrastructure template reference to be used +/// infrastructure contains the infrastructure template reference to be used /// for the creation of the MachinePool. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplateInfrastructure { - /// Ref is a required reference to a custom resource + /// ref is a required reference to a custom resource /// offered by a provider. #[serde(rename = "ref")] pub r#ref: ObjectReference, } -/// Ref is a required reference to a custom resource +/// ref is a required reference to a custom resource /// offered by a provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplateInfrastructureRef { @@ -1423,11 +1423,11 @@ pub struct ClusterClassWorkersMachinePoolsTemplateInfrastructureRef { pub uid: Option, } -/// Metadata is the metadata applied to the MachinePool. +/// metadata is the metadata applied to the MachinePool. /// At runtime this metadata is merged with the corresponding metadata from the topology. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassWorkersMachinePoolsTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -1444,16 +1444,16 @@ pub struct ClusterClassWorkersMachinePoolsTemplateMetadata { /// ClusterClassStatus defines the observed state of the ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatus { - /// Conditions defines current observed state of the ClusterClass. + /// conditions defines current observed state of the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, /// v1beta2 groups all the fields that will be added or modified in ClusterClass's status with the V1Beta2 version. #[serde(default, skip_serializing_if = "Option::is_none")] pub v1beta2: Option, - /// Variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass. + /// variables is a list of ClusterClassStatusVariable that are defined for the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option>, } @@ -1470,46 +1470,46 @@ pub struct ClusterClassStatusV1beta2 { /// ClusterClassStatusVariable defines a variable which appears in the status of a ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariables { - /// Definitions is a list of definitions for a variable. + /// definitions is a list of definitions for a variable. pub definitions: Vec, - /// DefinitionsConflict specifies whether or not there are conflicting definitions for a single variable name. + /// definitionsConflict specifies whether or not there are conflicting definitions for a single variable name. #[serde(default, skip_serializing_if = "Option::is_none", rename = "definitionsConflict")] pub definitions_conflict: Option, - /// Name is the name of the variable. + /// name is the name of the variable. pub name: String, } /// ClusterClassStatusVariableDefinition defines a variable which appears in the status of a ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitions { - /// From specifies the origin of the variable definition. + /// from specifies the origin of the variable definition. /// This will be `inline` for variables defined in the ClusterClass or the name of a patch defined in the ClusterClass /// for variables discovered from a DiscoverVariables runtime extensions. pub from: String, - /// Metadata is the metadata of a variable. + /// metadata is the metadata of a variable. /// It can be used to add additional data for higher level tools to /// a ClusterClassVariable. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// Required specifies if the variable is required. + /// required specifies if the variable is required. /// Note: this applies to the variable as a whole and thus the /// top-level object defined in the schema. If nested fields are /// required, this will be specified inside the schema. pub required: bool, - /// Schema defines the schema of the variable. + /// schema defines the schema of the variable. pub schema: ClusterClassStatusVariablesDefinitionsSchema, } -/// Metadata is the metadata of a variable. +/// metadata is the metadata of a variable. /// It can be used to add additional data for higher level tools to /// a ClusterClassVariable. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitionsMetadata { - /// Annotations is an unstructured key value map that can be used to store and + /// annotations is an unstructured key value map that can be used to store and /// retrieve arbitrary metadata. /// They are not queryable. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -1520,138 +1520,138 @@ pub struct ClusterClassStatusVariablesDefinitionsMetadata { pub labels: Option>, } -/// Schema defines the schema of the variable. +/// schema defines the schema of the variable. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitionsSchema { - /// OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 + /// openAPIV3Schema defines the schema of a variable via OpenAPI v3 /// schema. The schema is a subset of the schema used in /// Kubernetes CRDs. #[serde(rename = "openAPIV3Schema")] pub open_apiv3_schema: ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3Schema, } -/// OpenAPIV3Schema defines the schema of a variable via OpenAPI v3 +/// openAPIV3Schema defines the schema of a variable via OpenAPI v3 /// schema. The schema is a subset of the schema used in /// Kubernetes CRDs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3Schema { - /// AdditionalProperties specifies the schema of values in a map (keys are always strings). + /// additionalProperties specifies the schema of values in a map (keys are always strings). /// NOTE: Can only be set if type is object. /// NOTE: AdditionalProperties is mutually exclusive with Properties. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "additionalProperties")] pub additional_properties: Option, - /// AllOf specifies that the variable must validate against all of the subschemas in the array. + /// allOf specifies that the variable must validate against all of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allOf")] pub all_of: Option, - /// AnyOf specifies that the variable must validate against one or more of the subschemas in the array. + /// anyOf specifies that the variable must validate against one or more of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "anyOf")] pub any_of: Option, - /// Default is the default value of the variable. + /// default is the default value of the variable. /// NOTE: Can be set for all types. #[serde(default, skip_serializing_if = "Option::is_none")] pub default: Option, - /// Description is a human-readable description of this variable. + /// description is a human-readable description of this variable. #[serde(default, skip_serializing_if = "Option::is_none")] pub description: Option, - /// Enum is the list of valid values of the variable. + /// enum is the list of valid values of the variable. /// NOTE: Can be set for all types. #[serde(default, skip_serializing_if = "Option::is_none", rename = "enum")] pub r#enum: Option>>, - /// Example is an example for this variable. + /// example is an example for this variable. #[serde(default, skip_serializing_if = "Option::is_none")] pub example: Option, - /// ExclusiveMaximum specifies if the Maximum is exclusive. + /// exclusiveMaximum specifies if the Maximum is exclusive. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none", rename = "exclusiveMaximum")] pub exclusive_maximum: Option, - /// ExclusiveMinimum specifies if the Minimum is exclusive. + /// exclusiveMinimum specifies if the Minimum is exclusive. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none", rename = "exclusiveMinimum")] pub exclusive_minimum: Option, - /// Format is an OpenAPI v3 format string. Unknown formats are ignored. + /// format is an OpenAPI v3 format string. Unknown formats are ignored. /// For a list of supported formats please see: (of the k8s.io/apiextensions-apiserver version we're currently using) /// https://github.com/kubernetes/apiextensions-apiserver/blob/master/pkg/apiserver/validation/formats.go /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none")] pub format: Option, - /// Items specifies fields of an array. + /// items specifies fields of an array. /// NOTE: Can only be set if type is array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option, - /// MaxItems is the max length of an array variable. + /// maxItems is the max length of an array variable. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxItems")] pub max_items: Option, - /// MaxLength is the max length of a string variable. + /// maxLength is the max length of a string variable. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxLength")] pub max_length: Option, - /// MaxProperties is the maximum amount of entries in a map or properties in an object. + /// maxProperties is the maximum amount of entries in a map or properties in an object. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxProperties")] pub max_properties: Option, - /// Maximum is the maximum of an integer or number variable. + /// maximum is the maximum of an integer or number variable. /// If ExclusiveMaximum is false, the variable is valid if it is lower than, or equal to, the value of Maximum. /// If ExclusiveMaximum is true, the variable is valid if it is strictly lower than the value of Maximum. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none")] pub maximum: Option, - /// MinItems is the min length of an array variable. + /// minItems is the min length of an array variable. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minItems")] pub min_items: Option, - /// MinLength is the min length of a string variable. + /// minLength is the min length of a string variable. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minLength")] pub min_length: Option, - /// MinProperties is the minimum amount of entries in a map or properties in an object. + /// minProperties is the minimum amount of entries in a map or properties in an object. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minProperties")] pub min_properties: Option, - /// Minimum is the minimum of an integer or number variable. + /// minimum is the minimum of an integer or number variable. /// If ExclusiveMinimum is false, the variable is valid if it is greater than, or equal to, the value of Minimum. /// If ExclusiveMinimum is true, the variable is valid if it is strictly greater than the value of Minimum. /// NOTE: Can only be set if type is integer or number. #[serde(default, skip_serializing_if = "Option::is_none")] pub minimum: Option, - /// Not specifies that the variable must not validate against the subschema. + /// not specifies that the variable must not validate against the subschema. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub not: Option, - /// OneOf specifies that the variable must validate against exactly one of the subschemas in the array. + /// oneOf specifies that the variable must validate against exactly one of the subschemas in the array. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none", rename = "oneOf")] pub one_of: Option, - /// Pattern is the regex which a string variable must match. + /// pattern is the regex which a string variable must match. /// NOTE: Can only be set if type is string. #[serde(default, skip_serializing_if = "Option::is_none")] pub pattern: Option, - /// Properties specifies fields of an object. + /// properties specifies fields of an object. /// NOTE: Can only be set if type is object. /// NOTE: Properties is mutually exclusive with AdditionalProperties. /// NOTE: This field uses PreserveUnknownFields and Schemaless, /// because recursive validation is not possible. #[serde(default, skip_serializing_if = "Option::is_none")] pub properties: Option, - /// Required specifies which fields of an object are required. + /// required specifies which fields of an object are required. /// NOTE: Can only be set if type is object. #[serde(default, skip_serializing_if = "Option::is_none")] pub required: Option>, - /// Type is the type of the variable. + /// type is the type of the variable. /// Valid values are: object, array, string, integer, number or boolean. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, - /// UniqueItems specifies if items in an array must be unique. + /// uniqueItems specifies if items in an array must be unique. /// NOTE: Can only be set if type is array. #[serde(default, skip_serializing_if = "Option::is_none", rename = "uniqueItems")] pub unique_items: Option, @@ -1670,15 +1670,15 @@ pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3Schema { /// - ... zero or more #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-int-or-string")] pub x_kubernetes_int_or_string: Option, - /// XPreserveUnknownFields allows setting fields in a variable object + /// x-kubernetes-preserve-unknown-fields allows setting fields in a variable object /// which are not defined in the variable schema. This affects fields recursively, /// except if nested properties or additionalProperties are specified in the schema. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-preserve-unknown-fields")] pub x_kubernetes_preserve_unknown_fields: Option, - /// XValidations describes a list of validation rules written in the CEL expression language. + /// x-kubernetes-validations describes a list of validation rules written in the CEL expression language. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-kubernetes-validations")] pub x_kubernetes_validations: Option>, - /// XMetadata is the metadata of a variable or a nested field within a variable. + /// x-metadata is the metadata of a variable or a nested field within a variable. /// It can be used to add additional data for higher level tools. #[serde(default, skip_serializing_if = "Option::is_none", rename = "x-metadata")] pub x_metadata: Option, @@ -1687,7 +1687,7 @@ pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3Schema { /// ValidationRule describes a validation rule written in the CEL expression language. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3SchemaXKubernetesValidations { - /// FieldPath represents the field path returned when the validation fails. + /// fieldPath represents the field path returned when the validation fails. /// It must be a relative JSON path (i.e. with array notation) scoped to the location of this x-kubernetes-validations extension in the schema and refer to an existing field. /// e.g. when validation checks if a specific attribute `foo` under a map `testMap`, the fieldPath could be set to `.testMap.foo` /// If the validation checks two lists must have unique attributes, the fieldPath could be set to either of the list: e.g. `.testList` @@ -1698,13 +1698,13 @@ pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3SchemaXKubernete /// e.g. for attribute `foo.34$` appears in a list `testList`, the fieldPath could be set to `.testList['foo.34$']` #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, - /// Message represents the message displayed when validation fails. The message is required if the Rule contains + /// message represents the message displayed when validation fails. The message is required if the Rule contains /// line breaks. The message must not contain line breaks. /// If unset, the message is "failed rule: {Rule}". /// e.g. "must be a URL with the host matching spec.host" #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, - /// MessageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. + /// messageExpression declares a CEL expression that evaluates to the validation failure message that is returned when this rule fails. /// Since messageExpression is used as a failure message, it must evaluate to a string. /// If both message and messageExpression are present on a rule, then messageExpression will be used if validation /// fails. If messageExpression results in a runtime error, the validation failure message is produced @@ -1715,13 +1715,13 @@ pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3SchemaXKubernete /// "x must be less than max ("+string(self.max)+")" #[serde(default, skip_serializing_if = "Option::is_none", rename = "messageExpression")] pub message_expression: Option, - /// Reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. + /// reason provides a machine-readable validation failure reason that is returned to the caller when a request fails this validation rule. /// The currently supported reasons are: "FieldValueInvalid", "FieldValueForbidden", "FieldValueRequired", "FieldValueDuplicate". /// If not set, default to use "FieldValueInvalid". /// All future added reasons must be accepted by clients when reading this value and unknown reasons should be treated as FieldValueInvalid. #[serde(default, skip_serializing_if = "Option::is_none")] pub reason: Option, - /// Rule represents the expression which will be evaluated by CEL. + /// rule represents the expression which will be evaluated by CEL. /// ref: https://github.com/google/cel-spec /// The Rule is scoped to the location of the x-kubernetes-validations extension in the schema. /// The `self` variable in the CEL expression is bound to the scoped value. @@ -1779,11 +1779,11 @@ pub enum ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3SchemaXKubernetesV FieldValueDuplicate, } -/// XMetadata is the metadata of a variable or a nested field within a variable. +/// x-metadata is the metadata of a variable or a nested field within a variable. /// It can be used to add additional data for higher level tools. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClassStatusVariablesDefinitionsSchemaOpenApiv3SchemaXMetadata { - /// Annotations is an unstructured key value map that can be used to store and + /// annotations is an unstructured key value map that can be used to store and /// retrieve arbitrary metadata. /// They are not queryable. #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusters.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusters.rs index 95e935a6e..c8f1f5f3a 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusters.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/clusters.rs @@ -30,18 +30,18 @@ pub struct ClusterSpec { /// Cluster network configuration. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterNetwork")] pub cluster_network: Option, - /// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. + /// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneEndpoint")] pub control_plane_endpoint: Option, - /// ControlPlaneRef is an optional reference to a provider-specific resource that holds + /// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneRef")] pub control_plane_ref: Option, - /// InfrastructureRef is a reference to a provider-specific resource that holds the details + /// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureRef")] pub infrastructure_ref: Option, - /// Paused can be used to prevent controllers from processing the Cluster and all its associated objects. + /// paused can be used to prevent controllers from processing the Cluster and all its associated objects. #[serde(default, skip_serializing_if = "Option::is_none")] pub paused: Option, /// This encapsulates the topology for the cluster. @@ -65,7 +65,7 @@ pub struct ClusterAvailabilityGates { /// Cluster network configuration. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterClusterNetwork { - /// APIServerPort specifies the port the API Server should bind to. + /// apiServerPort specifies the port the API Server should bind to. /// Defaults to 6443. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiServerPort")] pub api_server_port: Option, @@ -94,7 +94,7 @@ pub struct ClusterClusterNetworkServices { pub cidr_blocks: Vec, } -/// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. +/// controlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneEndpoint { /// The hostname on which the API server is serving. @@ -103,7 +103,7 @@ pub struct ClusterControlPlaneEndpoint { pub port: i32, } -/// ControlPlaneRef is an optional reference to a provider-specific resource that holds +/// controlPlaneRef is an optional reference to a provider-specific resource that holds /// the details for provisioning the Control Plane for a Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterControlPlaneRef { @@ -141,7 +141,7 @@ pub struct ClusterControlPlaneRef { pub uid: Option, } -/// InfrastructureRef is a reference to a provider-specific resource that holds the details +/// infrastructureRef is a reference to a provider-specific resource that holds the details /// for provisioning infrastructure for a cluster in said provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInfrastructureRef { @@ -187,71 +187,71 @@ pub struct ClusterInfrastructureRef { pub struct ClusterTopology { /// The name of the ClusterClass object to create the topology. pub class: String, - /// ControlPlane describes the cluster control plane. + /// controlPlane describes the cluster control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, - /// RolloutAfter performs a rollout of the entire cluster one component at a time, + /// rolloutAfter performs a rollout of the entire cluster one component at a time, /// control plane first and then machine deployments. /// /// Deprecated: This field has no function and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rolloutAfter")] pub rollout_after: Option, - /// Variables can be used to customize the Cluster through + /// variables can be used to customize the Cluster through /// patches. They must comply to the corresponding /// VariableClasses defined in the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option>, /// The Kubernetes version of the cluster. pub version: String, - /// Workers encapsulates the different constructs that form the worker nodes + /// workers encapsulates the different constructs that form the worker nodes /// for the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub workers: Option, } -/// ControlPlane describes the cluster control plane. +/// controlPlane describes the cluster control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlane { - /// MachineHealthCheck allows to enable, disable and override + /// machineHealthCheck allows to enable, disable and override /// the MachineHealthCheck configuration in the ClusterClass for this control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineHealthCheck")] pub machine_health_check: Option, - /// Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane + /// metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane /// if the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it /// is applied only to the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// Replicas is the number of control plane nodes. + /// replicas is the number of control plane nodes. /// If the value is nil, the ControlPlane object is created without the number of Replicas /// and it's assumed that the control plane controller does not implement support for this field. /// When specified against a control plane provider that lacks support for this field, this value will be ignored. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Variables can be used to customize the ControlPlane through patches. + /// variables can be used to customize the ControlPlane through patches. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option, } -/// MachineHealthCheck allows to enable, disable and override +/// machineHealthCheck allows to enable, disable and override /// the MachineHealthCheck configuration in the ClusterClass for this control plane. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlaneMachineHealthCheck { - /// Enable controls if a MachineHealthCheck should be created for the target machines. + /// enable controls if a MachineHealthCheck should be created for the target machines. /// /// If false: No MachineHealthCheck will be created. /// @@ -266,7 +266,7 @@ pub struct ClusterTopologyControlPlaneMachineHealthCheck { /// "selector" are not healthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnhealthy")] pub max_unhealthy: Option, - /// NodeStartupTimeout allows to set the maximum time for MachineHealthCheck + /// nodeStartupTimeout allows to set the maximum time for MachineHealthCheck /// to consider a Machine unhealthy if a corresponding Node isn't associated /// through a `Spec.ProviderID` field. /// @@ -280,7 +280,7 @@ pub struct ClusterTopologyControlPlaneMachineHealthCheck { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -288,7 +288,7 @@ pub struct ClusterTopologyControlPlaneMachineHealthCheck { /// a controller that lives outside of Cluster API. #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationTemplate")] pub remediation_template: Option, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unhealthyConditions")] @@ -302,7 +302,7 @@ pub struct ClusterTopologyControlPlaneMachineHealthCheck { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -355,13 +355,13 @@ pub struct ClusterTopologyControlPlaneMachineHealthCheckUnhealthyConditions { pub r#type: String, } -/// Metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane +/// metadata is the metadata applied to the ControlPlane and the Machines of the ControlPlane /// if the ControlPlaneTemplate referenced by the ClusterClass is machine based. If not, it /// is applied only to the ControlPlane. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlaneMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -375,10 +375,10 @@ pub struct ClusterTopologyControlPlaneMetadata { pub labels: Option>, } -/// Variables can be used to customize the ControlPlane through patches. +/// variables can be used to customize the ControlPlane through patches. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlaneVariables { - /// Overrides can be used to override Cluster level variables. + /// overrides can be used to override Cluster level variables. #[serde(default, skip_serializing_if = "Option::is_none")] pub overrides: Option>, } @@ -387,14 +387,14 @@ pub struct ClusterTopologyControlPlaneVariables { /// Variable definition in the ClusterClass `status` variables. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyControlPlaneVariablesOverrides { - /// DefinitionFrom specifies where the definition of this Variable is from. + /// definitionFrom specifies where the definition of this Variable is from. /// /// Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "definitionFrom")] pub definition_from: Option, - /// Name of the variable. + /// name of the variable. pub name: String, - /// Value of the variable. + /// value of the variable. /// Note: the value will be validated against the schema of the corresponding ClusterClassVariable /// from the ClusterClass. /// Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a @@ -408,14 +408,14 @@ pub struct ClusterTopologyControlPlaneVariablesOverrides { /// Variable definition in the ClusterClass `status` variables. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyVariables { - /// DefinitionFrom specifies where the definition of this Variable is from. + /// definitionFrom specifies where the definition of this Variable is from. /// /// Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "definitionFrom")] pub definition_from: Option, - /// Name of the variable. + /// name of the variable. pub name: String, - /// Value of the variable. + /// value of the variable. /// Note: the value will be validated against the schema of the corresponding ClusterClassVariable /// from the ClusterClass. /// Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a @@ -425,14 +425,14 @@ pub struct ClusterTopologyVariables { pub value: serde_json::Value, } -/// Workers encapsulates the different constructs that form the worker nodes +/// workers encapsulates the different constructs that form the worker nodes /// for the cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkers { - /// MachineDeployments is a list of machine deployments in the cluster. + /// machineDeployments is a list of machine deployments in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineDeployments")] pub machine_deployments: Option>, - /// MachinePools is a list of machine pools in the cluster. + /// machinePools is a list of machine pools in the cluster. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machinePools")] pub machine_pools: Option>, } @@ -441,19 +441,19 @@ pub struct ClusterTopologyWorkers { /// This set of nodes is managed by a MachineDeployment object whose lifecycle is managed by the Cluster controller. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeployments { - /// Class is the name of the MachineDeploymentClass used to create the set of worker nodes. + /// class is the name of the MachineDeploymentClass used to create the set of worker nodes. /// This should match one of the deployment classes defined in the ClusterClass object /// mentioned in the `Cluster.Spec.Class` field. pub class: String, - /// FailureDomain is the failure domain the machines will be created in. + /// failureDomain is the failure domain the machines will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// MachineHealthCheck allows to enable, disable and override + /// machineHealthCheck allows to enable, disable and override /// the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "machineHealthCheck")] pub machine_health_check: Option, - /// Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. + /// metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, @@ -463,26 +463,26 @@ pub struct ClusterTopologyWorkersMachineDeployments { /// is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// Name is the unique identifier for this MachineDeploymentTopology. + /// name is the unique identifier for this MachineDeploymentTopology. /// The value is used with other unique identifiers to create a MachineDeployment's Name /// (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, /// the values are hashed together. pub name: String, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// Replicas is the number of worker nodes belonging to this set. + /// replicas is the number of worker nodes belonging to this set. /// If the value is nil, the MachineDeployment is created without the number of Replicas (defaulting to 1) /// and it's assumed that an external entity (like cluster autoscaler) is responsible for the management /// of this value. @@ -492,16 +492,16 @@ pub struct ClusterTopologyWorkersMachineDeployments { /// new ones. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Variables can be used to customize the MachineDeployment through patches. + /// variables can be used to customize the MachineDeployment through patches. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option, } -/// MachineHealthCheck allows to enable, disable and override +/// machineHealthCheck allows to enable, disable and override /// the MachineHealthCheck configuration in the ClusterClass for this MachineDeployment. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheck { - /// Enable controls if a MachineHealthCheck should be created for the target machines. + /// enable controls if a MachineHealthCheck should be created for the target machines. /// /// If false: No MachineHealthCheck will be created. /// @@ -516,7 +516,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheck { /// "selector" are not healthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnhealthy")] pub max_unhealthy: Option, - /// NodeStartupTimeout allows to set the maximum time for MachineHealthCheck + /// nodeStartupTimeout allows to set the maximum time for MachineHealthCheck /// to consider a Machine unhealthy if a corresponding Node isn't associated /// through a `Spec.ProviderID` field. /// @@ -530,7 +530,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheck { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -538,7 +538,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheck { /// a controller that lives outside of Cluster API. #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationTemplate")] pub remediation_template: Option, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unhealthyConditions")] @@ -552,7 +552,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheck { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -605,11 +605,11 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMachineHealthCheckUnhealthyCo pub r#type: String, } -/// Metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. +/// metadata is the metadata applied to the MachineDeployment and the machines of the MachineDeployment. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -627,7 +627,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsMetadata { /// new ones. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsStrategy { - /// Remediation controls the strategy of remediating unhealthy machines + /// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[serde(default, skip_serializing_if = "Option::is_none")] pub remediation: Option, @@ -635,17 +635,17 @@ pub struct ClusterTopologyWorkersMachineDeploymentsStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. Allowed values are RollingUpdate and OnDelete. + /// type of deployment. Allowed values are RollingUpdate and OnDelete. /// The default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, } -/// Remediation controls the strategy of remediating unhealthy machines +/// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsStrategyRemediation { - /// MaxInFlight determines how many in flight remediations should happen at the same time. + /// maxInFlight determines how many in flight remediations should happen at the same time. /// /// Remediation only happens on the MachineSet with the most current revision, while /// older MachineSets (usually present during rollout operations) aren't allowed to remediate. @@ -667,7 +667,7 @@ pub struct ClusterTopologyWorkersMachineDeploymentsStrategyRemediation { /// MachineDeploymentStrategyType = RollingUpdate. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsStrategyRollingUpdate { - /// DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. /// Valid values are "Random, "Newest", "Oldest" /// When no value is supplied, the default DeletePolicy of MachineSet is used #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] @@ -720,10 +720,10 @@ pub enum ClusterTopologyWorkersMachineDeploymentsStrategyType { OnDelete, } -/// Variables can be used to customize the MachineDeployment through patches. +/// variables can be used to customize the MachineDeployment through patches. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsVariables { - /// Overrides can be used to override Cluster level variables. + /// overrides can be used to override Cluster level variables. #[serde(default, skip_serializing_if = "Option::is_none")] pub overrides: Option>, } @@ -732,14 +732,14 @@ pub struct ClusterTopologyWorkersMachineDeploymentsVariables { /// Variable definition in the ClusterClass `status` variables. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachineDeploymentsVariablesOverrides { - /// DefinitionFrom specifies where the definition of this Variable is from. + /// definitionFrom specifies where the definition of this Variable is from. /// /// Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "definitionFrom")] pub definition_from: Option, - /// Name of the variable. + /// name of the variable. pub name: String, - /// Value of the variable. + /// value of the variable. /// Note: the value will be validated against the schema of the corresponding ClusterClassVariable /// from the ClusterClass. /// Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a @@ -753,15 +753,15 @@ pub struct ClusterTopologyWorkersMachineDeploymentsVariablesOverrides { /// This pool of nodes is managed by a MachinePool object whose lifecycle is managed by the Cluster controller. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachinePools { - /// Class is the name of the MachinePoolClass used to create the pool of worker nodes. + /// class is the name of the MachinePoolClass used to create the pool of worker nodes. /// This should match one of the deployment classes defined in the ClusterClass object /// mentioned in the `Cluster.Spec.Class` field. pub class: String, - /// FailureDomains is the list of failure domains the machine pool will be created in. + /// failureDomains is the list of failure domains the machine pool will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, - /// Metadata is the metadata applied to the MachinePool. + /// metadata is the metadata applied to the MachinePool. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, @@ -771,41 +771,41 @@ pub struct ClusterTopologyWorkersMachinePools { /// is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// Name is the unique identifier for this MachinePoolTopology. + /// name is the unique identifier for this MachinePoolTopology. /// The value is used with other unique identifiers to create a MachinePool's Name /// (e.g. cluster's name, etc). In case the name is greater than the allowed maximum length, /// the values are hashed together. pub name: String, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the MachinePool /// hosts after the MachinePool is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// Replicas is the number of nodes belonging to this pool. + /// replicas is the number of nodes belonging to this pool. /// If the value is nil, the MachinePool is created without the number of Replicas (defaulting to 1) /// and it's assumed that an external entity (like cluster autoscaler) is responsible for the management /// of this value. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Variables can be used to customize the MachinePool through patches. + /// variables can be used to customize the MachinePool through patches. #[serde(default, skip_serializing_if = "Option::is_none")] pub variables: Option, } -/// Metadata is the metadata applied to the MachinePool. +/// metadata is the metadata applied to the MachinePool. /// At runtime this metadata is merged with the corresponding metadata from the ClusterClass. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachinePoolsMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -819,10 +819,10 @@ pub struct ClusterTopologyWorkersMachinePoolsMetadata { pub labels: Option>, } -/// Variables can be used to customize the MachinePool through patches. +/// variables can be used to customize the MachinePool through patches. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachinePoolsVariables { - /// Overrides can be used to override Cluster level variables. + /// overrides can be used to override Cluster level variables. #[serde(default, skip_serializing_if = "Option::is_none")] pub overrides: Option>, } @@ -831,14 +831,14 @@ pub struct ClusterTopologyWorkersMachinePoolsVariables { /// Variable definition in the ClusterClass `status` variables. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterTopologyWorkersMachinePoolsVariablesOverrides { - /// DefinitionFrom specifies where the definition of this Variable is from. + /// definitionFrom specifies where the definition of this Variable is from. /// /// Deprecated: This field is deprecated, must not be set anymore and is going to be removed in the next apiVersion. #[serde(default, skip_serializing_if = "Option::is_none", rename = "definitionFrom")] pub definition_from: Option, - /// Name of the variable. + /// name of the variable. pub name: String, - /// Value of the variable. + /// value of the variable. /// Note: the value will be validated against the schema of the corresponding ClusterClassVariable /// from the ClusterClass. /// Note: We have to use apiextensionsv1.JSON instead of a custom JSON type, because controller-tools has a @@ -851,39 +851,39 @@ pub struct ClusterTopologyWorkersMachinePoolsVariablesOverrides { /// ClusterStatus defines the observed state of Cluster. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatus { - /// Conditions defines current service state of the cluster. + /// conditions defines current service state of the cluster. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// ControlPlaneReady denotes if the control plane became ready during initial provisioning + /// controlPlaneReady denotes if the control plane became ready during initial provisioning /// to receive requests. /// NOTE: this field is part of the Cluster API contract and it is used to orchestrate provisioning. /// The value of this field is never updated after provisioning is completed. Please use conditions /// to check the operational state of the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneReady")] pub control_plane_ready: Option, - /// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. + /// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, - /// FailureMessage indicates that there is a fatal problem reconciling the + /// failureMessage indicates that there is a fatal problem reconciling the /// state, and will be set to a descriptive error message. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a fatal problem reconciling the + /// failureReason indicates that there is a fatal problem reconciling the /// state, and will be set to a token value suitable for /// programmatic interpretation. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, @@ -892,13 +892,13 @@ pub struct ClusterStatus { pub v1beta2: Option, } -/// FailureDomains is a slice of failure domain objects synced from the infrastructure provider. +/// failureDomains is a slice of failure domain objects synced from the infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterStatusFailureDomains { - /// Attributes is a free form map of attributes an infrastructure provider might use or require. + /// attributes is a free form map of attributes an infrastructure provider might use or require. #[serde(default, skip_serializing_if = "Option::is_none")] pub attributes: Option>, - /// ControlPlane determines if this failure domain is suitable for use by control plane machines. + /// controlPlane determines if this failure domain is suitable for use by control plane machines. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, } diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinedeployments.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinedeployments.rs index 5ad443e88..5fa7a8a32 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinedeployments.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinedeployments.rs @@ -22,10 +22,10 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineDeploymentSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available. + /// minReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available. /// Defaults to 0 (machine will be considered available as soon as the Node is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, @@ -65,7 +65,7 @@ pub struct MachineDeploymentSpec { /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10479 for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "revisionHistoryLimit")] pub revision_history_limit: Option, - /// RolloutAfter is a field to indicate a rollout should be performed + /// rolloutAfter is a field to indicate a rollout should be performed /// after the specified time even if no changes have been made to the /// MachineDeployment. /// Example: In the YAML the time can be specified in the RFC3339 format. @@ -81,7 +81,7 @@ pub struct MachineDeploymentSpec { /// new ones. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachineDeploymentTemplate, } @@ -121,7 +121,7 @@ pub struct MachineDeploymentSelectorMatchExpressions { /// new ones. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentStrategy { - /// Remediation controls the strategy of remediating unhealthy machines + /// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[serde(default, skip_serializing_if = "Option::is_none")] pub remediation: Option, @@ -129,17 +129,17 @@ pub struct MachineDeploymentStrategy { /// MachineDeploymentStrategyType = RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "rollingUpdate")] pub rolling_update: Option, - /// Type of deployment. Allowed values are RollingUpdate and OnDelete. + /// type of deployment. Allowed values are RollingUpdate and OnDelete. /// The default is RollingUpdate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, } -/// Remediation controls the strategy of remediating unhealthy machines +/// remediation controls the strategy of remediating unhealthy machines /// and how remediating operations should occur during the lifecycle of the dependant MachineSets. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentStrategyRemediation { - /// MaxInFlight determines how many in flight remediations should happen at the same time. + /// maxInFlight determines how many in flight remediations should happen at the same time. /// /// Remediation only happens on the MachineSet with the most current revision, while /// older MachineSets (usually present during rollout operations) aren't allowed to remediate. @@ -161,7 +161,7 @@ pub struct MachineDeploymentStrategyRemediation { /// MachineDeploymentStrategyType = RollingUpdate. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentStrategyRollingUpdate { - /// DeletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used by the MachineDeployment to identify nodes to delete when downscaling. /// Valid values are "Random, "Newest", "Oldest" /// When no value is supplied, the default DeletePolicy of MachineSet is used #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] @@ -214,7 +214,7 @@ pub enum MachineDeploymentStrategyType { OnDelete, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplate { /// Standard object's metadata. @@ -231,7 +231,7 @@ pub struct MachineDeploymentTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -249,35 +249,35 @@ pub struct MachineDeploymentTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineDeploymentTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -301,29 +301,29 @@ pub struct MachineDeploymentTemplateSpec { /// NOTE: this field is considered only for computing v1beta2 conditions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessGates")] pub readiness_gates: Option>, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -363,7 +363,7 @@ pub struct MachineDeploymentTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineDeploymentTemplateSpecInfrastructureRef { @@ -418,13 +418,13 @@ pub struct MachineDeploymentStatus { /// targeted by this deployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Conditions defines current service state of the MachineDeployment. + /// conditions defines current service state of the MachineDeployment. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// The generation observed by the deployment controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). + /// phase represents the current phase of a MachineDeployment (ScalingUp, ScalingDown, Running, Failed, or Unknown). #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// Total number of ready machines targeted by this deployment. @@ -434,7 +434,7 @@ pub struct MachineDeploymentStatus { /// (their labels match the selector). #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinehealthchecks.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinehealthchecks.rs index f01a11b5e..56d7e30ce 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinehealthchecks.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinehealthchecks.rs @@ -22,7 +22,7 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineHealthCheckSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, /// Any further remediation is only allowed if at most "MaxUnhealthy" machines selected by @@ -31,7 +31,7 @@ pub struct MachineHealthCheckSpec { /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/issues/10722 for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnhealthy")] pub max_unhealthy: Option, - /// NodeStartupTimeout allows to set the maximum time for MachineHealthCheck + /// nodeStartupTimeout allows to set the maximum time for MachineHealthCheck /// to consider a Machine unhealthy if a corresponding Node isn't associated /// through a `Spec.ProviderID` field. /// @@ -45,7 +45,7 @@ pub struct MachineHealthCheckSpec { /// If you wish to disable this feature, set the value explicitly to 0. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeStartupTimeout")] pub node_startup_timeout: Option, - /// RemediationTemplate is a reference to a remediation template + /// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -55,7 +55,7 @@ pub struct MachineHealthCheckSpec { pub remediation_template: Option, /// Label selector to match machines whose health will be exercised pub selector: MachineHealthCheckSelector, - /// UnhealthyConditions contains a list of the conditions that determine + /// unhealthyConditions contains a list of the conditions that determine /// whether a node is considered unhealthy. The conditions are combined in a /// logical OR, i.e. if any of the conditions is met, the node is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unhealthyConditions")] @@ -71,7 +71,7 @@ pub struct MachineHealthCheckSpec { pub unhealthy_range: Option, } -/// RemediationTemplate is a reference to a remediation template +/// remediationTemplate is a reference to a remediation template /// provided by an infrastructure provider. /// /// This field is completely optional, when filled, the MachineHealthCheck controller @@ -157,7 +157,7 @@ pub struct MachineHealthCheckUnhealthyConditions { /// Most recently observed status of MachineHealthCheck resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineHealthCheckStatus { - /// Conditions defines current service state of the MachineHealthCheck. + /// conditions defines current service state of the MachineHealthCheck. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// total number of healthy machines counted by this machine health check @@ -166,14 +166,14 @@ pub struct MachineHealthCheckStatus { /// total number of machines counted by this machine health check #[serde(default, skip_serializing_if = "Option::is_none", rename = "expectedMachines")] pub expected_machines: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// RemediationsAllowed is the number of further remediations allowed by this machine health check before + /// remediationsAllowed is the number of further remediations allowed by this machine health check before /// maxUnhealthy short circuiting will be applied #[serde(default, skip_serializing_if = "Option::is_none", rename = "remediationsAllowed")] pub remediations_allowed: Option, - /// Targets shows the current list of machines the machine health check is watching + /// targets shows the current list of machines the machine health check is watching #[serde(default, skip_serializing_if = "Option::is_none")] pub targets: Option>, /// v1beta2 groups all the fields that will be added or modified in MachineHealthCheck's status with the V1Beta2 version. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinepools.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinepools.rs index 4b340e05a..8a61c75b1 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinepools.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinepools.rs @@ -21,10 +21,10 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachinePoolSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomains is the list of failure domains this MachinePool should be attached to. + /// failureDomains is the list of failure domains this MachinePool should be attached to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomains")] pub failure_domains: Option>, /// Minimum number of seconds for which a newly created machine instances should @@ -33,7 +33,7 @@ pub struct MachinePoolSpec { /// is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// ProviderIDList are the identification IDs of machine instances provided by the provider. + /// providerIDList are the identification IDs of machine instances provided by the provider. /// This field must match the provider IDs as seen on the node objects corresponding to a machine pool's machine instances. #[serde(default, skip_serializing_if = "Option::is_none", rename = "providerIDList")] pub provider_id_list: Option>, @@ -41,11 +41,11 @@ pub struct MachinePoolSpec { /// This is a pointer to distinguish between explicit zero and not specified. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Template describes the machines that will be created. + /// template describes the machines that will be created. pub template: MachinePoolTemplate, } -/// Template describes the machines that will be created. +/// template describes the machines that will be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplate { /// Standard object's metadata. @@ -62,7 +62,7 @@ pub struct MachinePoolTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -80,35 +80,35 @@ pub struct MachinePoolTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachinePoolTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -132,29 +132,29 @@ pub struct MachinePoolTemplateSpec { /// NOTE: this field is considered only for computing v1beta2 conditions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessGates")] pub readiness_gates: Option>, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -194,7 +194,7 @@ pub struct MachinePoolTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolTemplateSpecInfrastructureRef { @@ -248,41 +248,41 @@ pub struct MachinePoolStatus { /// The number of available replicas (ready for at least minReadySeconds) for this MachinePool. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// Conditions define the current service state of the MachinePool. + /// conditions define the current service state of the MachinePool. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// FailureMessage indicates that there is a problem reconciling the state, + /// failureMessage indicates that there is a problem reconciling the state, /// and will be set to a descriptive error message. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason indicates that there is a problem reconciling the state, and + /// failureReason indicates that there is a problem reconciling the state, and /// will be set to a token value suitable for programmatic interpretation. /// /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// NodeRefs will point to the corresponding Nodes if it they exist. + /// nodeRefs will point to the corresponding Nodes if it they exist. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRefs")] pub node_refs: Option>, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of cluster actuation. + /// phase represents the current phase of cluster actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, /// The number of ready replicas for this MachinePool. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Total number of unavailable machine instances targeted by this machine pool. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machines.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machines.rs index 0bac93fb8..be862bcfe 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machines.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machines.rs @@ -20,35 +20,35 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -72,29 +72,29 @@ pub struct MachineSpec { /// NOTE: this field is considered only for computing v1beta2 conditions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessGates")] pub readiness_gates: Option>, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -134,7 +134,7 @@ pub struct MachineBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineInfrastructureRef { @@ -185,25 +185,25 @@ pub struct MachineReadinessGates { /// MachineStatus defines the observed state of Machine. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatus { - /// Addresses is a list of addresses assigned to the machine. + /// addresses is a list of addresses assigned to the machine. /// This field is copied from the infrastructure provider reference. #[serde(default, skip_serializing_if = "Option::is_none")] pub addresses: Option>, - /// BootstrapReady is the state of the bootstrap provider. + /// bootstrapReady is the state of the bootstrap provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "bootstrapReady")] pub bootstrap_ready: Option, - /// CertificatesExpiryDate is the expiry date of the machine certificates. + /// certificatesExpiryDate is the expiry date of the machine certificates. /// This value is only set for control plane machines. #[serde(default, skip_serializing_if = "Option::is_none", rename = "certificatesExpiryDate")] pub certificates_expiry_date: Option, - /// Conditions defines current service state of the Machine. + /// conditions defines current service state of the Machine. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// deletion contains information relating to removal of the Machine. /// Only present when the Machine has a deletionTimestamp and drain or wait for volume detach started. #[serde(default, skip_serializing_if = "Option::is_none")] pub deletion: Option, - /// FailureMessage will be set in the event that there is a terminal problem + /// failureMessage will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a more verbose string suitable /// for logging and human consumption. /// @@ -223,7 +223,7 @@ pub struct MachineStatus { /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureMessage")] pub failure_message: Option, - /// FailureReason will be set in the event that there is a terminal problem + /// failureReason will be set in the event that there is a terminal problem /// reconciling the Machine and will contain a succinct value suitable /// for machine interpretation. /// @@ -243,23 +243,23 @@ pub struct MachineStatus { /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureReason")] pub failure_reason: Option, - /// InfrastructureReady is the state of the infrastructure provider. + /// infrastructureReady is the state of the infrastructure provider. #[serde(default, skip_serializing_if = "Option::is_none", rename = "infrastructureReady")] pub infrastructure_ready: Option, - /// LastUpdated identifies when the phase of the Machine last transitioned. + /// lastUpdated identifies when the phase of the Machine last transitioned. #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastUpdated")] pub last_updated: Option, - /// NodeInfo is a set of ids/uuids to uniquely identify the node. + /// nodeInfo is a set of ids/uuids to uniquely identify the node. /// More info: https://kubernetes.io/docs/concepts/nodes/node/#info #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeInfo")] pub node_info: Option, - /// NodeRef will point to the corresponding Node if it exists. + /// nodeRef will point to the corresponding Node if it exists. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeRef")] pub node_ref: Option, - /// ObservedGeneration is the latest generation observed by the controller. + /// observedGeneration is the latest generation observed by the controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, - /// Phase represents the current phase of machine actuation. + /// phase represents the current phase of machine actuation. /// E.g. Pending, Running, Terminating, Failed etc. #[serde(default, skip_serializing_if = "Option::is_none")] pub phase: Option, @@ -296,7 +296,7 @@ pub struct MachineStatusDeletion { pub wait_for_node_volume_detach_start_time: Option, } -/// NodeInfo is a set of ids/uuids to uniquely identify the node. +/// nodeInfo is a set of ids/uuids to uniquely identify the node. /// More info: https://kubernetes.io/docs/concepts/nodes/node/#info #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatusNodeInfo { @@ -335,7 +335,7 @@ pub struct MachineStatusNodeInfo { pub system_uuid: String, } -/// NodeRef will point to the corresponding Node if it exists. +/// nodeRef will point to the corresponding Node if it exists. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineStatusNodeRef { /// API version of the referent. diff --git a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinesets.rs b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinesets.rs index a0f3099f7..382978631 100644 --- a/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinesets.rs +++ b/kube-custom-resources-rs/src/cluster_x_k8s_io/v1beta1/machinesets.rs @@ -21,18 +21,18 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct MachineSetSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// DeletePolicy defines the policy used to identify nodes to delete when downscaling. + /// deletePolicy defines the policy used to identify nodes to delete when downscaling. /// Defaults to "Random". Valid values are "Random, "Newest", "Oldest" #[serde(default, skip_serializing_if = "Option::is_none", rename = "deletePolicy")] pub delete_policy: Option, - /// MinReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available. + /// minReadySeconds is the minimum number of seconds for which a Node for a newly created machine should be ready before considering the replica available. /// Defaults to 0 (machine will be considered available as soon as the Node is ready) #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReadySeconds")] pub min_ready_seconds: Option, - /// Replicas is the number of desired replicas. + /// replicas is the number of desired replicas. /// This is a pointer to distinguish between explicit zero and unspecified. /// /// Defaults to: @@ -51,12 +51,12 @@ pub struct MachineSetSpec { /// should be later controlled by the autoscaler #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is a label query over machines that should match the replica count. + /// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors pub selector: MachineSetSelector, - /// Template is the object that describes the machine that will be created if + /// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -71,7 +71,7 @@ pub enum MachineSetDeletePolicy { Oldest, } -/// Selector is a label query over machines that should match the replica count. +/// selector is a label query over machines that should match the replica count. /// Label keys and values that must match in order to be controlled by this MachineSet. /// It must match the machine template's labels. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors @@ -104,7 +104,7 @@ pub struct MachineSetSelectorMatchExpressions { pub values: Option>, } -/// Template is the object that describes the machine that will be created if +/// template is the object that describes the machine that will be created if /// insufficient replicas are detected. /// Object references to custom resources are treated as templates. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -123,7 +123,7 @@ pub struct MachineSetTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations @@ -141,35 +141,35 @@ pub struct MachineSetTemplateMetadata { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpec { - /// Bootstrap is a reference to a local struct which encapsulates + /// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. pub bootstrap: MachineSetTemplateSpecBootstrap, - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(rename = "clusterName")] pub cluster_name: String, - /// FailureDomain is the failure domain the machine will be created in. + /// failureDomain is the failure domain the machine will be created in. /// Must match a key in the FailureDomains map stored on the cluster object. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureDomain")] pub failure_domain: Option, - /// InfrastructureRef is a required reference to a custom resource + /// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[serde(rename = "infrastructureRef")] pub infrastructure_ref: ObjectReference, - /// NodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine + /// nodeDeletionTimeout defines how long the controller will attempt to delete the Node that the Machine /// hosts after the Machine is marked for deletion. A duration of 0 will retry deletion indefinitely. /// Defaults to 10 seconds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDeletionTimeout")] pub node_deletion_timeout: Option, - /// NodeDrainTimeout is the total amount of time that the controller will spend on draining a node. + /// nodeDrainTimeout is the total amount of time that the controller will spend on draining a node. /// The default value is 0, meaning that the node can be drained without any time limitations. /// NOTE: NodeDrainTimeout is different from `kubectl drain --timeout` #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeDrainTimeout")] pub node_drain_timeout: Option, - /// NodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes + /// nodeVolumeDetachTimeout is the total amount of time that the controller will spend on waiting for all volumes /// to be detached. The default value is 0, meaning that the volumes can be detached without any time limitations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeVolumeDetachTimeout")] pub node_volume_detach_timeout: Option, - /// ProviderID is the identification ID of the machine provided by the provider. + /// providerID is the identification ID of the machine provided by the provider. /// This field must match the provider ID as seen on the node object corresponding to this machine. /// This field is required by higher level consumers of cluster-api. Example use case is cluster autoscaler /// with cluster-api as provider. Clean-up logic in the autoscaler compares machines to nodes to find out @@ -193,29 +193,29 @@ pub struct MachineSetTemplateSpec { /// NOTE: this field is considered only for computing v1beta2 conditions. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessGates")] pub readiness_gates: Option>, - /// Version defines the desired Kubernetes version. + /// version defines the desired Kubernetes version. /// This field is meant to be optionally used by bootstrap providers. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } -/// Bootstrap is a reference to a local struct which encapsulates +/// bootstrap is a reference to a local struct which encapsulates /// fields to configure the Machine’s bootstrapping mechanism. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecBootstrap { - /// ConfigRef is a reference to a bootstrap provider-specific resource + /// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configRef")] pub config_ref: Option, - /// DataSecretName is the name of the secret that stores the bootstrap data script. + /// dataSecretName is the name of the secret that stores the bootstrap data script. /// If nil, the Machine should remain in the Pending state. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSecretName")] pub data_secret_name: Option, } -/// ConfigRef is a reference to a bootstrap provider-specific resource +/// configRef is a reference to a bootstrap provider-specific resource /// that holds configuration details. The reference is optional to /// allow users/operators to specify Bootstrap.DataSecretName without /// the need of a controller. @@ -255,7 +255,7 @@ pub struct MachineSetTemplateSpecBootstrapConfigRef { pub uid: Option, } -/// InfrastructureRef is a required reference to a custom resource +/// infrastructureRef is a required reference to a custom resource /// offered by an infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachineSetTemplateSpecInfrastructureRef { @@ -309,7 +309,7 @@ pub struct MachineSetStatus { /// The number of available replicas (ready for at least minReadySeconds) for this MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Conditions defines current service state of the MachineSet. + /// conditions defines current service state of the MachineSet. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, /// Deprecated: This field is deprecated and is going to be removed in the next apiVersion. Please see https://github.com/kubernetes-sigs/cluster-api/blob/main/docs/proposals/20240916-improve-status-in-CAPI-resources.md for more details. @@ -340,16 +340,16 @@ pub struct MachineSetStatus { /// The number of replicas that have labels matching the labels of the machine template of the MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fullyLabeledReplicas")] pub fully_labeled_replicas: Option, - /// ObservedGeneration reflects the generation of the most recently observed MachineSet. + /// observedGeneration reflects the generation of the most recently observed MachineSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "observedGeneration")] pub observed_generation: Option, /// The number of ready replicas for this MachineSet. A machine is considered ready when the node has been created and is "Ready". #[serde(default, skip_serializing_if = "Option::is_none", rename = "readyReplicas")] pub ready_replicas: Option, - /// Replicas is the most recently observed number of replicas. + /// replicas is the most recently observed number of replicas. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Selector is the same as the label selector but in the string format to avoid introspection + /// selector is the same as the label selector but in the string format to avoid introspection /// by clients. The string will be in the same format as the query-param syntax. /// More info about label selectors: http://kubernetes.io/docs/user-guide/labels#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/flux_framework_org/v1alpha2/miniclusters.rs b/kube-custom-resources-rs/src/flux_framework_org/v1alpha2/miniclusters.rs index 1a8455f2f..45a5ed9c1 100644 --- a/kube-custom-resources-rs/src/flux_framework_org/v1alpha2/miniclusters.rs +++ b/kube-custom-resources-rs/src/flux_framework_org/v1alpha2/miniclusters.rs @@ -296,6 +296,9 @@ pub struct MiniClusterFlux { /// name as curveCertSecret, below #[serde(default, skip_serializing_if = "Option::is_none", rename = "curveCert")] pub curve_cert: Option, + /// Disable specifying the socket path + #[serde(default, skip_serializing_if = "Option::is_none", rename = "disableSocket")] + pub disable_socket: Option, /// Log level to use for flux logging (only in non TestMode) #[serde(default, skip_serializing_if = "Option::is_none", rename = "logLevel")] pub log_level: Option, @@ -323,6 +326,9 @@ pub struct MiniClusterFlux { /// Modify flux submit to be something else #[serde(default, skip_serializing_if = "Option::is_none", rename = "submitCommand")] pub submit_command: Option, + /// Specify a custom Topology + #[serde(default, skip_serializing_if = "Option::is_none")] + pub topology: Option, /// Commands for flux start --wrap #[serde(default, skip_serializing_if = "Option::is_none")] pub wrap: Option, diff --git a/kube-custom-resources-rs/src/hive_openshift_io/v1/clusterdeprovisions.rs b/kube-custom-resources-rs/src/hive_openshift_io/v1/clusterdeprovisions.rs index 00de7a44e..693bf04b1 100644 --- a/kube-custom-resources-rs/src/hive_openshift_io/v1/clusterdeprovisions.rs +++ b/kube-custom-resources-rs/src/hive_openshift_io/v1/clusterdeprovisions.rs @@ -110,6 +110,10 @@ pub struct ClusterDeprovisionPlatformAwsCredentialsSecretRef { /// Azure contains Azure-specific deprovision settings #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterDeprovisionPlatformAzure { + /// BaseDomainResourceGroupName is the name of the resource group where the cluster's DNS records + /// were created, if different from the default or the custom ResourceGroupName. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "baseDomainResourceGroupName")] + pub base_domain_resource_group_name: Option, /// cloudName is the name of the Azure cloud environment which can be used to configure the Azure SDK /// with the appropriate Azure API endpoints. /// If empty, the value is equal to "AzurePublicCloud". diff --git a/kube-custom-resources-rs/src/hive_openshift_io/v1/machinepools.rs b/kube-custom-resources-rs/src/hive_openshift_io/v1/machinepools.rs index 2077b5108..bc6aa2600 100644 --- a/kube-custom-resources-rs/src/hive_openshift_io/v1/machinepools.rs +++ b/kube-custom-resources-rs/src/hive_openshift_io/v1/machinepools.rs @@ -476,6 +476,10 @@ pub struct MachinePoolPlatformIbmcloudDedicatedHosts { /// OpenStack is the configuration used when installing on OpenStack. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MachinePoolPlatformOpenstack { + /// AdditionalSecurityGroupIDs contains IDs of additional security groups for machines, where each ID + /// is presented in the format sg-xxxx. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "additionalSecurityGroupIDs")] + pub additional_security_group_i_ds: Option>, /// Flavor defines the OpenStack Nova flavor. /// eg. m1.large /// The json key here differs from the installer which uses both "computeFlavor" and type "type" depending on which diff --git a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclusters.rs b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclusters.rs index 8a31be0cf..01fb8fe91 100644 --- a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclusters.rs +++ b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclusters.rs @@ -27,6 +27,11 @@ pub struct VSphereClusterSpec { /// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneEndpoint")] pub control_plane_endpoint: Option, + /// DisableClusterModule is used to explicitly turn off the ClusterModule feature. + /// This should work along side NodeAntiAffinity feature flag. + /// If the NodeAntiAffinity feature flag is turned off, this will be disregarded. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "disableClusterModule")] + pub disable_cluster_module: Option, /// FailureDomainSelector is the label selector to use for failure domain selection /// for the control plane nodes of the cluster. /// If not set (`nil`), selecting failure domains will be disabled. @@ -144,10 +149,10 @@ pub struct VSphereClusterStatus { /// FailureDomains is a list of failure domain objects synced from the infrastructure provider. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct VSphereClusterStatusFailureDomains { - /// Attributes is a free form map of attributes an infrastructure provider might use or require. + /// attributes is a free form map of attributes an infrastructure provider might use or require. #[serde(default, skip_serializing_if = "Option::is_none")] pub attributes: Option>, - /// ControlPlane determines if this failure domain is suitable for use by control plane machines. + /// controlPlane determines if this failure domain is suitable for use by control plane machines. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlane")] pub control_plane: Option, } diff --git a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclustertemplates.rs b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclustertemplates.rs index 5cca0b9df..03c3dd733 100644 --- a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclustertemplates.rs +++ b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vsphereclustertemplates.rs @@ -39,6 +39,11 @@ pub struct VSphereClusterTemplateTemplateSpec { /// ControlPlaneEndpoint represents the endpoint used to communicate with the control plane. #[serde(default, skip_serializing_if = "Option::is_none", rename = "controlPlaneEndpoint")] pub control_plane_endpoint: Option, + /// DisableClusterModule is used to explicitly turn off the ClusterModule feature. + /// This should work along side NodeAntiAffinity feature flag. + /// If the NodeAntiAffinity feature flag is turned off, this will be disregarded. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "disableClusterModule")] + pub disable_cluster_module: Option, /// FailureDomainSelector is the label selector to use for failure domain selection /// for the control plane nodes of the cluster. /// If not set (`nil`), selecting failure domains will be disabled. diff --git a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vspheremachinetemplates.rs b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vspheremachinetemplates.rs index e031e0a22..12911f2dc 100644 --- a/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vspheremachinetemplates.rs +++ b/kube-custom-resources-rs/src/infrastructure_cluster_x_k8s_io/v1beta1/vspheremachinetemplates.rs @@ -37,7 +37,7 @@ pub struct VSphereMachineTemplateTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct VSphereMachineTemplateTemplateMetadata { - /// Annotations is an unstructured key value map stored with a resource that may be + /// annotations is an unstructured key value map stored with a resource that may be /// set by external tools to store and retrieve arbitrary metadata. They are not /// queryable and should be preserved when modifying objects. /// More info: http://kubernetes.io/docs/user-guide/annotations diff --git a/kube-custom-resources-rs/src/installation_mattermost_com/v1beta1/mattermosts.rs b/kube-custom-resources-rs/src/installation_mattermost_com/v1beta1/mattermosts.rs index 2680d4bbf..85bcfe62b 100644 --- a/kube-custom-resources-rs/src/installation_mattermost_com/v1beta1/mattermosts.rs +++ b/kube-custom-resources-rs/src/installation_mattermost_com/v1beta1/mattermosts.rs @@ -52,10 +52,12 @@ pub struct MattermostSpec { /// Ingress defines configuration for Ingress resource created by the Operator. #[serde(default, skip_serializing_if = "Option::is_none")] pub ingress: Option, - /// IngressAnnotations defines annotations passed to the Ingress associated with Mattermost. Deprecated: Use Spec.Ingress.Annotations. + /// IngressAnnotations defines annotations passed to the Ingress associated with Mattermost. + /// Deprecated: Use Spec.Ingress.Annotations. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressAnnotations")] pub ingress_annotations: Option>, - /// IngressName defines the host to be used when creating the ingress rules. Deprecated: Use Spec.Ingress.Host instead. + /// IngressName defines the host to be used when creating the ingress rules. + /// Deprecated: Use Spec.Ingress.Host instead. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] pub ingress_name: Option, /// LicenseSecret is the name of the secret containing a Mattermost license. @@ -64,37 +66,56 @@ pub struct MattermostSpec { /// Optional environment variables to set in the Mattermost application pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostEnv")] pub mattermost_env: Option>, - /// PodExtensions specify custom extensions for Mattermost pods. This can be used for custom readiness checks etc. These settings generally don't need to be changed. + /// PodExtensions specify custom extensions for Mattermost pods. + /// This can be used for custom readiness checks etc. + /// These settings generally don't need to be changed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podExtensions")] pub pod_extensions: Option, /// PodTemplate defines configuration for the template for Mattermost pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "podTemplate")] pub pod_template: Option, - /// Probes defines configuration of liveness and readiness probe for Mattermost pods. These settings generally don't need to be changed. + /// Probes defines configuration of liveness and readiness probe for Mattermost pods. + /// These settings generally don't need to be changed. #[serde(default, skip_serializing_if = "Option::is_none")] pub probes: Option, - /// Replicas defines the number of replicas to use for the Mattermost app servers. + /// Replicas defines the number of replicas to use for the Mattermost app + /// servers. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceLabels")] pub resource_labels: Option>, - /// ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator. - /// WARNING: ResourcePatch is highly experimental and subject to change. Some patches may be impossible to perform or may impact the stability of Mattermost server. - /// Use at your own risk when no other options are available. + /// ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator. + /// + /// WARNING: ResourcePatch is highly experimental and subject to change. + /// Some patches may be impossible to perform or may impact the stability of Mattermost server. + /// + /// Use at your own risk when no other options are available. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourcePatch")] pub resource_patch: Option, - /// Scheduling defines the configuration related to scheduling of the Mattermost pods as well as resource constraints. These settings generally don't need to be changed. + /// Scheduling defines the configuration related to scheduling of the Mattermost pods + /// as well as resource constraints. These settings generally don't need to be changed. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheduling: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAnnotations")] pub service_annotations: Option>, - /// Size defines the size of the Mattermost. This is typically specified in number of users. This will override replica and resource requests/limits appropriately for the provided number of users. This is a write-only field - its value is erased after setting appropriate values of resources. Accepted values are: 100users, 1000users, 5000users, 10000users, and 250000users. If replicas and resource requests/limits are not specified, and Size is not provided the configuration for 5000users will be applied. Setting 'Replicas', 'Scheduling.Resources', 'FileStore.Replicas', 'FileStore.Resource', 'Database.Replicas', or 'Database.Resources' will override the values set by Size. Setting new Size will override previous values regardless if set by Size or manually. + /// Size defines the size of the Mattermost. This is typically specified in + /// number of users. This will override replica and resource requests/limits + /// appropriately for the provided number of users. This is a write-only + /// field - its value is erased after setting appropriate values of resources. + /// Accepted values are: 100users, 1000users, 5000users, 10000users, + /// and 250000users. If replicas and resource requests/limits are not + /// specified, and Size is not provided the configuration for 5000users will + /// be applied. Setting 'Replicas', 'Scheduling.Resources', 'FileStore.Replicas', + /// 'FileStore.Resource', 'Database.Replicas', or 'Database.Resources' will + /// override the values set by Size. Setting new Size will override previous + /// values regardless if set by Size or manually. #[serde(default, skip_serializing_if = "Option::is_none")] pub size: Option, /// UpdateJob defines configuration for the template for the update job. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updateJob")] pub update_job: Option, - /// UseIngressTLS specifies whether TLS secret should be configured for Ingress. Deprecated: Use Spec.Ingress.TLSSecret. + /// UseIngressTLS specifies whether TLS secret should be configured for Ingress. + /// Deprecated: Use Spec.Ingress.TLSSecret. #[serde(default, skip_serializing_if = "Option::is_none", rename = "useIngressTLS")] pub use_ingress_tls: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "useServiceLoadBalancer")] @@ -105,7 +126,8 @@ pub struct MattermostSpec { /// Defines additional volumeMounts to add to Mattermost application pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] pub volume_mounts: Option>, - /// Volumes allows for mounting volumes from various sources into the Mattermost application pods. + /// Volumes allows for mounting volumes from various sources into the + /// Mattermost application pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub volumes: Option>, } @@ -142,7 +164,8 @@ pub struct MattermostAwsLoadBalancerControllerHosts { /// External Services #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostDatabase { - /// DisableReadinessCheck instructs Operator to not add init container responsible for checking DB access. Can be used to define custom init containers specified in `spec.PodExtensions.InitContainers`. + /// DisableReadinessCheck instructs Operator to not add init container responsible for checking DB access. + /// Can be used to define custom init containers specified in `spec.PodExtensions.InitContainers`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "disableReadinessCheck")] pub disable_readiness_check: Option, /// Defines the configuration of and external database. @@ -156,7 +179,13 @@ pub struct MattermostDatabase { /// Defines the configuration of and external database. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostDatabaseExternal { - /// Secret contains data necessary to connect to the external database. The Kubernetes Secret should contain: - Key: DB_CONNECTION_STRING | Value: Full database connection string. It can also contain optional fields, such as: - Key: MM_SQLSETTINGS_DATASOURCEREPLICAS | Value: Connection string to read replicas of the database. - Key: DB_CONNECTION_CHECK_URL | Value: The URL used for checking that the database is accessible. Omitting this value in the secret will cause Operator to skip adding init container for database check. + /// Secret contains data necessary to connect to the external database. + /// The Kubernetes Secret should contain: + /// - Key: DB_CONNECTION_STRING | Value: Full database connection string. + /// It can also contain optional fields, such as: + /// - Key: MM_SQLSETTINGS_DATASOURCEREPLICAS | Value: Connection string to read replicas of the database. + /// - Key: DB_CONNECTION_CHECK_URL | Value: The URL used for checking that the database is accessible. + /// Omitting this value in the secret will cause Operator to skip adding init container for database check. #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, } @@ -179,10 +208,13 @@ pub struct MattermostDatabaseOperatorManaged { /// Defines the object storage url for uploading backups. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupURL")] pub backup_url: Option, - /// Defines the AWS S3 bucket where the Database Backup is stored. The operator will download the file to restore the data. + /// Defines the AWS S3 bucket where the Database Backup is stored. + /// The operator will download the file to restore the data. #[serde(default, skip_serializing_if = "Option::is_none", rename = "initBucketURL")] pub init_bucket_url: Option, - /// Defines the number of database replicas. For redundancy use at least 2 replicas. Setting this will override the number of replicas set by 'Size'. + /// Defines the number of database replicas. + /// For redundancy use at least 2 replicas. + /// Setting this will override the number of replicas set by 'Size'. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Defines the resource requests and limits for the database pods. @@ -202,15 +234,23 @@ pub struct MattermostDatabaseOperatorManaged { /// Defines the resource requests and limits for the database pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostDatabaseOperatorManagedResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -218,8 +258,15 @@ pub struct MattermostDatabaseOperatorManagedResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostDatabaseOperatorManagedResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// DeploymentTemplate defines configuration for the template for Mattermost deployment. @@ -233,13 +280,20 @@ pub struct MattermostDeploymentTemplate { /// Custom DNS configuration to use for the Mattermost Installation pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostDnsConfig { - /// A list of DNS name server IP addresses. This will be appended to the base nameservers generated from DNSPolicy. Duplicated nameservers will be removed. + /// A list of DNS name server IP addresses. + /// This will be appended to the base nameservers generated from DNSPolicy. + /// Duplicated nameservers will be removed. #[serde(default, skip_serializing_if = "Option::is_none")] pub nameservers: Option>, - /// A list of DNS resolver options. This will be merged with the base options generated from DNSPolicy. Duplicated entries will be removed. Resolution options given in Options will override those that appear in the base DNSPolicy. + /// A list of DNS resolver options. + /// This will be merged with the base options generated from DNSPolicy. + /// Duplicated entries will be removed. Resolution options given in Options + /// will override those that appear in the base DNSPolicy. #[serde(default, skip_serializing_if = "Option::is_none")] pub options: Option>, - /// A list of DNS search domains for host-name lookup. This will be appended to the base search paths generated from DNSPolicy. Duplicated search paths will be removed. + /// A list of DNS search domains for host-name lookup. + /// This will be appended to the base search paths generated from DNSPolicy. + /// Duplicated search paths will be removed. #[serde(default, skip_serializing_if = "Option::is_none")] pub searches: Option>, } @@ -288,7 +342,8 @@ pub struct MattermostFileStoreExternal { /// Set to the bucket name of your external MinIO or S3. #[serde(default, skip_serializing_if = "Option::is_none")] pub bucket: Option, - /// Optionally enter the name of already existing secret. Secret should have two values: "accesskey" and "secretkey". + /// Optionally enter the name of already existing secret. + /// Secret should have two values: "accesskey" and "secretkey". #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, /// Set to use an external MinIO deployment or S3. @@ -320,7 +375,12 @@ pub struct MattermostFileStoreLocal { /// Defines the configuration of file store managed by Kubernetes operator. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostFileStoreOperatorManaged { - /// Defines the number of Minio replicas. Supply 1 to run Minio in standalone mode with no redundancy. Supply 4 or more to run Minio in distributed mode. Note that it is not possible to upgrade Minio from standalone to distributed mode. Setting this will override the number of replicas set by 'Size'. More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html + /// Defines the number of Minio replicas. + /// Supply 1 to run Minio in standalone mode with no redundancy. + /// Supply 4 or more to run Minio in distributed mode. + /// Note that it is not possible to upgrade Minio from standalone to distributed mode. + /// Setting this will override the number of replicas set by 'Size'. + /// More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Defines the resource requests and limits for the Minio pods. @@ -334,15 +394,23 @@ pub struct MattermostFileStoreOperatorManaged { /// Defines the resource requests and limits for the Minio pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostFileStoreOperatorManagedResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -350,14 +418,26 @@ pub struct MattermostFileStoreOperatorManagedResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostFileStoreOperatorManagedResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } -/// LocalObjectReference contains enough information to let you locate the referenced object inside the same namespace. +/// LocalObjectReference contains enough information to let you locate the +/// referenced object inside the same namespace. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostImagePullSecrets { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -368,7 +448,8 @@ pub struct MattermostIngress { /// Annotations defines annotations passed to the Ingress associated with Mattermost. #[serde(default, skip_serializing_if = "Option::is_none")] pub annotations: Option>, - /// Enabled determines whether the Operator should create Ingress resource or not. Disabling ingress on existing installation will cause Operator to remove it. + /// Enabled determines whether the Operator should create Ingress resource or not. + /// Disabling ingress on existing installation will cause Operator to remove it. pub enabled: bool, /// Host defines the Ingress host to be used when creating the ingress rules. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -379,7 +460,8 @@ pub struct MattermostIngress { /// IngressClass will be set on Ingress resource to associate it with specified IngressClass resource. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressClass")] pub ingress_class: Option, - /// TLSSecret specifies secret used for configuring TLS for Ingress. If empty TLS will not be configured. + /// TLSSecret specifies secret used for configuring TLS for Ingress. + /// If empty TLS will not be configured. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tlsSecret")] pub tls_secret: Option, } @@ -396,7 +478,15 @@ pub struct MattermostIngressHosts { pub struct MattermostMattermostEnv { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -410,10 +500,12 @@ pub struct MattermostMattermostEnvValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -426,7 +518,11 @@ pub struct MattermostMattermostEnvValueFrom { pub struct MattermostMattermostEnvValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -434,7 +530,8 @@ pub struct MattermostMattermostEnvValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostMattermostEnvValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -445,7 +542,8 @@ pub struct MattermostMattermostEnvValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostMattermostEnvValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -463,7 +561,11 @@ pub struct MattermostMattermostEnvValueFromResourceFieldRef { pub struct MattermostMattermostEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -471,16 +573,25 @@ pub struct MattermostMattermostEnvValueFromSecretKeyRef { pub optional: Option, } -/// PodExtensions specify custom extensions for Mattermost pods. This can be used for custom readiness checks etc. These settings generally don't need to be changed. +/// PodExtensions specify custom extensions for Mattermost pods. +/// This can be used for custom readiness checks etc. +/// These settings generally don't need to be changed. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensions { - /// Additional Container Ports injected into pod's main container. The setting does not override ContainerPorts defined by the Operator. + /// Additional Container Ports injected into pod's main container. + /// The setting does not override ContainerPorts defined by the Operator. #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerPorts")] pub container_ports: Option>, - /// Additional InitContainers injected into pods. The setting does not override InitContainers defined by the Operator. + /// Additional InitContainers injected into pods. + /// The setting does not override InitContainers defined by the Operator. #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] pub init_containers: Option>, - /// Additional sidecar containers injected into pods. The setting does not override any sidecar containers defined by the Operator. Note that sidecars are injected as standard pod containers alongside the Mattermost application server. In the future, this may be migrated to use the currently-feature-gated init container method introduced in k8s v1.28: https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/ + /// Additional sidecar containers injected into pods. + /// The setting does not override any sidecar containers defined by the Operator. + /// Note that sidecars are injected as standard pod containers alongside the + /// Mattermost application server. In the future, this may be migrated to + /// use the currently-feature-gated init container method introduced in k8s v1.28: + /// https://kubernetes.io/blog/2023/08/25/native-sidecar-containers/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "sidecarContainers")] pub sidecar_containers: Option>, } @@ -488,19 +599,26 @@ pub struct MattermostPodExtensions { /// ContainerPort represents a network port in a single container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsContainerPorts { - /// Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + /// Number of port to expose on the pod's IP address. + /// This must be a valid port number, 0 < x < 65536. #[serde(rename = "containerPort")] pub container_port: i32, /// What host IP to bind the external port to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] pub host_ip: Option, - /// Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + /// Number of port to expose on the host. + /// If specified, this must be a valid port number, 0 < x < 65536. + /// If HostNetwork is specified, this must match ContainerPort. + /// Most containers do not need this. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] pub host_port: Option, - /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + /// named port in a pod must have a unique name. Name for the port that can be + /// referred to by services. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + /// Protocol for port. Must be UDP, TCP, or SCTP. + /// Defaults to "TCP". #[serde(default, skip_serializing_if = "Option::is_none")] pub protocol: Option, } @@ -508,69 +626,166 @@ pub struct MattermostPodExtensionsContainerPorts { /// A single application container that you want to run within a pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainers { - /// Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + /// Arguments to the entrypoint. + /// The container image's CMD is used if this is not provided. + /// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + /// cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + /// produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + /// of whether the variable exists or not. Cannot be updated. + /// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell #[serde(default, skip_serializing_if = "Option::is_none")] pub args: Option>, - /// Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + /// Entrypoint array. Not executed within a shell. + /// The container image's ENTRYPOINT is used if this is not provided. + /// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + /// cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + /// produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + /// of whether the variable exists or not. Cannot be updated. + /// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, - /// List of environment variables to set in the container. Cannot be updated. + /// List of environment variables to set in the container. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub env: Option>, - /// List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + /// List of sources to populate environment variables in the container. + /// The keys defined within a source must be a C_IDENTIFIER. All invalid keys + /// will be reported as an event when the container is starting. When a key exists in multiple + /// sources, the value associated with the last source will take precedence. + /// Values defined by an Env with a duplicate key will take precedence. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] pub env_from: Option>, - /// Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + /// Container image name. + /// More info: https://kubernetes.io/docs/concepts/containers/images + /// This field is optional to allow higher level config management to default or override + /// container images in workload controllers like Deployments and StatefulSets. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + /// Image pull policy. + /// One of Always, Never, IfNotPresent. + /// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/containers/images#updating-images #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] pub image_pull_policy: Option, - /// Actions that the management system should take in response to container lifecycle events. Cannot be updated. + /// Actions that the management system should take in response to container lifecycle events. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub lifecycle: Option, - /// Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Periodic probe of container liveness. + /// Container will be restarted if the probe fails. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] pub liveness_probe: Option, - /// Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + /// Name of the container specified as a DNS_LABEL. + /// Each container in a pod must have a unique name (DNS_LABEL). + /// Cannot be updated. pub name: String, - /// List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. + /// List of ports to expose from the container. Not specifying a port here + /// DOES NOT prevent that port from being exposed. Any port which is + /// listening on the default "0.0.0.0" address inside a container will be + /// accessible from the network. + /// Modifying this array with strategic merge patch may corrupt the data. + /// For more information See https://github.com/kubernetes/kubernetes/issues/108255. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub ports: Option>, - /// Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Periodic probe of container service readiness. + /// Container will be removed from service endpoints if the probe fails. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] pub readiness_probe: Option, - /// Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Resources resize policy for the container. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resizePolicy")] + pub resize_policy: Option>, + /// Compute Resources required by this container. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + /// RestartPolicy defines the restart behavior of individual containers in a pod. + /// This field may only be set for init containers, and the only allowed value is "Always". + /// For non-init containers or when this field is not specified, + /// the restart behavior is defined by the Pod's restart policy and the container type. + /// Setting the RestartPolicy as "Always" for the init container will have the following effect: + /// this init container will be continually restarted on + /// exit until all regular containers have terminated. Once all regular + /// containers have completed, all init containers with restartPolicy "Always" + /// will be shut down. This lifecycle differs from normal init containers and + /// is often referred to as a "sidecar" container. Although this init + /// container still starts in the init container sequence, it does not wait + /// for the container to complete before proceeding to the next init + /// container. Instead, the next init container starts immediately after this + /// init container is started, or after any startupProbe has successfully + /// completed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "restartPolicy")] + pub restart_policy: Option, + /// SecurityContext defines the security options the container should be run with. + /// If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. + /// More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] pub security_context: Option, - /// StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// StartupProbe indicates that the Pod has successfully initialized. + /// If specified, no other probes are executed until this completes successfully. + /// If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. + /// This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, + /// when it might take a long time to load data or warm a cache, than during steady-state operation. + /// This cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] pub startup_probe: Option, - /// Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + /// Whether this container should allocate a buffer for stdin in the container runtime. If this + /// is not set, reads from stdin in the container will always result in EOF. + /// Default is false. #[serde(default, skip_serializing_if = "Option::is_none")] pub stdin: Option, - /// Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + /// Whether the container runtime should close the stdin channel after it has been opened by + /// a single attach. When stdin is true the stdin stream will remain open across multiple attach + /// sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + /// first client attaches to stdin, and then remains open and accepts data until the client disconnects, + /// at which time stdin is closed and remains closed until the container is restarted. If this + /// flag is false, a container processes that reads from stdin will never receive an EOF. + /// Default is false #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] pub stdin_once: Option, - /// Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + /// Optional: Path at which the file to which the container's termination message + /// will be written is mounted into the container's filesystem. + /// Message written is intended to be brief final status, such as an assertion failure message. + /// Will be truncated by the node if greater than 4096 bytes. The total message length across + /// all containers will be limited to 12kb. + /// Defaults to /dev/termination-log. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] pub termination_message_path: Option, - /// Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + /// Indicate how the termination message should be populated. File will use the contents of + /// terminationMessagePath to populate the container status message on both success and failure. + /// FallbackToLogsOnError will use the last chunk of container log output if the termination + /// message file is empty and the container exited with an error. + /// The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + /// Defaults to File. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] pub termination_message_policy: Option, - /// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + /// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + /// Default is false. #[serde(default, skip_serializing_if = "Option::is_none")] pub tty: Option, /// volumeDevices is the list of block devices to be used by the container. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] pub volume_devices: Option>, - /// Pod volumes to mount into the container's filesystem. Cannot be updated. + /// Pod volumes to mount into the container's filesystem. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] pub volume_mounts: Option>, - /// Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + /// Container's working directory. + /// If not specified, the container runtime's default will be used, which + /// might be configured in the container image. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] pub working_dir: Option, } @@ -580,7 +795,15 @@ pub struct MattermostPodExtensionsInitContainers { pub struct MattermostPodExtensionsInitContainersEnv { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -594,10 +817,12 @@ pub struct MattermostPodExtensionsInitContainersEnvValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -610,7 +835,11 @@ pub struct MattermostPodExtensionsInitContainersEnvValueFrom { pub struct MattermostPodExtensionsInitContainersEnvValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -618,7 +847,8 @@ pub struct MattermostPodExtensionsInitContainersEnvValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersEnvValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -629,7 +859,8 @@ pub struct MattermostPodExtensionsInitContainersEnvValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersEnvValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -647,7 +878,11 @@ pub struct MattermostPodExtensionsInitContainersEnvValueFromResourceFieldRef { pub struct MattermostPodExtensionsInitContainersEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -672,7 +907,11 @@ pub struct MattermostPodExtensionsInitContainersEnvFrom { /// The ConfigMap to select from #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersEnvFromConfigMapRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap must be defined @@ -683,7 +922,11 @@ pub struct MattermostPodExtensionsInitContainersEnvFromConfigMapRef { /// The Secret to select from #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersEnvFromSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret must be defined @@ -691,18 +934,33 @@ pub struct MattermostPodExtensionsInitContainersEnvFromSecretRef { pub optional: Option, } -/// Actions that the management system should take in response to container lifecycle events. Cannot be updated. +/// Actions that the management system should take in response to container lifecycle events. +/// Cannot be updated. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecycle { - /// PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + /// PostStart is called immediately after a container is created. If the handler fails, + /// the container is terminated and restarted according to its restart policy. + /// Other management of the container blocks until the hook completes. + /// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] pub post_start: Option, - /// PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + /// PreStop is called immediately before a container is terminated due to an + /// API request or management event such as liveness/startup probe failure, + /// preemption, resource contention, etc. The handler is not called if the + /// container crashes or exits. The Pod's termination grace period countdown begins before the + /// PreStop hook is executed. Regardless of the outcome of the handler, the + /// container will eventually terminate within the Pod's termination grace + /// period (unless delayed by finalizers). Other management of the container blocks until the hook completes + /// or until the termination grace period is reached. + /// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] pub pre_stop: Option, } -/// PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks +/// PostStart is called immediately after a container is created. If the handler fails, +/// the container is terminated and restarted according to its restart policy. +/// Other management of the container blocks until the hook completes. +/// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePostStart { /// Exec specifies the action to take. @@ -711,7 +969,12 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePostStart { /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. + /// Sleep represents the duration that the container should sleep before being terminated. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, + /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept + /// for the backward compatibility. There are no validation of this field and + /// lifecycle hooks will fail in runtime when tcp handler is specified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -719,7 +982,11 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePostStart { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePostStartExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } @@ -727,7 +994,8 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePostStartExec { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePostStartHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -736,9 +1004,12 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePostStartHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -746,23 +1017,43 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePostStartHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePostStartHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, } -/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. +/// Sleep represents the duration that the container should sleep before being terminated. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsInitContainersLifecyclePostStartSleep { + /// Seconds is the number of seconds to sleep. + pub seconds: i64, +} + +/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept +/// for the backward compatibility. There are no validation of this field and +/// lifecycle hooks will fail in runtime when tcp handler is specified. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePostStartTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks +/// PreStop is called immediately before a container is terminated due to an +/// API request or management event such as liveness/startup probe failure, +/// preemption, resource contention, etc. The handler is not called if the +/// container crashes or exits. The Pod's termination grace period countdown begins before the +/// PreStop hook is executed. Regardless of the outcome of the handler, the +/// container will eventually terminate within the Pod's termination grace +/// period (unless delayed by finalizers). Other management of the container blocks until the hook completes +/// or until the termination grace period is reached. +/// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePreStop { /// Exec specifies the action to take. @@ -771,7 +1062,12 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePreStop { /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. + /// Sleep represents the duration that the container should sleep before being terminated. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, + /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept + /// for the backward compatibility. There are no validation of this field and + /// lifecycle hooks will fail in runtime when tcp handler is specified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -779,7 +1075,11 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePreStop { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePreStopExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } @@ -787,7 +1087,8 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePreStopExec { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePreStopHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -796,9 +1097,12 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePreStopHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -806,53 +1110,83 @@ pub struct MattermostPodExtensionsInitContainersLifecyclePreStopHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePreStopHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, } -/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. +/// Sleep represents the duration that the container should sleep before being terminated. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsInitContainersLifecyclePreStopSleep { + /// Seconds is the number of seconds to sleep. + pub seconds: i64, +} + +/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept +/// for the backward compatibility. There are no validation of this field and +/// lifecycle hooks will fail in runtime when tcp handler is specified. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLifecyclePreStopTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// Periodic probe of container liveness. +/// Container will be restarted if the probe fails. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLivenessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -860,18 +1194,24 @@ pub struct MattermostPodExtensionsInitContainersLivenessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLivenessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLivenessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -879,7 +1219,8 @@ pub struct MattermostPodExtensionsInitContainersLivenessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLivenessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -888,9 +1229,12 @@ pub struct MattermostPodExtensionsInitContainersLivenessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -898,7 +1242,8 @@ pub struct MattermostPodExtensionsInitContainersLivenessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersLivenessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -910,61 +1255,88 @@ pub struct MattermostPodExtensionsInitContainersLivenessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } /// ContainerPort represents a network port in a single container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersPorts { - /// Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + /// Number of port to expose on the pod's IP address. + /// This must be a valid port number, 0 < x < 65536. #[serde(rename = "containerPort")] pub container_port: i32, /// What host IP to bind the external port to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] pub host_ip: Option, - /// Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + /// Number of port to expose on the host. + /// If specified, this must be a valid port number, 0 < x < 65536. + /// If HostNetwork is specified, this must match ContainerPort. + /// Most containers do not need this. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] pub host_port: Option, - /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + /// named port in a pod must have a unique name. Name for the port that can be + /// referred to by services. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + /// Protocol for port. Must be UDP, TCP, or SCTP. + /// Defaults to "TCP". #[serde(default, skip_serializing_if = "Option::is_none")] pub protocol: Option, } -/// Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// Periodic probe of container service readiness. +/// Container will be removed from service endpoints if the probe fails. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersReadinessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -972,18 +1344,24 @@ pub struct MattermostPodExtensionsInitContainersReadinessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersReadinessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersReadinessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -991,7 +1369,8 @@ pub struct MattermostPodExtensionsInitContainersReadinessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersReadinessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1000,9 +1379,12 @@ pub struct MattermostPodExtensionsInitContainersReadinessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1010,7 +1392,8 @@ pub struct MattermostPodExtensionsInitContainersReadinessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersReadinessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -1022,22 +1405,47 @@ pub struct MattermostPodExtensionsInitContainersReadinessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ +/// ContainerResizePolicy represents resource resize policy for the container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsInitContainersResizePolicy { + /// Name of the resource to which this resource resize policy applies. + /// Supported values: cpu, memory. + #[serde(rename = "resourceName")] + pub resource_name: String, + /// Restart policy to apply when specified resource is resized. + /// If not specified, it defaults to NotRequired. + #[serde(rename = "restartPolicy")] + pub restart_policy: String, +} + +/// Compute Resources required by this container. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -1045,49 +1453,125 @@ pub struct MattermostPodExtensionsInitContainersResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } -/// SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ +/// SecurityContext defines the security options the container should be run with. +/// If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. +/// More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersSecurityContext { - /// AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. + /// AllowPrivilegeEscalation controls whether a process can gain more + /// privileges than its parent process. This bool directly controls if + /// the no_new_privs flag will be set on the container process. + /// AllowPrivilegeEscalation is true always when the container is: + /// 1) run as Privileged + /// 2) has CAP_SYS_ADMIN + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, - /// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, + /// The capabilities to add/drop when running containers. + /// Defaults to the default set of capabilities granted by the container runtime. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub capabilities: Option, - /// Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. + /// Run container in privileged mode. + /// Processes in privileged containers are essentially equivalent to root on the host. + /// Defaults to false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, - /// procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. + /// procMount denotes the type of proc mount to use for the containers. + /// The default value is Default which uses the container runtime defaults for + /// readonly paths and masked paths. + /// This requires the ProcMountType feature flag to be enabled. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] pub proc_mount: Option, - /// Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. + /// Whether this container has a read-only root filesystem. + /// Default is false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] pub read_only_root_filesystem: Option, - /// The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The GID to run the entrypoint of the container process. + /// Uses runtime default if unset. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] pub run_as_group: Option, - /// Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Indicates that the container must run as a non-root user. + /// If true, the Kubelet will validate the image at runtime to ensure that it + /// does not run as UID 0 (root) and fail to start the container if it does. + /// If unset or false, no such validation will be performed. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] pub run_as_non_root: Option, - /// The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The UID to run the entrypoint of the container process. + /// Defaults to user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] pub run_as_user: Option, - /// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The SELinux context to be applied to the container. + /// If unspecified, the container runtime will allocate a random SELinux context for each + /// container. May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] pub se_linux_options: Option, - /// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. + /// The seccomp options to use by this container. If seccomp options are + /// provided at both the pod & container level, the container options + /// override the pod options. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] pub seccomp_profile: Option, - /// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + /// The Windows specific settings applied to all containers. + /// If unspecified, the options from the PodSecurityContext will be used. + /// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is linux. #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] pub windows_options: Option, } -/// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsInitContainersSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + +/// The capabilities to add/drop when running containers. +/// Defaults to the default set of capabilities granted by the container runtime. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersSecurityContextCapabilities { /// Added capabilities @@ -1098,7 +1582,11 @@ pub struct MattermostPodExtensionsInitContainersSecurityContextCapabilities { pub drop: Option>, } -/// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. +/// The SELinux context to be applied to the container. +/// If unspecified, the container runtime will allocate a random SELinux context for each +/// container. May also be set in PodSecurityContext. If set in both SecurityContext and +/// PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersSecurityContextSeLinuxOptions { /// Level is SELinux level label that applies to the container. @@ -1115,66 +1603,108 @@ pub struct MattermostPodExtensionsInitContainersSecurityContextSeLinuxOptions { pub user: Option, } -/// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. +/// The seccomp options to use by this container. If seccomp options are +/// provided at both the pod & container level, the container options +/// override the pod options. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersSecurityContextSeccompProfile { - /// localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". + /// localhostProfile indicates a profile defined in a file on the node should be used. + /// The profile must be preconfigured on the node to work. + /// Must be a descending path, relative to the kubelet's configured seccomp profile location. + /// Must be set if type is "Localhost". Must NOT be set for any other type. #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] pub localhost_profile: Option, - /// type indicates which kind of seccomp profile will be applied. Valid options are: - /// Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. + /// type indicates which kind of seccomp profile will be applied. + /// Valid options are: + /// + /// Localhost - a profile defined in a file on the node should be used. + /// RuntimeDefault - the container runtime default profile should be used. + /// Unconfined - no profile should be applied. #[serde(rename = "type")] pub r#type: String, } -/// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. +/// The Windows specific settings applied to all containers. +/// If unspecified, the options from the PodSecurityContext will be used. +/// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is linux. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersSecurityContextWindowsOptions { - /// GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + /// GMSACredentialSpec is where the GMSA admission webhook + /// (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the + /// GMSA credential spec named by the GMSACredentialSpecName field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] pub gmsa_credential_spec: Option, /// GMSACredentialSpecName is the name of the GMSA credential spec to use. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] pub gmsa_credential_spec_name: Option, - /// HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + /// HostProcess determines if a container should be run as a 'Host Process' container. + /// All of a Pod's containers must have the same effective HostProcess value + /// (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). + /// In addition, if HostProcess is true then HostNetwork must also be set to true. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] pub host_process: Option, - /// The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// The UserName in Windows to run the entrypoint of the container process. + /// Defaults to the user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] pub run_as_user_name: Option, } -/// StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// StartupProbe indicates that the Pod has successfully initialized. +/// If specified, no other probes are executed until this completes successfully. +/// If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. +/// This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, +/// when it might take a long time to load data or warm a cache, than during steady-state operation. +/// This cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersStartupProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -1182,18 +1712,24 @@ pub struct MattermostPodExtensionsInitContainersStartupProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersStartupProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersStartupProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -1201,7 +1737,8 @@ pub struct MattermostPodExtensionsInitContainersStartupProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersStartupProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1210,9 +1747,12 @@ pub struct MattermostPodExtensionsInitContainersStartupProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1220,7 +1760,8 @@ pub struct MattermostPodExtensionsInitContainersStartupProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersStartupProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -1232,7 +1773,9 @@ pub struct MattermostPodExtensionsInitContainersStartupProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } @@ -1249,21 +1792,50 @@ pub struct MattermostPodExtensionsInitContainersVolumeDevices { /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsInitContainersVolumeMounts { - /// Path within the container at which the volume should be mounted. Must not contain ':'. + /// Path within the container at which the volume should be mounted. Must + /// not contain ':'. #[serde(rename = "mountPath")] pub mount_path: String, - /// mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + /// mountPropagation determines how mounts are propagated from the host + /// to container and the other way around. + /// When not set, MountPropagationNone is used. + /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. pub name: String, - /// Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + /// Mounted read-only if true, read-write otherwise (false or unspecified). + /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, + /// Path within the volume from which the container's volume should be mounted. + /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] pub sub_path: Option, - /// Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + /// Expanded path within the volume from which the container's volume should be mounted. + /// Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. + /// Defaults to "" (volume's root). + /// SubPathExpr and SubPath are mutually exclusive. #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] pub sub_path_expr: Option, } @@ -1271,69 +1843,166 @@ pub struct MattermostPodExtensionsInitContainersVolumeMounts { /// A single application container that you want to run within a pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainers { - /// Arguments to the entrypoint. The container image's CMD is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + /// Arguments to the entrypoint. + /// The container image's CMD is used if this is not provided. + /// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + /// cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + /// produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + /// of whether the variable exists or not. Cannot be updated. + /// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell #[serde(default, skip_serializing_if = "Option::is_none")] pub args: Option>, - /// Entrypoint array. Not executed within a shell. The container image's ENTRYPOINT is used if this is not provided. Variable references $(VAR_NAME) are expanded using the container's environment. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Cannot be updated. More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell + /// Entrypoint array. Not executed within a shell. + /// The container image's ENTRYPOINT is used if this is not provided. + /// Variable references $(VAR_NAME) are expanded using the container's environment. If a variable + /// cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will + /// produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless + /// of whether the variable exists or not. Cannot be updated. + /// More info: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, - /// List of environment variables to set in the container. Cannot be updated. + /// List of environment variables to set in the container. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub env: Option>, - /// List of sources to populate environment variables in the container. The keys defined within a source must be a C_IDENTIFIER. All invalid keys will be reported as an event when the container is starting. When a key exists in multiple sources, the value associated with the last source will take precedence. Values defined by an Env with a duplicate key will take precedence. Cannot be updated. + /// List of sources to populate environment variables in the container. + /// The keys defined within a source must be a C_IDENTIFIER. All invalid keys + /// will be reported as an event when the container is starting. When a key exists in multiple + /// sources, the value associated with the last source will take precedence. + /// Values defined by an Env with a duplicate key will take precedence. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envFrom")] pub env_from: Option>, - /// Container image name. More info: https://kubernetes.io/docs/concepts/containers/images This field is optional to allow higher level config management to default or override container images in workload controllers like Deployments and StatefulSets. + /// Container image name. + /// More info: https://kubernetes.io/docs/concepts/containers/images + /// This field is optional to allow higher level config management to default or override + /// container images in workload controllers like Deployments and StatefulSets. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// Image pull policy. One of Always, Never, IfNotPresent. Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. Cannot be updated. More info: https://kubernetes.io/docs/concepts/containers/images#updating-images + /// Image pull policy. + /// One of Always, Never, IfNotPresent. + /// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/containers/images#updating-images #[serde(default, skip_serializing_if = "Option::is_none", rename = "imagePullPolicy")] pub image_pull_policy: Option, - /// Actions that the management system should take in response to container lifecycle events. Cannot be updated. + /// Actions that the management system should take in response to container lifecycle events. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub lifecycle: Option, - /// Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Periodic probe of container liveness. + /// Container will be restarted if the probe fails. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "livenessProbe")] pub liveness_probe: Option, - /// Name of the container specified as a DNS_LABEL. Each container in a pod must have a unique name (DNS_LABEL). Cannot be updated. + /// Name of the container specified as a DNS_LABEL. + /// Each container in a pod must have a unique name (DNS_LABEL). + /// Cannot be updated. pub name: String, - /// List of ports to expose from the container. Not specifying a port here DOES NOT prevent that port from being exposed. Any port which is listening on the default "0.0.0.0" address inside a container will be accessible from the network. Modifying this array with strategic merge patch may corrupt the data. For more information See https://github.com/kubernetes/kubernetes/issues/108255. Cannot be updated. + /// List of ports to expose from the container. Not specifying a port here + /// DOES NOT prevent that port from being exposed. Any port which is + /// listening on the default "0.0.0.0" address inside a container will be + /// accessible from the network. + /// Modifying this array with strategic merge patch may corrupt the data. + /// For more information See https://github.com/kubernetes/kubernetes/issues/108255. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none")] pub ports: Option>, - /// Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Periodic probe of container service readiness. + /// Container will be removed from service endpoints if the probe fails. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] pub readiness_probe: Option, - /// Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Resources resize policy for the container. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "resizePolicy")] + pub resize_policy: Option>, + /// Compute Resources required by this container. + /// Cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ + /// RestartPolicy defines the restart behavior of individual containers in a pod. + /// This field may only be set for init containers, and the only allowed value is "Always". + /// For non-init containers or when this field is not specified, + /// the restart behavior is defined by the Pod's restart policy and the container type. + /// Setting the RestartPolicy as "Always" for the init container will have the following effect: + /// this init container will be continually restarted on + /// exit until all regular containers have terminated. Once all regular + /// containers have completed, all init containers with restartPolicy "Always" + /// will be shut down. This lifecycle differs from normal init containers and + /// is often referred to as a "sidecar" container. Although this init + /// container still starts in the init container sequence, it does not wait + /// for the container to complete before proceeding to the next init + /// container. Instead, the next init container starts immediately after this + /// init container is started, or after any startupProbe has successfully + /// completed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "restartPolicy")] + pub restart_policy: Option, + /// SecurityContext defines the security options the container should be run with. + /// If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. + /// More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] pub security_context: Option, - /// StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// StartupProbe indicates that the Pod has successfully initialized. + /// If specified, no other probes are executed until this completes successfully. + /// If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. + /// This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, + /// when it might take a long time to load data or warm a cache, than during steady-state operation. + /// This cannot be updated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "startupProbe")] pub startup_probe: Option, - /// Whether this container should allocate a buffer for stdin in the container runtime. If this is not set, reads from stdin in the container will always result in EOF. Default is false. + /// Whether this container should allocate a buffer for stdin in the container runtime. If this + /// is not set, reads from stdin in the container will always result in EOF. + /// Default is false. #[serde(default, skip_serializing_if = "Option::is_none")] pub stdin: Option, - /// Whether the container runtime should close the stdin channel after it has been opened by a single attach. When stdin is true the stdin stream will remain open across multiple attach sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the first client attaches to stdin, and then remains open and accepts data until the client disconnects, at which time stdin is closed and remains closed until the container is restarted. If this flag is false, a container processes that reads from stdin will never receive an EOF. Default is false + /// Whether the container runtime should close the stdin channel after it has been opened by + /// a single attach. When stdin is true the stdin stream will remain open across multiple attach + /// sessions. If stdinOnce is set to true, stdin is opened on container start, is empty until the + /// first client attaches to stdin, and then remains open and accepts data until the client disconnects, + /// at which time stdin is closed and remains closed until the container is restarted. If this + /// flag is false, a container processes that reads from stdin will never receive an EOF. + /// Default is false #[serde(default, skip_serializing_if = "Option::is_none", rename = "stdinOnce")] pub stdin_once: Option, - /// Optional: Path at which the file to which the container's termination message will be written is mounted into the container's filesystem. Message written is intended to be brief final status, such as an assertion failure message. Will be truncated by the node if greater than 4096 bytes. The total message length across all containers will be limited to 12kb. Defaults to /dev/termination-log. Cannot be updated. + /// Optional: Path at which the file to which the container's termination message + /// will be written is mounted into the container's filesystem. + /// Message written is intended to be brief final status, such as an assertion failure message. + /// Will be truncated by the node if greater than 4096 bytes. The total message length across + /// all containers will be limited to 12kb. + /// Defaults to /dev/termination-log. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePath")] pub termination_message_path: Option, - /// Indicate how the termination message should be populated. File will use the contents of terminationMessagePath to populate the container status message on both success and failure. FallbackToLogsOnError will use the last chunk of container log output if the termination message file is empty and the container exited with an error. The log output is limited to 2048 bytes or 80 lines, whichever is smaller. Defaults to File. Cannot be updated. + /// Indicate how the termination message should be populated. File will use the contents of + /// terminationMessagePath to populate the container status message on both success and failure. + /// FallbackToLogsOnError will use the last chunk of container log output if the termination + /// message file is empty and the container exited with an error. + /// The log output is limited to 2048 bytes or 80 lines, whichever is smaller. + /// Defaults to File. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationMessagePolicy")] pub termination_message_policy: Option, - /// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. Default is false. + /// Whether this container should allocate a TTY for itself, also requires 'stdin' to be true. + /// Default is false. #[serde(default, skip_serializing_if = "Option::is_none")] pub tty: Option, /// volumeDevices is the list of block devices to be used by the container. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeDevices")] pub volume_devices: Option>, - /// Pod volumes to mount into the container's filesystem. Cannot be updated. + /// Pod volumes to mount into the container's filesystem. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMounts")] pub volume_mounts: Option>, - /// Container's working directory. If not specified, the container runtime's default will be used, which might be configured in the container image. Cannot be updated. + /// Container's working directory. + /// If not specified, the container runtime's default will be used, which + /// might be configured in the container image. + /// Cannot be updated. #[serde(default, skip_serializing_if = "Option::is_none", rename = "workingDir")] pub working_dir: Option, } @@ -1343,7 +2012,15 @@ pub struct MattermostPodExtensionsSidecarContainers { pub struct MattermostPodExtensionsSidecarContainersEnv { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -1357,10 +2034,12 @@ pub struct MattermostPodExtensionsSidecarContainersEnvValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -1373,7 +2052,11 @@ pub struct MattermostPodExtensionsSidecarContainersEnvValueFrom { pub struct MattermostPodExtensionsSidecarContainersEnvValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -1381,7 +2064,8 @@ pub struct MattermostPodExtensionsSidecarContainersEnvValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersEnvValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -1392,7 +2076,8 @@ pub struct MattermostPodExtensionsSidecarContainersEnvValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersEnvValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -1410,7 +2095,11 @@ pub struct MattermostPodExtensionsSidecarContainersEnvValueFromResourceFieldRef pub struct MattermostPodExtensionsSidecarContainersEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -1435,7 +2124,11 @@ pub struct MattermostPodExtensionsSidecarContainersEnvFrom { /// The ConfigMap to select from #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersEnvFromConfigMapRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap must be defined @@ -1446,7 +2139,11 @@ pub struct MattermostPodExtensionsSidecarContainersEnvFromConfigMapRef { /// The Secret to select from #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersEnvFromSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret must be defined @@ -1454,18 +2151,33 @@ pub struct MattermostPodExtensionsSidecarContainersEnvFromSecretRef { pub optional: Option, } -/// Actions that the management system should take in response to container lifecycle events. Cannot be updated. +/// Actions that the management system should take in response to container lifecycle events. +/// Cannot be updated. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecycle { - /// PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + /// PostStart is called immediately after a container is created. If the handler fails, + /// the container is terminated and restarted according to its restart policy. + /// Other management of the container blocks until the hook completes. + /// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[serde(default, skip_serializing_if = "Option::is_none", rename = "postStart")] pub post_start: Option, - /// PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks + /// PreStop is called immediately before a container is terminated due to an + /// API request or management event such as liveness/startup probe failure, + /// preemption, resource contention, etc. The handler is not called if the + /// container crashes or exits. The Pod's termination grace period countdown begins before the + /// PreStop hook is executed. Regardless of the outcome of the handler, the + /// container will eventually terminate within the Pod's termination grace + /// period (unless delayed by finalizers). Other management of the container blocks until the hook completes + /// or until the termination grace period is reached. + /// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[serde(default, skip_serializing_if = "Option::is_none", rename = "preStop")] pub pre_stop: Option, } -/// PostStart is called immediately after a container is created. If the handler fails, the container is terminated and restarted according to its restart policy. Other management of the container blocks until the hook completes. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks +/// PostStart is called immediately after a container is created. If the handler fails, +/// the container is terminated and restarted according to its restart policy. +/// Other management of the container blocks until the hook completes. +/// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStart { /// Exec specifies the action to take. @@ -1474,7 +2186,12 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStart { /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. + /// Sleep represents the duration that the container should sleep before being terminated. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, + /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept + /// for the backward compatibility. There are no validation of this field and + /// lifecycle hooks will fail in runtime when tcp handler is specified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -1482,7 +2199,11 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStart { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } @@ -1490,7 +2211,8 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartExec { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1499,9 +2221,12 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1509,23 +2234,43 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, } -/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. +/// Sleep represents the duration that the container should sleep before being terminated. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartSleep { + /// Seconds is the number of seconds to sleep. + pub seconds: i64, +} + +/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept +/// for the backward compatibility. There are no validation of this field and +/// lifecycle hooks will fail in runtime when tcp handler is specified. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePostStartTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// PreStop is called immediately before a container is terminated due to an API request or management event such as liveness/startup probe failure, preemption, resource contention, etc. The handler is not called if the container crashes or exits. The Pod's termination grace period countdown begins before the PreStop hook is executed. Regardless of the outcome of the handler, the container will eventually terminate within the Pod's termination grace period (unless delayed by finalizers). Other management of the container blocks until the hook completes or until the termination grace period is reached. More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks +/// PreStop is called immediately before a container is terminated due to an +/// API request or management event such as liveness/startup probe failure, +/// preemption, resource contention, etc. The handler is not called if the +/// container crashes or exits. The Pod's termination grace period countdown begins before the +/// PreStop hook is executed. Regardless of the outcome of the handler, the +/// container will eventually terminate within the Pod's termination grace +/// period (unless delayed by finalizers). Other management of the container blocks until the hook completes +/// or until the termination grace period is reached. +/// More info: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStop { /// Exec specifies the action to take. @@ -1534,7 +2279,12 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStop { /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. + /// Sleep represents the duration that the container should sleep before being terminated. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub sleep: Option, + /// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept + /// for the backward compatibility. There are no validation of this field and + /// lifecycle hooks will fail in runtime when tcp handler is specified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, } @@ -1542,7 +2292,11 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStop { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } @@ -1550,7 +2304,8 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopExec { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1559,9 +2314,12 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1569,53 +2327,83 @@ pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, } -/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept for the backward compatibility. There are no validation of this field and lifecycle hooks will fail in runtime when tcp handler is specified. +/// Sleep represents the duration that the container should sleep before being terminated. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopSleep { + /// Seconds is the number of seconds to sleep. + pub seconds: i64, +} + +/// Deprecated. TCPSocket is NOT supported as a LifecycleHandler and kept +/// for the backward compatibility. There are no validation of this field and +/// lifecycle hooks will fail in runtime when tcp handler is specified. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLifecyclePreStopTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// Periodic probe of container liveness. Container will be restarted if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// Periodic probe of container liveness. +/// Container will be restarted if the probe fails. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLivenessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -1623,18 +2411,24 @@ pub struct MattermostPodExtensionsSidecarContainersLivenessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLivenessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLivenessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -1642,7 +2436,8 @@ pub struct MattermostPodExtensionsSidecarContainersLivenessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLivenessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1651,9 +2446,12 @@ pub struct MattermostPodExtensionsSidecarContainersLivenessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1661,7 +2459,8 @@ pub struct MattermostPodExtensionsSidecarContainersLivenessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersLivenessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -1673,61 +2472,88 @@ pub struct MattermostPodExtensionsSidecarContainersLivenessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } /// ContainerPort represents a network port in a single container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersPorts { - /// Number of port to expose on the pod's IP address. This must be a valid port number, 0 < x < 65536. + /// Number of port to expose on the pod's IP address. + /// This must be a valid port number, 0 < x < 65536. #[serde(rename = "containerPort")] pub container_port: i32, /// What host IP to bind the external port to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostIP")] pub host_ip: Option, - /// Number of port to expose on the host. If specified, this must be a valid port number, 0 < x < 65536. If HostNetwork is specified, this must match ContainerPort. Most containers do not need this. + /// Number of port to expose on the host. + /// If specified, this must be a valid port number, 0 < x < 65536. + /// If HostNetwork is specified, this must match ContainerPort. + /// Most containers do not need this. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPort")] pub host_port: Option, - /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each named port in a pod must have a unique name. Name for the port that can be referred to by services. + /// If specified, this must be an IANA_SVC_NAME and unique within the pod. Each + /// named port in a pod must have a unique name. Name for the port that can be + /// referred to by services. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Protocol for port. Must be UDP, TCP, or SCTP. Defaults to "TCP". + /// Protocol for port. Must be UDP, TCP, or SCTP. + /// Defaults to "TCP". #[serde(default, skip_serializing_if = "Option::is_none")] pub protocol: Option, } -/// Periodic probe of container service readiness. Container will be removed from service endpoints if the probe fails. Cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// Periodic probe of container service readiness. +/// Container will be removed from service endpoints if the probe fails. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersReadinessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -1735,18 +2561,24 @@ pub struct MattermostPodExtensionsSidecarContainersReadinessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersReadinessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersReadinessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -1754,7 +2586,8 @@ pub struct MattermostPodExtensionsSidecarContainersReadinessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersReadinessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1763,9 +2596,12 @@ pub struct MattermostPodExtensionsSidecarContainersReadinessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1773,7 +2609,8 @@ pub struct MattermostPodExtensionsSidecarContainersReadinessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersReadinessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -1785,22 +2622,47 @@ pub struct MattermostPodExtensionsSidecarContainersReadinessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ +/// ContainerResizePolicy represents resource resize policy for the container. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsSidecarContainersResizePolicy { + /// Name of the resource to which this resource resize policy applies. + /// Supported values: cpu, memory. + #[serde(rename = "resourceName")] + pub resource_name: String, + /// Restart policy to apply when specified resource is resized. + /// If not specified, it defaults to NotRequired. + #[serde(rename = "restartPolicy")] + pub restart_policy: String, +} + +/// Compute Resources required by this container. +/// Cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -1808,49 +2670,125 @@ pub struct MattermostPodExtensionsSidecarContainersResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } -/// SecurityContext defines the security options the container should be run with. If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ +/// SecurityContext defines the security options the container should be run with. +/// If set, the fields of SecurityContext override the equivalent fields of PodSecurityContext. +/// More info: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersSecurityContext { - /// AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. + /// AllowPrivilegeEscalation controls whether a process can gain more + /// privileges than its parent process. This bool directly controls if + /// the no_new_privs flag will be set on the container process. + /// AllowPrivilegeEscalation is true always when the container is: + /// 1) run as Privileged + /// 2) has CAP_SYS_ADMIN + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, - /// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, + /// The capabilities to add/drop when running containers. + /// Defaults to the default set of capabilities granted by the container runtime. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub capabilities: Option, - /// Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. + /// Run container in privileged mode. + /// Processes in privileged containers are essentially equivalent to root on the host. + /// Defaults to false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, - /// procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. + /// procMount denotes the type of proc mount to use for the containers. + /// The default value is Default which uses the container runtime defaults for + /// readonly paths and masked paths. + /// This requires the ProcMountType feature flag to be enabled. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] pub proc_mount: Option, - /// Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. + /// Whether this container has a read-only root filesystem. + /// Default is false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] pub read_only_root_filesystem: Option, - /// The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The GID to run the entrypoint of the container process. + /// Uses runtime default if unset. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] pub run_as_group: Option, - /// Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Indicates that the container must run as a non-root user. + /// If true, the Kubelet will validate the image at runtime to ensure that it + /// does not run as UID 0 (root) and fail to start the container if it does. + /// If unset or false, no such validation will be performed. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] pub run_as_non_root: Option, - /// The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The UID to run the entrypoint of the container process. + /// Defaults to user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] pub run_as_user: Option, - /// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The SELinux context to be applied to the container. + /// If unspecified, the container runtime will allocate a random SELinux context for each + /// container. May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] pub se_linux_options: Option, - /// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. + /// The seccomp options to use by this container. If seccomp options are + /// provided at both the pod & container level, the container options + /// override the pod options. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] pub seccomp_profile: Option, - /// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + /// The Windows specific settings applied to all containers. + /// If unspecified, the options from the PodSecurityContext will be used. + /// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is linux. #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] pub windows_options: Option, } -/// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodExtensionsSidecarContainersSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + +/// The capabilities to add/drop when running containers. +/// Defaults to the default set of capabilities granted by the container runtime. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersSecurityContextCapabilities { /// Added capabilities @@ -1861,7 +2799,11 @@ pub struct MattermostPodExtensionsSidecarContainersSecurityContextCapabilities { pub drop: Option>, } -/// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. +/// The SELinux context to be applied to the container. +/// If unspecified, the container runtime will allocate a random SELinux context for each +/// container. May also be set in PodSecurityContext. If set in both SecurityContext and +/// PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersSecurityContextSeLinuxOptions { /// Level is SELinux level label that applies to the container. @@ -1878,66 +2820,108 @@ pub struct MattermostPodExtensionsSidecarContainersSecurityContextSeLinuxOptions pub user: Option, } -/// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. +/// The seccomp options to use by this container. If seccomp options are +/// provided at both the pod & container level, the container options +/// override the pod options. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersSecurityContextSeccompProfile { - /// localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". + /// localhostProfile indicates a profile defined in a file on the node should be used. + /// The profile must be preconfigured on the node to work. + /// Must be a descending path, relative to the kubelet's configured seccomp profile location. + /// Must be set if type is "Localhost". Must NOT be set for any other type. #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] pub localhost_profile: Option, - /// type indicates which kind of seccomp profile will be applied. Valid options are: - /// Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. + /// type indicates which kind of seccomp profile will be applied. + /// Valid options are: + /// + /// Localhost - a profile defined in a file on the node should be used. + /// RuntimeDefault - the container runtime default profile should be used. + /// Unconfined - no profile should be applied. #[serde(rename = "type")] pub r#type: String, } -/// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. +/// The Windows specific settings applied to all containers. +/// If unspecified, the options from the PodSecurityContext will be used. +/// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is linux. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersSecurityContextWindowsOptions { - /// GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + /// GMSACredentialSpec is where the GMSA admission webhook + /// (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the + /// GMSA credential spec named by the GMSACredentialSpecName field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] pub gmsa_credential_spec: Option, /// GMSACredentialSpecName is the name of the GMSA credential spec to use. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] pub gmsa_credential_spec_name: Option, - /// HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + /// HostProcess determines if a container should be run as a 'Host Process' container. + /// All of a Pod's containers must have the same effective HostProcess value + /// (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). + /// In addition, if HostProcess is true then HostNetwork must also be set to true. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] pub host_process: Option, - /// The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// The UserName in Windows to run the entrypoint of the container process. + /// Defaults to the user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] pub run_as_user_name: Option, } -/// StartupProbe indicates that the Pod has successfully initialized. If specified, no other probes are executed until this completes successfully. If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, when it might take a long time to load data or warm a cache, than during steady-state operation. This cannot be updated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes +/// StartupProbe indicates that the Pod has successfully initialized. +/// If specified, no other probes are executed until this completes successfully. +/// If this probe fails, the Pod will be restarted, just as if the livenessProbe failed. +/// This can be used to provide different probe parameters at the beginning of a Pod's lifecycle, +/// when it might take a long time to load data or warm a cache, than during steady-state operation. +/// This cannot be updated. +/// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersStartupProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -1945,18 +2929,24 @@ pub struct MattermostPodExtensionsSidecarContainersStartupProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersStartupProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersStartupProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -1964,7 +2954,8 @@ pub struct MattermostPodExtensionsSidecarContainersStartupProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersStartupProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -1973,9 +2964,12 @@ pub struct MattermostPodExtensionsSidecarContainersStartupProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -1983,7 +2977,8 @@ pub struct MattermostPodExtensionsSidecarContainersStartupProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersStartupProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -1995,7 +2990,9 @@ pub struct MattermostPodExtensionsSidecarContainersStartupProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } @@ -2012,21 +3009,50 @@ pub struct MattermostPodExtensionsSidecarContainersVolumeDevices { /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodExtensionsSidecarContainersVolumeMounts { - /// Path within the container at which the volume should be mounted. Must not contain ':'. + /// Path within the container at which the volume should be mounted. Must + /// not contain ':'. #[serde(rename = "mountPath")] pub mount_path: String, - /// mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + /// mountPropagation determines how mounts are propagated from the host + /// to container and the other way around. + /// When not set, MountPropagationNone is used. + /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. pub name: String, - /// Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + /// Mounted read-only if true, read-write otherwise (false or unspecified). + /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, + /// Path within the volume from which the container's volume should be mounted. + /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] pub sub_path: Option, - /// Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + /// Expanded path within the volume from which the container's volume should be mounted. + /// Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. + /// Defaults to "" (volume's root). + /// SubPathExpr and SubPath are mutually exclusive. #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] pub sub_path_expr: Option, } @@ -2037,10 +3063,12 @@ pub struct MattermostPodTemplate { /// Defines the security context for the Mattermost app server container. #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerSecurityContext")] pub container_security_context: Option, - /// Defines annotations to add to the Mattermost app server pods. Overrides of default prometheus annotations are ignored. + /// Defines annotations to add to the Mattermost app server pods. + /// Overrides of default prometheus annotations are ignored. #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraAnnotations")] pub extra_annotations: Option>, - /// Defines labels to add to the Mattermost app server pods. Overrides what is set in ResourceLabels, does not override default labels (app and cluster labels). + /// Defines labels to add to the Mattermost app server pods. + /// Overrides what is set in ResourceLabels, does not override default labels (app and cluster labels). #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraLabels")] pub extra_labels: Option>, /// Defines the security context for the Mattermost app server pods. @@ -2051,42 +3079,109 @@ pub struct MattermostPodTemplate { /// Defines the security context for the Mattermost app server container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateContainerSecurityContext { - /// AllowPrivilegeEscalation controls whether a process can gain more privileges than its parent process. This bool directly controls if the no_new_privs flag will be set on the container process. AllowPrivilegeEscalation is true always when the container is: 1) run as Privileged 2) has CAP_SYS_ADMIN Note that this field cannot be set when spec.os.name is windows. + /// AllowPrivilegeEscalation controls whether a process can gain more + /// privileges than its parent process. This bool directly controls if + /// the no_new_privs flag will be set on the container process. + /// AllowPrivilegeEscalation is true always when the container is: + /// 1) run as Privileged + /// 2) has CAP_SYS_ADMIN + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, - /// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, + /// The capabilities to add/drop when running containers. + /// Defaults to the default set of capabilities granted by the container runtime. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub capabilities: Option, - /// Run container in privileged mode. Processes in privileged containers are essentially equivalent to root on the host. Defaults to false. Note that this field cannot be set when spec.os.name is windows. + /// Run container in privileged mode. + /// Processes in privileged containers are essentially equivalent to root on the host. + /// Defaults to false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, - /// procMount denotes the type of proc mount to use for the containers. The default is DefaultProcMount which uses the container runtime defaults for readonly paths and masked paths. This requires the ProcMountType feature flag to be enabled. Note that this field cannot be set when spec.os.name is windows. + /// procMount denotes the type of proc mount to use for the containers. + /// The default value is Default which uses the container runtime defaults for + /// readonly paths and masked paths. + /// This requires the ProcMountType feature flag to be enabled. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "procMount")] pub proc_mount: Option, - /// Whether this container has a read-only root filesystem. Default is false. Note that this field cannot be set when spec.os.name is windows. + /// Whether this container has a read-only root filesystem. + /// Default is false. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnlyRootFilesystem")] pub read_only_root_filesystem: Option, - /// The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The GID to run the entrypoint of the container process. + /// Uses runtime default if unset. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] pub run_as_group: Option, - /// Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Indicates that the container must run as a non-root user. + /// If true, the Kubelet will validate the image at runtime to ensure that it + /// does not run as UID 0 (root) and fail to start the container if it does. + /// If unset or false, no such validation will be performed. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] pub run_as_non_root: Option, - /// The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The UID to run the entrypoint of the container process. + /// Defaults to user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] pub run_as_user: Option, - /// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. + /// The SELinux context to be applied to the container. + /// If unspecified, the container runtime will allocate a random SELinux context for each + /// container. May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] pub se_linux_options: Option, - /// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. + /// The seccomp options to use by this container. If seccomp options are + /// provided at both the pod & container level, the container options + /// override the pod options. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] pub seccomp_profile: Option, - /// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + /// The Windows specific settings applied to all containers. + /// If unspecified, the options from the PodSecurityContext will be used. + /// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is linux. #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] pub windows_options: Option, } -/// The capabilities to add/drop when running containers. Defaults to the default set of capabilities granted by the container runtime. Note that this field cannot be set when spec.os.name is windows. +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodTemplateContainerSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + +/// The capabilities to add/drop when running containers. +/// Defaults to the default set of capabilities granted by the container runtime. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateContainerSecurityContextCapabilities { /// Added capabilities @@ -2097,7 +3192,11 @@ pub struct MattermostPodTemplateContainerSecurityContextCapabilities { pub drop: Option>, } -/// The SELinux context to be applied to the container. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is windows. +/// The SELinux context to be applied to the container. +/// If unspecified, the container runtime will allocate a random SELinux context for each +/// container. May also be set in PodSecurityContext. If set in both SecurityContext and +/// PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateContainerSecurityContextSeLinuxOptions { /// Level is SELinux level label that applies to the container. @@ -2114,31 +3213,52 @@ pub struct MattermostPodTemplateContainerSecurityContextSeLinuxOptions { pub user: Option, } -/// The seccomp options to use by this container. If seccomp options are provided at both the pod & container level, the container options override the pod options. Note that this field cannot be set when spec.os.name is windows. +/// The seccomp options to use by this container. If seccomp options are +/// provided at both the pod & container level, the container options +/// override the pod options. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateContainerSecurityContextSeccompProfile { - /// localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". + /// localhostProfile indicates a profile defined in a file on the node should be used. + /// The profile must be preconfigured on the node to work. + /// Must be a descending path, relative to the kubelet's configured seccomp profile location. + /// Must be set if type is "Localhost". Must NOT be set for any other type. #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] pub localhost_profile: Option, - /// type indicates which kind of seccomp profile will be applied. Valid options are: - /// Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. + /// type indicates which kind of seccomp profile will be applied. + /// Valid options are: + /// + /// Localhost - a profile defined in a file on the node should be used. + /// RuntimeDefault - the container runtime default profile should be used. + /// Unconfined - no profile should be applied. #[serde(rename = "type")] pub r#type: String, } -/// The Windows specific settings applied to all containers. If unspecified, the options from the PodSecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. +/// The Windows specific settings applied to all containers. +/// If unspecified, the options from the PodSecurityContext will be used. +/// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is linux. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateContainerSecurityContextWindowsOptions { - /// GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + /// GMSACredentialSpec is where the GMSA admission webhook + /// (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the + /// GMSA credential spec named by the GMSACredentialSpecName field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] pub gmsa_credential_spec: Option, /// GMSACredentialSpecName is the name of the GMSA credential spec to use. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] pub gmsa_credential_spec_name: Option, - /// HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + /// HostProcess determines if a container should be run as a 'Host Process' container. + /// All of a Pod's containers must have the same effective HostProcess value + /// (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). + /// In addition, if HostProcess is true then HostNetwork must also be set to true. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] pub host_process: Option, - /// The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// The UserName in Windows to run the entrypoint of the container process. + /// Defaults to the user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] pub run_as_user_name: Option, } @@ -2146,41 +3266,123 @@ pub struct MattermostPodTemplateContainerSecurityContextWindowsOptions { /// Defines the security context for the Mattermost app server pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateSecurityContext { - /// A special supplemental group that applies to all containers in a pod. Some volume types allow the Kubelet to change the ownership of that volume to be owned by the pod: - /// 1. The owning GID will be the FSGroup 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) 3. The permission bits are OR'd with rw-rw---- - /// If unset, the Kubelet will not modify the ownership and permissions of any volume. Note that this field cannot be set when spec.os.name is windows. + /// appArmorProfile is the AppArmor options to use by the containers in this pod. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, + /// A special supplemental group that applies to all containers in a pod. + /// Some volume types allow the Kubelet to change the ownership of that volume + /// to be owned by the pod: + /// + /// 1. The owning GID will be the FSGroup + /// 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) + /// 3. The permission bits are OR'd with rw-rw---- + /// + /// If unset, the Kubelet will not modify the ownership and permissions of any volume. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] pub fs_group: Option, - /// fsGroupChangePolicy defines behavior of changing ownership and permission of the volume before being exposed inside Pod. This field will only apply to volume types which support fsGroup based ownership(and permissions). It will have no effect on ephemeral volume types such as: secret, configmaps and emptydir. Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. Note that this field cannot be set when spec.os.name is windows. + /// fsGroupChangePolicy defines behavior of changing ownership and permission of the volume + /// before being exposed inside Pod. This field will only apply to + /// volume types which support fsGroup based ownership(and permissions). + /// It will have no effect on ephemeral volume types such as: secret, configmaps + /// and emptydir. + /// Valid values are "OnRootMismatch" and "Always". If not specified, "Always" is used. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroupChangePolicy")] pub fs_group_change_policy: Option, - /// The GID to run the entrypoint of the container process. Uses runtime default if unset. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + /// The GID to run the entrypoint of the container process. + /// Uses runtime default if unset. + /// May also be set in SecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence + /// for that container. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsGroup")] pub run_as_group: Option, - /// Indicates that the container must run as a non-root user. If true, the Kubelet will validate the image at runtime to ensure that it does not run as UID 0 (root) and fail to start the container if it does. If unset or false, no such validation will be performed. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Indicates that the container must run as a non-root user. + /// If true, the Kubelet will validate the image at runtime to ensure that it + /// does not run as UID 0 (root) and fail to start the container if it does. + /// If unset or false, no such validation will be performed. + /// May also be set in SecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsNonRoot")] pub run_as_non_root: Option, - /// The UID to run the entrypoint of the container process. Defaults to user specified in image metadata if unspecified. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + /// The UID to run the entrypoint of the container process. + /// Defaults to user specified in image metadata if unspecified. + /// May also be set in SecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence + /// for that container. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUser")] pub run_as_user: Option, - /// The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. + /// The SELinux context to be applied to all containers. + /// If unspecified, the container runtime will allocate a random SELinux context for each + /// container. May also be set in SecurityContext. If set in + /// both SecurityContext and PodSecurityContext, the value specified in SecurityContext + /// takes precedence for that container. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seLinuxOptions")] pub se_linux_options: Option, - /// The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. + /// The seccomp options to use by the containers in this pod. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] pub seccomp_profile: Option, - /// A list of groups applied to the first process run in each container, in addition to the container's primary GID, the fsGroup (if specified), and group memberships defined in the container image for the uid of the container process. If unspecified, no additional groups are added to any container. Note that group memberships defined in the container image for the uid of the container process are still effective, even if they are not included in this list. Note that this field cannot be set when spec.os.name is windows. + /// A list of groups applied to the first process run in each container, in + /// addition to the container's primary GID and fsGroup (if specified). If + /// the SupplementalGroupsPolicy feature is enabled, the + /// supplementalGroupsPolicy field determines whether these are in addition + /// to or instead of any group memberships defined in the container image. + /// If unspecified, no additional groups are added, though group memberships + /// defined in the container image may still be used, depending on the + /// supplementalGroupsPolicy field. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] pub supplemental_groups: Option>, - /// Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported sysctls (by the container runtime) might fail to launch. Note that this field cannot be set when spec.os.name is windows. + /// Defines how supplemental groups of the first container processes are calculated. + /// Valid values are "Merge" and "Strict". If not specified, "Merge" is used. + /// (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled + /// and the container runtime must implement support for this feature. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroupsPolicy")] + pub supplemental_groups_policy: Option, + /// Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported + /// sysctls (by the container runtime) might fail to launch. + /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none")] pub sysctls: Option>, - /// The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. + /// The Windows specific settings applied to all containers. + /// If unspecified, the options within a container's SecurityContext will be used. + /// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// Note that this field cannot be set when spec.os.name is linux. #[serde(default, skip_serializing_if = "Option::is_none", rename = "windowsOptions")] pub windows_options: Option, } -/// The SELinux context to be applied to all containers. If unspecified, the container runtime will allocate a random SELinux context for each container. May also be set in SecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence for that container. Note that this field cannot be set when spec.os.name is windows. +/// appArmorProfile is the AppArmor options to use by the containers in this pod. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostPodTemplateSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + +/// The SELinux context to be applied to all containers. +/// If unspecified, the container runtime will allocate a random SELinux context for each +/// container. May also be set in SecurityContext. If set in +/// both SecurityContext and PodSecurityContext, the value specified in SecurityContext +/// takes precedence for that container. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateSecurityContextSeLinuxOptions { /// Level is SELinux level label that applies to the container. @@ -2197,14 +3399,22 @@ pub struct MattermostPodTemplateSecurityContextSeLinuxOptions { pub user: Option, } -/// The seccomp options to use by the containers in this pod. Note that this field cannot be set when spec.os.name is windows. +/// The seccomp options to use by the containers in this pod. +/// Note that this field cannot be set when spec.os.name is windows. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateSecurityContextSeccompProfile { - /// localhostProfile indicates a profile defined in a file on the node should be used. The profile must be preconfigured on the node to work. Must be a descending path, relative to the kubelet's configured seccomp profile location. Must only be set if type is "Localhost". + /// localhostProfile indicates a profile defined in a file on the node should be used. + /// The profile must be preconfigured on the node to work. + /// Must be a descending path, relative to the kubelet's configured seccomp profile location. + /// Must be set if type is "Localhost". Must NOT be set for any other type. #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] pub localhost_profile: Option, - /// type indicates which kind of seccomp profile will be applied. Valid options are: - /// Localhost - a profile defined in a file on the node should be used. RuntimeDefault - the container runtime default profile should be used. Unconfined - no profile should be applied. + /// type indicates which kind of seccomp profile will be applied. + /// Valid options are: + /// + /// Localhost - a profile defined in a file on the node should be used. + /// RuntimeDefault - the container runtime default profile should be used. + /// Unconfined - no profile should be applied. #[serde(rename = "type")] pub r#type: String, } @@ -2218,24 +3428,36 @@ pub struct MattermostPodTemplateSecurityContextSysctls { pub value: String, } -/// The Windows specific settings applied to all containers. If unspecified, the options within a container's SecurityContext will be used. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. Note that this field cannot be set when spec.os.name is linux. +/// The Windows specific settings applied to all containers. +/// If unspecified, the options within a container's SecurityContext will be used. +/// If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. +/// Note that this field cannot be set when spec.os.name is linux. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostPodTemplateSecurityContextWindowsOptions { - /// GMSACredentialSpec is where the GMSA admission webhook (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the GMSA credential spec named by the GMSACredentialSpecName field. + /// GMSACredentialSpec is where the GMSA admission webhook + /// (https://github.com/kubernetes-sigs/windows-gmsa) inlines the contents of the + /// GMSA credential spec named by the GMSACredentialSpecName field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpec")] pub gmsa_credential_spec: Option, /// GMSACredentialSpecName is the name of the GMSA credential spec to use. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gmsaCredentialSpecName")] pub gmsa_credential_spec_name: Option, - /// HostProcess determines if a container should be run as a 'Host Process' container. This field is alpha-level and will only be honored by components that enable the WindowsHostProcessContainers feature flag. Setting this field without the feature flag will result in errors when validating the Pod. All of a Pod's containers must have the same effective HostProcess value (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). In addition, if HostProcess is true then HostNetwork must also be set to true. + /// HostProcess determines if a container should be run as a 'Host Process' container. + /// All of a Pod's containers must have the same effective HostProcess value + /// (it is not allowed to have a mix of HostProcess containers and non-HostProcess containers). + /// In addition, if HostProcess is true then HostNetwork must also be set to true. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostProcess")] pub host_process: Option, - /// The UserName in Windows to run the entrypoint of the container process. Defaults to the user specified in image metadata if unspecified. May also be set in PodSecurityContext. If set in both SecurityContext and PodSecurityContext, the value specified in SecurityContext takes precedence. + /// The UserName in Windows to run the entrypoint of the container process. + /// Defaults to the user specified in image metadata if unspecified. + /// May also be set in PodSecurityContext. If set in both SecurityContext and + /// PodSecurityContext, the value specified in SecurityContext takes precedence. #[serde(default, skip_serializing_if = "Option::is_none", rename = "runAsUserName")] pub run_as_user_name: Option, } -/// Probes defines configuration of liveness and readiness probe for Mattermost pods. These settings generally don't need to be changed. +/// Probes defines configuration of liveness and readiness probe for Mattermost pods. +/// These settings generally don't need to be changed. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbes { /// Defines the probe to check if the application is up and running. @@ -2252,31 +3474,46 @@ pub struct MattermostProbesLivenessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -2284,18 +3521,24 @@ pub struct MattermostProbesLivenessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesLivenessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesLivenessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -2303,7 +3546,8 @@ pub struct MattermostProbesLivenessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesLivenessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -2312,9 +3556,12 @@ pub struct MattermostProbesLivenessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -2322,7 +3569,8 @@ pub struct MattermostProbesLivenessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesLivenessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -2334,7 +3582,9 @@ pub struct MattermostProbesLivenessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } @@ -2344,31 +3594,46 @@ pub struct MattermostProbesReadinessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -2376,18 +3641,24 @@ pub struct MattermostProbesReadinessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesReadinessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesReadinessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -2395,7 +3666,8 @@ pub struct MattermostProbesReadinessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesReadinessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -2404,9 +3676,12 @@ pub struct MattermostProbesReadinessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -2414,7 +3689,8 @@ pub struct MattermostProbesReadinessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostProbesReadinessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -2426,13 +3702,18 @@ pub struct MattermostProbesReadinessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } -/// ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator. -/// WARNING: ResourcePatch is highly experimental and subject to change. Some patches may be impossible to perform or may impact the stability of Mattermost server. -/// Use at your own risk when no other options are available. +/// ResourcePatch specifies JSON patches that can be applied to resources created by Mattermost Operator. +/// +/// WARNING: ResourcePatch is highly experimental and subject to change. +/// Some patches may be impossible to perform or may impact the stability of Mattermost server. +/// +/// Use at your own risk when no other options are available. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostResourcePatch { #[serde(default, skip_serializing_if = "Option::is_none")] @@ -2457,19 +3738,23 @@ pub struct MattermostResourcePatchService { pub patch: Option, } -/// Scheduling defines the configuration related to scheduling of the Mattermost pods as well as resource constraints. These settings generally don't need to be changed. +/// Scheduling defines the configuration related to scheduling of the Mattermost pods +/// as well as resource constraints. These settings generally don't need to be changed. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostScheduling { /// If specified, affinity will define the pod's scheduling constraints #[serde(default, skip_serializing_if = "Option::is_none")] pub affinity: Option, - /// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + /// NodeSelector is a selector which must be true for the pod to fit on a node. + /// Selector which must match a node's labels for the pod to be scheduled on that node. + /// More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] pub node_selector: Option>, /// Defines the resource requests and limits for the Mattermost app server pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// Defines tolerations for the Mattermost app server pods More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ + /// Defines tolerations for the Mattermost app server pods + /// More info: https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/ #[serde(default, skip_serializing_if = "Option::is_none")] pub tolerations: Option>, } @@ -2491,15 +3776,28 @@ pub struct MattermostSchedulingAffinity { /// Describes node affinity scheduling rules for the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node matches the corresponding matchExpressions; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to an update), the system + /// may or may not try to eventually evict the pod from its node. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option, } -/// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +/// An empty preferred scheduling term matches all objects with implicit weight 0 +/// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { /// A node selector term, associated with the corresponding weight. @@ -2519,31 +3817,47 @@ pub struct MattermostSchedulingAffinityNodeAffinityPreferredDuringSchedulingIgno pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. +/// If the affinity requirements specified by this field are not met at +/// scheduling time, the pod will not be scheduled onto the node. +/// If the affinity requirements specified by this field cease to be met +/// at some point during pod execution (e.g. due to an update), the system +/// may or may not try to eventually evict the pod from its node. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// Required. A list of node selector terms. The terms are ORed. @@ -2551,7 +3865,9 @@ pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnor pub node_selector_terms: Vec, } -/// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +/// A null or empty node selector term matches no objects. The requirements of +/// them are ANDed. +/// The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { /// A list of node selector requirements by node's labels. @@ -2562,26 +3878,38 @@ pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnor pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -2589,10 +3917,24 @@ pub struct MattermostSchedulingAffinityNodeAffinityRequiredDuringSchedulingIgnor /// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -2603,7 +3945,8 @@ pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnor /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } @@ -2611,124 +3954,235 @@ pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnor #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -2736,10 +4190,24 @@ pub struct MattermostSchedulingAffinityPodAffinityRequiredDuringSchedulingIgnore /// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the anti-affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling anti-affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the anti-affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the anti-affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -2750,7 +4218,8 @@ pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingI /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } @@ -2758,124 +4227,235 @@ pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingI #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -2883,15 +4463,23 @@ pub struct MattermostSchedulingAffinityPodAntiAffinityRequiredDuringSchedulingIg /// Defines the resource requests and limits for the Mattermost app server pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -2899,26 +4487,43 @@ pub struct MattermostSchedulingResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } -/// The pod this Toleration is attached to tolerates any taint that matches the triple using the matching operator . +/// The pod this Toleration is attached to tolerates any taint that matches +/// the triple using the matching operator . #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostSchedulingTolerations { - /// Effect indicates the taint effect to match. Empty means match all taint effects. When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. + /// Effect indicates the taint effect to match. Empty means match all taint effects. + /// When specified, allowed values are NoSchedule, PreferNoSchedule and NoExecute. #[serde(default, skip_serializing_if = "Option::is_none")] pub effect: Option, - /// Key is the taint key that the toleration applies to. Empty means match all taint keys. If the key is empty, operator must be Exists; this combination means to match all values and all keys. + /// Key is the taint key that the toleration applies to. Empty means match all taint keys. + /// If the key is empty, operator must be Exists; this combination means to match all values and all keys. #[serde(default, skip_serializing_if = "Option::is_none")] pub key: Option, - /// Operator represents a key's relationship to the value. Valid operators are Exists and Equal. Defaults to Equal. Exists is equivalent to wildcard for value, so that a pod can tolerate all taints of a particular category. + /// Operator represents a key's relationship to the value. + /// Valid operators are Exists and Equal. Defaults to Equal. + /// Exists is equivalent to wildcard for value, so that a pod can + /// tolerate all taints of a particular category. #[serde(default, skip_serializing_if = "Option::is_none")] pub operator: Option, - /// TolerationSeconds represents the period of time the toleration (which must be of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, it is not set, which means tolerate the taint forever (do not evict). Zero and negative values will be treated as 0 (evict immediately) by the system. + /// TolerationSeconds represents the period of time the toleration (which must be + /// of effect NoExecute, otherwise this field is ignored) tolerates the taint. By default, + /// it is not set, which means tolerate the taint forever (do not evict). Zero and + /// negative values will be treated as 0 (evict immediately) by the system. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tolerationSeconds")] pub toleration_seconds: Option, - /// Value is the taint value the toleration matches to. If the operator is Exists, the value should be empty, otherwise just a regular string. + /// Value is the taint value the toleration matches to. + /// If the operator is Exists, the value should be empty, otherwise just a regular string. #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, } @@ -2932,7 +4537,8 @@ pub struct MattermostUpdateJob { /// Defines annotations to add to the update job pod. #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraAnnotations")] pub extra_annotations: Option>, - /// Defines labels to add to the update job pod. Overrides what is set in ResourceLabels, does not override default label (app label). + /// Defines labels to add to the update job pod. + /// Overrides what is set in ResourceLabels, does not override default label (app label). #[serde(default, skip_serializing_if = "Option::is_none", rename = "extraLabels")] pub extra_labels: Option>, } @@ -2940,21 +4546,50 @@ pub struct MattermostUpdateJob { /// VolumeMount describes a mounting of a Volume within a container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumeMounts { - /// Path within the container at which the volume should be mounted. Must not contain ':'. + /// Path within the container at which the volume should be mounted. Must + /// not contain ':'. #[serde(rename = "mountPath")] pub mount_path: String, - /// mountPropagation determines how mounts are propagated from the host to container and the other way around. When not set, MountPropagationNone is used. This field is beta in 1.10. + /// mountPropagation determines how mounts are propagated from the host + /// to container and the other way around. + /// When not set, MountPropagationNone is used. + /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. pub name: String, - /// Mounted read-only if true, read-write otherwise (false or unspecified). Defaults to false. + /// Mounted read-only if true, read-write otherwise (false or unspecified). + /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// Path within the volume from which the container's volume should be mounted. Defaults to "" (volume's root). + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, + /// Path within the volume from which the container's volume should be mounted. + /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] pub sub_path: Option, - /// Expanded path within the volume from which the container's volume should be mounted. Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. Defaults to "" (volume's root). SubPathExpr and SubPath are mutually exclusive. + /// Expanded path within the volume from which the container's volume should be mounted. + /// Behaves similarly to SubPath but environment variable references $(VAR_NAME) are expanded using the container's environment. + /// Defaults to "" (volume's root). + /// SubPathExpr and SubPath are mutually exclusive. #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPathExpr")] pub sub_path_expr: Option, } @@ -2962,7 +4597,9 @@ pub struct MattermostVolumeMounts { /// Volume represents a named volume in a pod that may be accessed by any container in the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumes { - /// awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + /// awsElasticBlockStore represents an AWS Disk resource that is attached to a + /// kubelet's host machine and then exposed to the pod. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore #[serde(default, skip_serializing_if = "Option::is_none", rename = "awsElasticBlockStore")] pub aws_elastic_block_store: Option, /// azureDisk represents an Azure Data Disk mount on the host and bind mount to the pod. @@ -2974,7 +4611,8 @@ pub struct MattermostVolumes { /// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime #[serde(default, skip_serializing_if = "Option::is_none")] pub cephfs: Option, - /// cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + /// cinder represents a cinder volume attached and mounted on kubelets host machine. + /// More info: https://examples.k8s.io/mysql-cinder-pd/README.md #[serde(default, skip_serializing_if = "Option::is_none")] pub cinder: Option, /// configMap represents a configMap that should populate this volume @@ -2986,46 +4624,100 @@ pub struct MattermostVolumes { /// downwardAPI represents downward API about the pod that should populate this volume #[serde(default, skip_serializing_if = "Option::is_none", rename = "downwardAPI")] pub downward_api: Option, - /// emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + /// emptyDir represents a temporary directory that shares a pod's lifetime. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir #[serde(default, skip_serializing_if = "Option::is_none", rename = "emptyDir")] pub empty_dir: Option, - /// ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. - /// Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). - /// Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. - /// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. - /// A pod can use both types of ephemeral volumes and persistent volumes at the same time. + /// ephemeral represents a volume that is handled by a cluster storage driver. + /// The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, + /// and deleted when the pod is removed. + /// + /// Use this if: + /// a) the volume is only needed while the pod runs, + /// b) features of normal volumes like restoring from snapshot or capacity + /// tracking are needed, + /// c) the storage driver is specified through a storage class, and + /// d) the storage driver supports dynamic volume provisioning through + /// a PersistentVolumeClaim (see EphemeralVolumeSource for more + /// information on the connection between this volume type + /// and PersistentVolumeClaim). + /// + /// Use PersistentVolumeClaim or one of the vendor-specific + /// APIs for volumes that persist for longer than the lifecycle + /// of an individual pod. + /// + /// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to + /// be used that way - see the documentation of the driver for + /// more information. + /// + /// A pod can use both types of ephemeral volumes and + /// persistent volumes at the same time. #[serde(default, skip_serializing_if = "Option::is_none")] pub ephemeral: Option, /// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. #[serde(default, skip_serializing_if = "Option::is_none")] pub fc: Option, - /// flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. + /// flexVolume represents a generic volume resource that is + /// provisioned/attached using an exec based plugin. #[serde(default, skip_serializing_if = "Option::is_none", rename = "flexVolume")] pub flex_volume: Option, /// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running #[serde(default, skip_serializing_if = "Option::is_none")] pub flocker: Option, - /// gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + /// gcePersistentDisk represents a GCE Disk resource that is attached to a + /// kubelet's host machine and then exposed to the pod. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[serde(default, skip_serializing_if = "Option::is_none", rename = "gcePersistentDisk")] pub gce_persistent_disk: Option, - /// gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. + /// gitRepo represents a git repository at a particular revision. + /// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an + /// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir + /// into the Pod's container. #[serde(default, skip_serializing_if = "Option::is_none", rename = "gitRepo")] pub git_repo: Option, - /// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md + /// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. + /// More info: https://examples.k8s.io/volumes/glusterfs/README.md #[serde(default, skip_serializing_if = "Option::is_none")] pub glusterfs: Option, - /// hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. + /// hostPath represents a pre-existing file or directory on the host + /// machine that is directly exposed to the container. This is generally + /// used for system agents or other privileged things that are allowed + /// to see the host machine. Most containers will NOT need this. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] pub host_path: Option, - /// iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md + /// image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. + /// The volume is resolved at pod startup depending on which PullPolicy value is provided: + /// + /// - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. + /// - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. + /// - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. + /// + /// The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. + /// A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. + /// The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. + /// The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. + /// The volume will be mounted read-only (ro) and non-executable files (noexec). + /// Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). + /// The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, + /// iscsi represents an ISCSI Disk resource that is attached to a + /// kubelet's host machine and then exposed to the pod. + /// More info: https://examples.k8s.io/volumes/iscsi/README.md #[serde(default, skip_serializing_if = "Option::is_none")] pub iscsi: Option, - /// name of the volume. Must be a DNS_LABEL and unique within the pod. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// name of the volume. + /// Must be a DNS_LABEL and unique within the pod. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names pub name: String, - /// nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + /// nfs represents an NFS mount on the host that shares a pod's lifetime + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs #[serde(default, skip_serializing_if = "Option::is_none")] pub nfs: Option, - /// persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// persistentVolumeClaimVolumeSource represents a reference to a + /// PersistentVolumeClaim in the same namespace. + /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims #[serde(default, skip_serializing_if = "Option::is_none", rename = "persistentVolumeClaim")] pub persistent_volume_claim: Option, /// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine @@ -3040,13 +4732,15 @@ pub struct MattermostVolumes { /// quobyte represents a Quobyte mount on the host that shares a pod's lifetime #[serde(default, skip_serializing_if = "Option::is_none")] pub quobyte: Option, - /// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md + /// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. + /// More info: https://examples.k8s.io/volumes/rbd/README.md #[serde(default, skip_serializing_if = "Option::is_none")] pub rbd: Option, /// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleIO")] pub scale_io: Option, - /// secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + /// secret represents a secret that should populate this volume. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, /// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. @@ -3057,19 +4751,29 @@ pub struct MattermostVolumes { pub vsphere_volume: Option, } -/// awsElasticBlockStore represents an AWS Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore +/// awsElasticBlockStore represents an AWS Disk resource that is attached to a +/// kubelet's host machine and then exposed to the pod. +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesAwsElasticBlockStore { - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore TODO: how do we prevent errors in the filesystem from compromising the machine + /// fsType is the filesystem type of the volume that you want to mount. + /// Tip: Ensure that the filesystem type is supported by the host operating system. + /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + /// partition is the partition in the volume that you want to mount. + /// If omitted, the default is to mount by volume name. + /// Examples: For volume /dev/sda1, you specify the partition as "1". + /// Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). #[serde(default, skip_serializing_if = "Option::is_none")] pub partition: Option, - /// readOnly value true will force the readOnly setting in VolumeMounts. More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + /// readOnly value true will force the readOnly setting in VolumeMounts. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore + /// volumeID is unique ID of the persistent disk resource in AWS (Amazon EBS volume). + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore #[serde(rename = "volumeID")] pub volume_id: String, } @@ -3086,13 +4790,16 @@ pub struct MattermostVolumesAzureDisk { /// diskURI is the URI of data disk in the blob storage #[serde(rename = "diskURI")] pub disk_uri: String, - /// fsType is Filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// fsType is Filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// kind expected values are Shared: multiple blob disks per storage account Dedicated: single blob disk per storage account Managed: azure managed data disk (only in managed availability set). defaults to shared #[serde(default, skip_serializing_if = "Option::is_none")] pub kind: Option, - /// readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly Defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, } @@ -3100,7 +4807,8 @@ pub struct MattermostVolumesAzureDisk { /// azureFile represents an Azure File Service mount on the host and bind mount to the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesAzureFile { - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, /// secretName is the name of secret that contains Azure Storage Account Name and Key @@ -3114,54 +4822,78 @@ pub struct MattermostVolumesAzureFile { /// cephFS represents a Ceph FS mount on the host that shares a pod's lifetime #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCephfs { - /// monitors is Required: Monitors is a collection of Ceph monitors More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + /// monitors is Required: Monitors is a collection of Ceph monitors + /// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it pub monitors: Vec, /// path is Optional: Used as the mounted root, rather than the full Ceph tree, default is / #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. + /// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + /// secretFile is Optional: SecretFile is the path to key ring for User, default is /etc/ceph/user.secret + /// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretFile")] pub secret_file: Option, - /// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + /// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. + /// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, - /// user is optional: User is the rados user name, default is admin More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it + /// user is optional: User is the rados user name, default is admin + /// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none")] pub user: Option, } -/// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it +/// secretRef is Optional: SecretRef is reference to the authentication secret for User, default is empty. +/// More info: https://examples.k8s.io/volumes/cephfs/README.md#how-to-use-it #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCephfsSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } -/// cinder represents a cinder volume attached and mounted on kubelets host machine. More info: https://examples.k8s.io/mysql-cinder-pd/README.md +/// cinder represents a cinder volume attached and mounted on kubelets host machine. +/// More info: https://examples.k8s.io/mysql-cinder-pd/README.md #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCinder { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// More info: https://examples.k8s.io/mysql-cinder-pd/README.md #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + /// readOnly defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. + /// More info: https://examples.k8s.io/mysql-cinder-pd/README.md #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. + /// secretRef is optional: points to a secret object containing parameters used to connect + /// to OpenStack. #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, - /// volumeID used to identify the volume in cinder. More info: https://examples.k8s.io/mysql-cinder-pd/README.md + /// volumeID used to identify the volume in cinder. + /// More info: https://examples.k8s.io/mysql-cinder-pd/README.md #[serde(rename = "volumeID")] pub volume_id: String, } -/// secretRef is optional: points to a secret object containing parameters used to connect to OpenStack. +/// secretRef is optional: points to a secret object containing parameters used to connect +/// to OpenStack. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCinderSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3169,13 +4901,29 @@ pub struct MattermostVolumesCinderSecretRef { /// configMap represents a configMap that should populate this volume #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesConfigMap { - /// defaultMode is optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// defaultMode is optional: mode bits used to set permissions on created files by default. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// Defaults to 0644. + /// Directories within the path are not affected by this setting. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] pub default_mode: Option, - /// items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + /// items if unspecified, each key-value pair in the Data field of the referenced + /// ConfigMap will be projected into the volume as a file whose name is the + /// key and content is the value. If specified, the listed keys will be + /// projected into the specified paths, and unlisted keys will not be + /// present. If a key is specified which is not present in the ConfigMap, + /// the volume setup will error unless it is marked optional. Paths must be + /// relative and may not contain the '..' path or start with '..'. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional specify whether the ConfigMap or its keys must be defined @@ -3188,36 +4936,61 @@ pub struct MattermostVolumesConfigMap { pub struct MattermostVolumesConfigMapItems { /// key is the key to project. pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// mode is Optional: mode bits used to set permissions on this file. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + /// path is the relative path of the file to map the key to. + /// May not be an absolute path. + /// May not contain the path element '..'. + /// May not start with the string '..'. pub path: String, } /// csi (Container Storage Interface) represents ephemeral storage that is handled by certain external CSI drivers (Beta feature). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCsi { - /// driver is the name of the CSI driver that handles this volume. Consult with your admin for the correct name as registered in the cluster. + /// driver is the name of the CSI driver that handles this volume. + /// Consult with your admin for the correct name as registered in the cluster. pub driver: String, - /// fsType to mount. Ex. "ext4", "xfs", "ntfs". If not provided, the empty value is passed to the associated CSI driver which will determine the default filesystem to apply. + /// fsType to mount. Ex. "ext4", "xfs", "ntfs". + /// If not provided, the empty value is passed to the associated CSI driver + /// which will determine the default filesystem to apply. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. + /// nodePublishSecretRef is a reference to the secret object containing + /// sensitive information to pass to the CSI driver to complete the CSI + /// NodePublishVolume and NodeUnpublishVolume calls. + /// This field is optional, and may be empty if no secret is required. If the + /// secret object contains more than one secret, all secret references are passed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePublishSecretRef")] pub node_publish_secret_ref: Option, - /// readOnly specifies a read-only configuration for the volume. Defaults to false (read/write). + /// readOnly specifies a read-only configuration for the volume. + /// Defaults to false (read/write). #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// volumeAttributes stores driver-specific properties that are passed to the CSI driver. Consult your driver's documentation for supported values. + /// volumeAttributes stores driver-specific properties that are passed to the CSI + /// driver. Consult your driver's documentation for supported values. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributes")] pub volume_attributes: Option>, } -/// nodePublishSecretRef is a reference to the secret object containing sensitive information to pass to the CSI driver to complete the CSI NodePublishVolume and NodeUnpublishVolume calls. This field is optional, and may be empty if no secret is required. If the secret object contains more than one secret, all secret references are passed. +/// nodePublishSecretRef is a reference to the secret object containing +/// sensitive information to pass to the CSI driver to complete the CSI +/// NodePublishVolume and NodeUnpublishVolume calls. +/// This field is optional, and may be empty if no secret is required. If the +/// secret object contains more than one secret, all secret references are passed. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesCsiNodePublishSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3225,7 +4998,14 @@ pub struct MattermostVolumesCsiNodePublishSecretRef { /// downwardAPI represents downward API about the pod that should populate this volume #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesDownwardApi { - /// Optional: mode bits to use on created files by default. Must be a Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// Optional: mode bits to use on created files by default. Must be a + /// Optional: mode bits used to set permissions on created files by default. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// Defaults to 0644. + /// Directories within the path are not affected by this setting. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] pub default_mode: Option, /// Items is a list of downward API volume file @@ -3236,20 +5016,26 @@ pub struct MattermostVolumesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// Optional: mode bits used to set permissions on this file, must be an octal value + /// between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, /// Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' pub path: String, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -3260,7 +5046,8 @@ pub struct MattermostVolumesDownwardApiItemsFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesDownwardApiItemsResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -3273,72 +5060,194 @@ pub struct MattermostVolumesDownwardApiItemsResourceFieldRef { pub resource: String, } -/// emptyDir represents a temporary directory that shares a pod's lifetime. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir +/// emptyDir represents a temporary directory that shares a pod's lifetime. +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEmptyDir { - /// medium represents what type of storage medium should back this directory. The default is "" which means to use the node's default medium. Must be an empty string (default) or Memory. More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir + /// medium represents what type of storage medium should back this directory. + /// The default is "" which means to use the node's default medium. + /// Must be an empty string (default) or Memory. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir #[serde(default, skip_serializing_if = "Option::is_none")] pub medium: Option, - /// sizeLimit is the total amount of local storage required for this EmptyDir volume. The size limit is also applicable for memory medium. The maximum usage on memory medium EmptyDir would be the minimum value between the SizeLimit specified here and the sum of memory limits of all containers in a pod. The default is nil which means that the limit is undefined. More info: http://kubernetes.io/docs/user-guide/volumes#emptydir + /// sizeLimit is the total amount of local storage required for this EmptyDir volume. + /// The size limit is also applicable for memory medium. + /// The maximum usage on memory medium EmptyDir would be the minimum value between + /// the SizeLimit specified here and the sum of memory limits of all containers in a pod. + /// The default is nil which means that the limit is undefined. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#emptydir #[serde(default, skip_serializing_if = "Option::is_none", rename = "sizeLimit")] pub size_limit: Option, } -/// ephemeral represents a volume that is handled by a cluster storage driver. The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, and deleted when the pod is removed. -/// Use this if: a) the volume is only needed while the pod runs, b) features of normal volumes like restoring from snapshot or capacity tracking are needed, c) the storage driver is specified through a storage class, and d) the storage driver supports dynamic volume provisioning through a PersistentVolumeClaim (see EphemeralVolumeSource for more information on the connection between this volume type and PersistentVolumeClaim). -/// Use PersistentVolumeClaim or one of the vendor-specific APIs for volumes that persist for longer than the lifecycle of an individual pod. -/// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to be used that way - see the documentation of the driver for more information. -/// A pod can use both types of ephemeral volumes and persistent volumes at the same time. +/// ephemeral represents a volume that is handled by a cluster storage driver. +/// The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, +/// and deleted when the pod is removed. +/// +/// Use this if: +/// a) the volume is only needed while the pod runs, +/// b) features of normal volumes like restoring from snapshot or capacity +/// tracking are needed, +/// c) the storage driver is specified through a storage class, and +/// d) the storage driver supports dynamic volume provisioning through +/// a PersistentVolumeClaim (see EphemeralVolumeSource for more +/// information on the connection between this volume type +/// and PersistentVolumeClaim). +/// +/// Use PersistentVolumeClaim or one of the vendor-specific +/// APIs for volumes that persist for longer than the lifecycle +/// of an individual pod. +/// +/// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to +/// be used that way - see the documentation of the driver for +/// more information. +/// +/// A pod can use both types of ephemeral volumes and +/// persistent volumes at the same time. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeral { - /// Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). - /// An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. - /// This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. - /// Required, must not be nil. + /// Will be used to create a stand-alone PVC to provision the volume. + /// The pod in which this EphemeralVolumeSource is embedded will be the + /// owner of the PVC, i.e. the PVC will be deleted together with the + /// pod. The name of the PVC will be `-` where + /// `` is the name from the `PodSpec.Volumes` array + /// entry. Pod validation will reject the pod if the concatenated name + /// is not valid for a PVC (for example, too long). + /// + /// An existing PVC with that name that is not owned by the pod + /// will *not* be used for the pod to avoid using an unrelated + /// volume by mistake. Starting the pod is then blocked until + /// the unrelated PVC is removed. If such a pre-created PVC is + /// meant to be used by the pod, the PVC has to updated with an + /// owner reference to the pod once the pod exists. Normally + /// this should not be necessary, but it may be useful when + /// manually reconstructing a broken cluster. + /// + /// This field is read-only and no changes will be made by Kubernetes + /// to the PVC after it has been created. + /// + /// Required, must not be nil. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] pub volume_claim_template: Option, } -/// Will be used to create a stand-alone PVC to provision the volume. The pod in which this EphemeralVolumeSource is embedded will be the owner of the PVC, i.e. the PVC will be deleted together with the pod. The name of the PVC will be `-` where `` is the name from the `PodSpec.Volumes` array entry. Pod validation will reject the pod if the concatenated name is not valid for a PVC (for example, too long). -/// An existing PVC with that name that is not owned by the pod will *not* be used for the pod to avoid using an unrelated volume by mistake. Starting the pod is then blocked until the unrelated PVC is removed. If such a pre-created PVC is meant to be used by the pod, the PVC has to updated with an owner reference to the pod once the pod exists. Normally this should not be necessary, but it may be useful when manually reconstructing a broken cluster. -/// This field is read-only and no changes will be made by Kubernetes to the PVC after it has been created. -/// Required, must not be nil. +/// Will be used to create a stand-alone PVC to provision the volume. +/// The pod in which this EphemeralVolumeSource is embedded will be the +/// owner of the PVC, i.e. the PVC will be deleted together with the +/// pod. The name of the PVC will be `-` where +/// `` is the name from the `PodSpec.Volumes` array +/// entry. Pod validation will reject the pod if the concatenated name +/// is not valid for a PVC (for example, too long). +/// +/// An existing PVC with that name that is not owned by the pod +/// will *not* be used for the pod to avoid using an unrelated +/// volume by mistake. Starting the pod is then blocked until +/// the unrelated PVC is removed. If such a pre-created PVC is +/// meant to be used by the pod, the PVC has to updated with an +/// owner reference to the pod once the pod exists. Normally +/// this should not be necessary, but it may be useful when +/// manually reconstructing a broken cluster. +/// +/// This field is read-only and no changes will be made by Kubernetes +/// to the PVC after it has been created. +/// +/// Required, must not be nil. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplate { - /// May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. + /// May contain labels and annotations that will be copied into the PVC + /// when creating it. No other fields are allowed and will be rejected during + /// validation. #[serde(default, skip_serializing_if = "Option::is_none")] pub metadata: Option, - /// The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. + /// The specification for the PersistentVolumeClaim. The entire content is + /// copied unchanged into the PVC that gets created from this + /// template. The same fields as in a PersistentVolumeClaim + /// are also valid here. pub spec: MattermostVolumesEphemeralVolumeClaimTemplateSpec, } -/// May contain labels and annotations that will be copied into the PVC when creating it. No other fields are allowed and will be rejected during validation. +/// May contain labels and annotations that will be copied into the PVC +/// when creating it. No other fields are allowed and will be rejected during +/// validation. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateMetadata { } -/// The specification for the PersistentVolumeClaim. The entire content is copied unchanged into the PVC that gets created from this template. The same fields as in a PersistentVolumeClaim are also valid here. +/// The specification for the PersistentVolumeClaim. The entire content is +/// copied unchanged into the PVC that gets created from this +/// template. The same fields as in a PersistentVolumeClaim +/// are also valid here. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpec { - /// accessModes contains the desired access modes the volume should have. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 + /// accessModes contains the desired access modes the volume should have. + /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#access-modes-1 #[serde(default, skip_serializing_if = "Option::is_none", rename = "accessModes")] pub access_modes: Option>, - /// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. + /// dataSource field can be used to specify either: + /// * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) + /// * An existing PVC (PersistentVolumeClaim) + /// If the provisioner or an external controller can support the specified data source, + /// it will create a new volume based on the contents of the specified data source. + /// When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, + /// and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. + /// If the namespace is specified, then dataSourceRef will not be copied to dataSource. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSource")] pub data_source: Option, - /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + /// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty + /// volume is desired. This may be any object from a non-empty API group (non + /// core object) or a PersistentVolumeClaim object. + /// When this field is specified, volume binding will only succeed if the type of + /// the specified object matches some installed volume populator or dynamic + /// provisioner. + /// This field will replace the functionality of the dataSource field and as such + /// if both fields are non-empty, they must have the same value. For backwards + /// compatibility, when namespace isn't specified in dataSourceRef, + /// both fields (dataSource and dataSourceRef) will be set to the same + /// value automatically if one of them is empty and the other is non-empty. + /// When namespace is specified in dataSourceRef, + /// dataSource isn't set to the same value and must be empty. + /// There are three important differences between dataSource and dataSourceRef: + /// * While dataSource only allows two specific types of objects, dataSourceRef + /// allows any non-core object, as well as PersistentVolumeClaim objects. + /// * While dataSource ignores disallowed values (dropping them), dataSourceRef + /// preserves all values, and generates an error if a disallowed value is + /// specified. + /// * While dataSource only allows local objects, dataSourceRef allows objects + /// in any namespaces. + /// (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. + /// (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. #[serde(default, skip_serializing_if = "Option::is_none", rename = "dataSourceRef")] pub data_source_ref: Option, - /// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources + /// resources represents the minimum resources the volume should have. + /// If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements + /// that are lower than previous value but must still be higher than capacity recorded in the + /// status field of the claim. + /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, /// selector is a label query over volumes to consider for binding. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, - /// storageClassName is the name of the StorageClass required by the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 + /// storageClassName is the name of the StorageClass required by the claim. + /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#class-1 #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageClassName")] pub storage_class_name: Option, - /// volumeMode defines what type of volume is required by the claim. Value of Filesystem is implied when not included in claim spec. + /// volumeAttributesClassName may be used to set the VolumeAttributesClass used by this claim. + /// If specified, the CSI driver will create or update the volume with the attributes defined + /// in the corresponding VolumeAttributesClass. This has a different purpose than storageClassName, + /// it can be changed after the claim is created. An empty string value means that no VolumeAttributesClass + /// will be applied to the claim but it's not allowed to reset this field to empty string once it is set. + /// If unspecified and the PersistentVolumeClaim is unbound, the default VolumeAttributesClass + /// will be set by the persistentvolume controller if it exists. + /// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be + /// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource + /// exists. + /// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ + /// (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] + pub volume_attributes_class_name: Option, + /// volumeMode defines what type of volume is required by the claim. + /// Value of Filesystem is implied when not included in claim spec. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeMode")] pub volume_mode: Option, /// volumeName is the binding reference to the PersistentVolume backing this claim. @@ -3346,10 +5255,19 @@ pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpec { pub volume_name: Option, } -/// dataSource field can be used to specify either: * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) * An existing PVC (PersistentVolumeClaim) If the provisioner or an external controller can support the specified data source, it will create a new volume based on the contents of the specified data source. When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. If the namespace is specified, then dataSourceRef will not be copied to dataSource. +/// dataSource field can be used to specify either: +/// * An existing VolumeSnapshot object (snapshot.storage.k8s.io/VolumeSnapshot) +/// * An existing PVC (PersistentVolumeClaim) +/// If the provisioner or an external controller can support the specified data source, +/// it will create a new volume based on the contents of the specified data source. +/// When the AnyVolumeDataSource feature gate is enabled, dataSource contents will be copied to dataSourceRef, +/// and dataSourceRef contents will be copied to dataSource when dataSourceRef.namespace is not specified. +/// If the namespace is specified, then dataSourceRef will not be copied to dataSource. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecDataSource { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + /// APIGroup is the group for the resource being referenced. + /// If APIGroup is not specified, the specified Kind must be in the core API group. + /// For any other third-party types, APIGroup is required. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] pub api_group: Option, /// Kind is the type of resource being referenced @@ -3358,63 +5276,92 @@ pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecDataSource { pub name: String, } -/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty volume is desired. This may be any object from a non-empty API group (non core object) or a PersistentVolumeClaim object. When this field is specified, volume binding will only succeed if the type of the specified object matches some installed volume populator or dynamic provisioner. This field will replace the functionality of the dataSource field and as such if both fields are non-empty, they must have the same value. For backwards compatibility, when namespace isn't specified in dataSourceRef, both fields (dataSource and dataSourceRef) will be set to the same value automatically if one of them is empty and the other is non-empty. When namespace is specified in dataSourceRef, dataSource isn't set to the same value and must be empty. There are three important differences between dataSource and dataSourceRef: * While dataSource only allows two specific types of objects, dataSourceRef allows any non-core object, as well as PersistentVolumeClaim objects. * While dataSource ignores disallowed values (dropping them), dataSourceRef preserves all values, and generates an error if a disallowed value is specified. * While dataSource only allows local objects, dataSourceRef allows objects in any namespaces. (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. +/// dataSourceRef specifies the object from which to populate the volume with data, if a non-empty +/// volume is desired. This may be any object from a non-empty API group (non +/// core object) or a PersistentVolumeClaim object. +/// When this field is specified, volume binding will only succeed if the type of +/// the specified object matches some installed volume populator or dynamic +/// provisioner. +/// This field will replace the functionality of the dataSource field and as such +/// if both fields are non-empty, they must have the same value. For backwards +/// compatibility, when namespace isn't specified in dataSourceRef, +/// both fields (dataSource and dataSourceRef) will be set to the same +/// value automatically if one of them is empty and the other is non-empty. +/// When namespace is specified in dataSourceRef, +/// dataSource isn't set to the same value and must be empty. +/// There are three important differences between dataSource and dataSourceRef: +/// * While dataSource only allows two specific types of objects, dataSourceRef +/// allows any non-core object, as well as PersistentVolumeClaim objects. +/// * While dataSource ignores disallowed values (dropping them), dataSourceRef +/// preserves all values, and generates an error if a disallowed value is +/// specified. +/// * While dataSource only allows local objects, dataSourceRef allows objects +/// in any namespaces. +/// (Beta) Using this field requires the AnyVolumeDataSource feature gate to be enabled. +/// (Alpha) Using the namespace field of dataSourceRef requires the CrossNamespaceVolumeDataSource feature gate to be enabled. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecDataSourceRef { - /// APIGroup is the group for the resource being referenced. If APIGroup is not specified, the specified Kind must be in the core API group. For any other third-party types, APIGroup is required. + /// APIGroup is the group for the resource being referenced. + /// If APIGroup is not specified, the specified Kind must be in the core API group. + /// For any other third-party types, APIGroup is required. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiGroup")] pub api_group: Option, /// Kind is the type of resource being referenced pub kind: String, /// Name is the name of resource being referenced pub name: String, - /// Namespace is the namespace of resource being referenced Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. + /// Namespace is the namespace of resource being referenced + /// Note that when a namespace is specified, a gateway.networking.k8s.io/ReferenceGrant object is required in the referent namespace to allow that namespace's owner to accept the reference. See the ReferenceGrant documentation for details. + /// (Alpha) This field requires the CrossNamespaceVolumeDataSource feature gate to be enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, } -/// resources represents the minimum resources the volume should have. If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements that are lower than previous value but must still be higher than capacity recorded in the status field of the claim. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources +/// resources represents the minimum resources the volume should have. +/// If RecoverVolumeExpansionFailure feature is enabled users are allowed to specify resource requirements +/// that are lower than previous value but must still be higher than capacity recorded in the +/// status field of the claim. +/// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } -/// ResourceClaim references one entry in PodSpec.ResourceClaims. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. - pub name: String, -} - /// selector is a label query over volumes to consider for binding. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -3422,46 +5369,66 @@ pub struct MattermostVolumesEphemeralVolumeClaimTemplateSpecSelectorMatchExpress /// fc represents a Fibre Channel resource that is attached to a kubelet's host machine and then exposed to the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesFc { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. TODO: how do we prevent errors in the filesystem from compromising the machine + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// lun is Optional: FC target lun number #[serde(default, skip_serializing_if = "Option::is_none")] pub lun: Option, - /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly is Optional: Defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, /// targetWWNs is Optional: FC target worldwide names (WWNs) #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetWWNs")] pub target_ww_ns: Option>, - /// wwids Optional: FC volume world wide identifiers (wwids) Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. + /// wwids Optional: FC volume world wide identifiers (wwids) + /// Either wwids or combination of targetWWNs and lun must be set, but not both simultaneously. #[serde(default, skip_serializing_if = "Option::is_none")] pub wwids: Option>, } -/// flexVolume represents a generic volume resource that is provisioned/attached using an exec based plugin. +/// flexVolume represents a generic volume resource that is +/// provisioned/attached using an exec based plugin. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesFlexVolume { /// driver is the name of the driver to use for this volume. pub driver: String, - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". The default filesystem depends on FlexVolume script. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// options is Optional: this field holds extra command options if any. #[serde(default, skip_serializing_if = "Option::is_none")] pub options: Option>, - /// readOnly is Optional: defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly is Optional: defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. + /// secretRef is Optional: secretRef is reference to the secret object containing + /// sensitive information to pass to the plugin scripts. This may be + /// empty if no secret object is specified. If the secret object + /// contains more than one secret, all secrets are passed to the plugin + /// scripts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, } -/// secretRef is Optional: secretRef is reference to the secret object containing sensitive information to pass to the plugin scripts. This may be empty if no secret object is specified. If the secret object contains more than one secret, all secrets are passed to the plugin scripts. +/// secretRef is Optional: secretRef is reference to the secret object containing +/// sensitive information to pass to the plugin scripts. This may be +/// empty if no secret object is specified. If the secret object +/// contains more than one secret, all secrets are passed to the plugin +/// scripts. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesFlexVolumeSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3469,7 +5436,8 @@ pub struct MattermostVolumesFlexVolumeSecretRef { /// flocker represents a Flocker volume attached to a kubelet's host machine. This depends on the Flocker control service being running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesFlocker { - /// datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker should be considered as deprecated + /// datasetName is Name of the dataset stored as metadata -> name on the dataset for Flocker + /// should be considered as deprecated #[serde(default, skip_serializing_if = "Option::is_none", rename = "datasetName")] pub dataset_name: Option, /// datasetUUID is the UUID of the dataset. This is unique identifier of a Flocker dataset @@ -3477,27 +5445,45 @@ pub struct MattermostVolumesFlocker { pub dataset_uuid: Option, } -/// gcePersistentDisk represents a GCE Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk +/// gcePersistentDisk represents a GCE Disk resource that is attached to a +/// kubelet's host machine and then exposed to the pod. +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesGcePersistentDisk { - /// fsType is filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk TODO: how do we prevent errors in the filesystem from compromising the machine + /// fsType is filesystem type of the volume that you want to mount. + /// Tip: Ensure that the filesystem type is supported by the host operating system. + /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// partition is the partition in the volume that you want to mount. If omitted, the default is to mount by volume name. Examples: For volume /dev/sda1, you specify the partition as "1". Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + /// partition is the partition in the volume that you want to mount. + /// If omitted, the default is to mount by volume name. + /// Examples: For volume /dev/sda1, you specify the partition as "1". + /// Similarly, the volume partition for /dev/sda is "0" (or you can leave the property empty). + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[serde(default, skip_serializing_if = "Option::is_none")] pub partition: Option, - /// pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + /// pdName is unique name of the PD resource in GCE. Used to identify the disk in GCE. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[serde(rename = "pdName")] pub pd_name: String, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk + /// readOnly here will force the ReadOnly setting in VolumeMounts. + /// Defaults to false. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, } -/// gitRepo represents a git repository at a particular revision. DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir into the Pod's container. +/// gitRepo represents a git repository at a particular revision. +/// DEPRECATED: GitRepo is deprecated. To provision a container with a git repo, mount an +/// EmptyDir into an InitContainer that clones the repo using git, then mount the EmptyDir +/// into the Pod's container. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesGitRepo { - /// directory is the target directory name. Must not contain or start with '..'. If '.' is supplied, the volume directory will be the git repository. Otherwise, if specified, the volume will contain the git repository in the subdirectory with the given name. + /// directory is the target directory name. + /// Must not contain or start with '..'. If '.' is supplied, the volume directory will be the + /// git repository. Otherwise, if specified, the volume will contain the git repository in + /// the subdirectory with the given name. #[serde(default, skip_serializing_if = "Option::is_none")] pub directory: Option, /// repository is the URL @@ -3507,29 +5493,77 @@ pub struct MattermostVolumesGitRepo { pub revision: Option, } -/// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/glusterfs/README.md +/// glusterfs represents a Glusterfs mount on the host that shares a pod's lifetime. +/// More info: https://examples.k8s.io/volumes/glusterfs/README.md #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesGlusterfs { - /// endpoints is the endpoint name that details Glusterfs topology. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + /// endpoints is the endpoint name that details Glusterfs topology. + /// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod pub endpoints: String, - /// path is the Glusterfs volume path. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + /// path is the Glusterfs volume path. + /// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod pub path: String, - /// readOnly here will force the Glusterfs volume to be mounted with read-only permissions. Defaults to false. More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod + /// readOnly here will force the Glusterfs volume to be mounted with read-only permissions. + /// Defaults to false. + /// More info: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, } -/// hostPath represents a pre-existing file or directory on the host machine that is directly exposed to the container. This is generally used for system agents or other privileged things that are allowed to see the host machine. Most containers will NOT need this. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath --- TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not mount host directories as read/write. +/// hostPath represents a pre-existing file or directory on the host +/// machine that is directly exposed to the container. This is generally +/// used for system agents or other privileged things that are allowed +/// to see the host machine. Most containers will NOT need this. +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesHostPath { - /// path of the directory on the host. If the path is a symlink, it will follow the link to the real path. More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + /// path of the directory on the host. + /// If the path is a symlink, it will follow the link to the real path. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath pub path: String, - /// type for HostPath Volume Defaults to "" More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath + /// type for HostPath Volume + /// Defaults to "" + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, } -/// iscsi represents an ISCSI Disk resource that is attached to a kubelet's host machine and then exposed to the pod. More info: https://examples.k8s.io/volumes/iscsi/README.md +/// image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. +/// The volume is resolved at pod startup depending on which PullPolicy value is provided: +/// +/// - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. +/// - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. +/// - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. +/// +/// The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. +/// A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. +/// The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. +/// The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. +/// The volume will be mounted read-only (ro) and non-executable files (noexec). +/// Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). +/// The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostVolumesImage { + /// Policy for pulling OCI objects. Possible values are: + /// Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. + /// Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. + /// IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. + /// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "pullPolicy")] + pub pull_policy: Option, + /// Required: Image or artifact reference to be used. + /// Behaves in the same way as pod.spec.containers[*].image. + /// Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. + /// More info: https://kubernetes.io/docs/concepts/containers/images + /// This field is optional to allow higher level config management to default or override + /// container images in workload controllers like Deployments and StatefulSets. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reference: Option, +} + +/// iscsi represents an ISCSI Disk resource that is attached to a +/// kubelet's host machine and then exposed to the pod. +/// More info: https://examples.k8s.io/volumes/iscsi/README.md #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesIscsi { /// chapAuthDiscovery defines whether support iSCSI Discovery CHAP authentication @@ -3538,29 +5572,38 @@ pub struct MattermostVolumesIscsi { /// chapAuthSession defines whether support iSCSI Session CHAP authentication #[serde(default, skip_serializing_if = "Option::is_none", rename = "chapAuthSession")] pub chap_auth_session: Option, - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi TODO: how do we prevent errors in the filesystem from compromising the machine + /// fsType is the filesystem type of the volume that you want to mount. + /// Tip: Ensure that the filesystem type is supported by the host operating system. + /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// initiatorName is the custom iSCSI Initiator Name. If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface : will be created for the connection. + /// initiatorName is the custom iSCSI Initiator Name. + /// If initiatorName is specified with iscsiInterface simultaneously, new iSCSI interface + /// : will be created for the connection. #[serde(default, skip_serializing_if = "Option::is_none", rename = "initiatorName")] pub initiator_name: Option, /// iqn is the target iSCSI Qualified Name. pub iqn: String, - /// iscsiInterface is the interface Name that uses an iSCSI transport. Defaults to 'default' (tcp). + /// iscsiInterface is the interface Name that uses an iSCSI transport. + /// Defaults to 'default' (tcp). #[serde(default, skip_serializing_if = "Option::is_none", rename = "iscsiInterface")] pub iscsi_interface: Option, /// lun represents iSCSI Target Lun number. pub lun: i32, - /// portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + /// portals is the iSCSI Target Portal List. The portal is either an IP or ip_addr:port if the port + /// is other than default (typically TCP ports 860 and 3260). #[serde(default, skip_serializing_if = "Option::is_none")] pub portals: Option>, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. + /// readOnly here will force the ReadOnly setting in VolumeMounts. + /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, /// secretRef is the CHAP Secret for iSCSI target and initiator authentication #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, - /// targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port is other than default (typically TCP ports 860 and 3260). + /// targetPortal is iSCSI Target Portal. The Portal is either an IP or ip_addr:port if the port + /// is other than default (typically TCP ports 860 and 3260). #[serde(rename = "targetPortal")] pub target_portal: String, } @@ -3568,30 +5611,43 @@ pub struct MattermostVolumesIscsi { /// secretRef is the CHAP Secret for iSCSI target and initiator authentication #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesIscsiSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } -/// nfs represents an NFS mount on the host that shares a pod's lifetime More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs +/// nfs represents an NFS mount on the host that shares a pod's lifetime +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesNfs { - /// path that is exported by the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + /// path that is exported by the NFS server. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs pub path: String, - /// readOnly here will force the NFS export to be mounted with read-only permissions. Defaults to false. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + /// readOnly here will force the NFS export to be mounted with read-only permissions. + /// Defaults to false. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// server is the hostname or IP address of the NFS server. More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs + /// server is the hostname or IP address of the NFS server. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#nfs pub server: String, } -/// persistentVolumeClaimVolumeSource represents a reference to a PersistentVolumeClaim in the same namespace. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims +/// persistentVolumeClaimVolumeSource represents a reference to a +/// PersistentVolumeClaim in the same namespace. +/// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesPersistentVolumeClaim { - /// claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims + /// claimName is the name of a PersistentVolumeClaim in the same namespace as the pod using this volume. + /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#persistentvolumeclaims #[serde(rename = "claimName")] pub claim_name: String, - /// readOnly Will force the ReadOnly setting in VolumeMounts. Default false. + /// readOnly Will force the ReadOnly setting in VolumeMounts. + /// Default false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, } @@ -3599,7 +5655,9 @@ pub struct MattermostVolumesPersistentVolumeClaim { /// photonPersistentDisk represents a PhotonController persistent disk attached and mounted on kubelets host machine #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesPhotonPersistentDisk { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// pdID is the ID that identifies Photon Controller persistent disk @@ -3610,10 +5668,13 @@ pub struct MattermostVolumesPhotonPersistentDisk { /// portworxVolume represents a portworx volume attached and mounted on kubelets host machine #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesPortworxVolume { - /// fSType represents the filesystem type to mount Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. + /// fSType represents the filesystem type to mount + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, /// volumeID uniquely identifies a Portworx volume @@ -3624,17 +5685,39 @@ pub struct MattermostVolumesPortworxVolume { /// projected items for all in one resources secrets, configmaps, and downward API #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjected { - /// defaultMode are the mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// defaultMode are the mode bits used to set permissions on created files by default. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// Directories within the path are not affected by this setting. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] pub default_mode: Option, - /// sources is the list of volume projections + /// sources is the list of volume projections. Each entry in this list + /// handles one source. #[serde(default, skip_serializing_if = "Option::is_none")] pub sources: Option>, } -/// Projection that may be projected along with other supported volume types +/// Projection that may be projected along with other supported volume types. +/// Exactly one of these fields must be set. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSources { + /// ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field + /// of ClusterTrustBundle objects in an auto-updating file. + /// + /// Alpha, gated by the ClusterTrustBundleProjection feature gate. + /// + /// ClusterTrustBundle objects can either be selected by name, or by the + /// combination of signer name and a label selector. + /// + /// Kubelet performs aggressive normalization of the PEM contents written + /// into the pod filesystem. Esoteric PEM features such as inter-block + /// comments and block headers are stripped. Certificates are deduplicated. + /// The ordering of certificates within the file is arbitrary, and Kubelet + /// may change the order over time. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterTrustBundle")] + pub cluster_trust_bundle: Option, /// configMap information about the configMap data to project #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMap")] pub config_map: Option, @@ -3649,13 +5732,97 @@ pub struct MattermostVolumesProjectedSources { pub service_account_token: Option, } +/// ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field +/// of ClusterTrustBundle objects in an auto-updating file. +/// +/// Alpha, gated by the ClusterTrustBundleProjection feature gate. +/// +/// ClusterTrustBundle objects can either be selected by name, or by the +/// combination of signer name and a label selector. +/// +/// Kubelet performs aggressive normalization of the PEM contents written +/// into the pod filesystem. Esoteric PEM features such as inter-block +/// comments and block headers are stripped. Certificates are deduplicated. +/// The ordering of certificates within the file is arbitrary, and Kubelet +/// may change the order over time. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostVolumesProjectedSourcesClusterTrustBundle { + /// Select all ClusterTrustBundles that match this label selector. Only has + /// effect if signerName is set. Mutually-exclusive with name. If unset, + /// interpreted as "match nothing". If set but empty, interpreted as "match + /// everything". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] + pub label_selector: Option, + /// Select a single ClusterTrustBundle by object name. Mutually-exclusive + /// with signerName and labelSelector. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + /// If true, don't block pod startup if the referenced ClusterTrustBundle(s) + /// aren't available. If using name, then the named ClusterTrustBundle is + /// allowed not to exist. If using signerName, then the combination of + /// signerName and labelSelector is allowed to match zero + /// ClusterTrustBundles. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub optional: Option, + /// Relative path from the volume root to write the bundle. + pub path: String, + /// Select all ClusterTrustBundles that match this signer name. + /// Mutually-exclusive with name. The contents of all selected + /// ClusterTrustBundles will be unified and deduplicated. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "signerName")] + pub signer_name: Option, +} + +/// Select all ClusterTrustBundles that match this label selector. Only has +/// effect if signerName is set. Mutually-exclusive with name. If unset, +/// interpreted as "match nothing". If set but empty, interpreted as "match +/// everything". +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostVolumesProjectedSourcesClusterTrustBundleLabelSelector { + /// matchExpressions is a list of label selector requirements. The requirements are ANDed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] + pub match_expressions: Option>, + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] + pub match_labels: Option>, +} + +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct MattermostVolumesProjectedSourcesClusterTrustBundleLabelSelectorMatchExpressions { + /// key is the label key that the selector applies to. + pub key: String, + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. + pub operator: String, + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub values: Option>, +} + /// configMap information about the configMap data to project #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesConfigMap { - /// items if unspecified, each key-value pair in the Data field of the referenced ConfigMap will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the ConfigMap, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + /// items if unspecified, each key-value pair in the Data field of the referenced + /// ConfigMap will be projected into the volume as a file whose name is the + /// key and content is the value. If specified, the listed keys will be + /// projected into the specified paths, and unlisted keys will not be + /// present. If a key is specified which is not present in the ConfigMap, + /// the volume setup will error unless it is marked optional. Paths must be + /// relative and may not contain the '..' path or start with '..'. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional specify whether the ConfigMap or its keys must be defined @@ -3668,10 +5835,18 @@ pub struct MattermostVolumesProjectedSourcesConfigMap { pub struct MattermostVolumesProjectedSourcesConfigMapItems { /// key is the key to project. pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// mode is Optional: mode bits used to set permissions on this file. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + /// path is the relative path of the file to map the key to. + /// May not be an absolute path. + /// May not contain the path element '..'. + /// May not start with the string '..'. pub path: String, } @@ -3686,20 +5861,26 @@ pub struct MattermostVolumesProjectedSourcesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Optional: mode bits used to set permissions on this file, must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// Optional: mode bits used to set permissions on this file, must be an octal value + /// between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, /// Required: Path is the relative path name of the file to be created. Must not be absolute or contain the '..' path. Must be utf-8 encoded. The first item of the relative path must not start with '..' pub path: String, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -3710,7 +5891,8 @@ pub struct MattermostVolumesProjectedSourcesDownwardApiItemsFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, requests.cpu and requests.memory) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -3726,10 +5908,20 @@ pub struct MattermostVolumesProjectedSourcesDownwardApiItemsResourceFieldRef { /// secret information about the secret data to project #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesSecret { - /// items if unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + /// items if unspecified, each key-value pair in the Data field of the referenced + /// Secret will be projected into the volume as a file whose name is the + /// key and content is the value. If specified, the listed keys will be + /// projected into the specified paths, and unlisted keys will not be + /// present. If a key is specified which is not present in the Secret, + /// the volume setup will error unless it is marked optional. Paths must be + /// relative and may not contain the '..' path or start with '..'. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional field specify whether the Secret or its key must be defined @@ -3742,78 +5934,125 @@ pub struct MattermostVolumesProjectedSourcesSecret { pub struct MattermostVolumesProjectedSourcesSecretItems { /// key is the key to project. pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// mode is Optional: mode bits used to set permissions on this file. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + /// path is the relative path of the file to map the key to. + /// May not be an absolute path. + /// May not contain the path element '..'. + /// May not start with the string '..'. pub path: String, } /// serviceAccountToken is information about the serviceAccountToken data to project #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesProjectedSourcesServiceAccountToken { - /// audience is the intended audience of the token. A recipient of a token must identify itself with an identifier specified in the audience of the token, and otherwise should reject the token. The audience defaults to the identifier of the apiserver. + /// audience is the intended audience of the token. A recipient of a token + /// must identify itself with an identifier specified in the audience of the + /// token, and otherwise should reject the token. The audience defaults to the + /// identifier of the apiserver. #[serde(default, skip_serializing_if = "Option::is_none")] pub audience: Option, - /// expirationSeconds is the requested duration of validity of the service account token. As the token approaches expiration, the kubelet volume plugin will proactively rotate the service account token. The kubelet will start trying to rotate the token if the token is older than 80 percent of its time to live or if the token is older than 24 hours.Defaults to 1 hour and must be at least 10 minutes. + /// expirationSeconds is the requested duration of validity of the service + /// account token. As the token approaches expiration, the kubelet volume + /// plugin will proactively rotate the service account token. The kubelet will + /// start trying to rotate the token if the token is older than 80 percent of + /// its time to live or if the token is older than 24 hours.Defaults to 1 hour + /// and must be at least 10 minutes. #[serde(default, skip_serializing_if = "Option::is_none", rename = "expirationSeconds")] pub expiration_seconds: Option, - /// path is the path relative to the mount point of the file to project the token into. + /// path is the path relative to the mount point of the file to project the + /// token into. pub path: String, } /// quobyte represents a Quobyte mount on the host that shares a pod's lifetime #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesQuobyte { - /// group to map volume access to Default is no group + /// group to map volume access to + /// Default is no group #[serde(default, skip_serializing_if = "Option::is_none")] pub group: Option, - /// readOnly here will force the Quobyte volume to be mounted with read-only permissions. Defaults to false. + /// readOnly here will force the Quobyte volume to be mounted with read-only permissions. + /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// registry represents a single or multiple Quobyte Registry services specified as a string as host:port pair (multiple entries are separated with commas) which acts as the central registry for volumes + /// registry represents a single or multiple Quobyte Registry services + /// specified as a string as host:port pair (multiple entries are separated with commas) + /// which acts as the central registry for volumes pub registry: String, - /// tenant owning the given Quobyte volume in the Backend Used with dynamically provisioned Quobyte volumes, value is set by the plugin + /// tenant owning the given Quobyte volume in the Backend + /// Used with dynamically provisioned Quobyte volumes, value is set by the plugin #[serde(default, skip_serializing_if = "Option::is_none")] pub tenant: Option, - /// user to map volume access to Defaults to serivceaccount user + /// user to map volume access to + /// Defaults to serivceaccount user #[serde(default, skip_serializing_if = "Option::is_none")] pub user: Option, /// volume is a string that references an already created Quobyte volume by name. pub volume: String, } -/// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. More info: https://examples.k8s.io/volumes/rbd/README.md +/// rbd represents a Rados Block Device mount on the host that shares a pod's lifetime. +/// More info: https://examples.k8s.io/volumes/rbd/README.md #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesRbd { - /// fsType is the filesystem type of the volume that you want to mount. Tip: Ensure that the filesystem type is supported by the host operating system. Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd TODO: how do we prevent errors in the filesystem from compromising the machine + /// fsType is the filesystem type of the volume that you want to mount. + /// Tip: Ensure that the filesystem type is supported by the host operating system. + /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// image is the rados image name. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// image is the rados image name. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it pub image: String, - /// keyring is the path to key ring for RBDUser. Default is /etc/ceph/keyring. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// keyring is the path to key ring for RBDUser. + /// Default is /etc/ceph/keyring. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none")] pub keyring: Option, - /// monitors is a collection of Ceph monitors. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// monitors is a collection of Ceph monitors. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it pub monitors: Vec, - /// pool is the rados pool name. Default is rbd. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// pool is the rados pool name. + /// Default is rbd. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none")] pub pool: Option, - /// readOnly here will force the ReadOnly setting in VolumeMounts. Defaults to false. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// readOnly here will force the ReadOnly setting in VolumeMounts. + /// Defaults to false. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// secretRef is name of the authentication secret for RBDUser. If provided + /// overrides keyring. + /// Default is nil. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, - /// user is the rados user name. Default is admin. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it + /// user is the rados user name. + /// Default is admin. + /// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[serde(default, skip_serializing_if = "Option::is_none")] pub user: Option, } -/// secretRef is name of the authentication secret for RBDUser. If provided overrides keyring. Default is nil. More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it +/// secretRef is name of the authentication secret for RBDUser. If provided +/// overrides keyring. +/// Default is nil. +/// More info: https://examples.k8s.io/volumes/rbd/README.md#how-to-use-it #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesRbdSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3821,7 +6060,10 @@ pub struct MattermostVolumesRbdSecretRef { /// scaleIO represents a ScaleIO persistent volume attached and mounted on Kubernetes nodes. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesScaleIo { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Default is "xfs". + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". + /// Default is "xfs". #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// gateway is the host address of the ScaleIO API Gateway. @@ -3829,16 +6071,19 @@ pub struct MattermostVolumesScaleIo { /// protectionDomain is the name of the ScaleIO Protection Domain for the configured storage. #[serde(default, skip_serializing_if = "Option::is_none", rename = "protectionDomain")] pub protection_domain: Option, - /// readOnly Defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly Defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. + /// secretRef references to the secret for ScaleIO user and other + /// sensitive information. If this is not provided, Login operation will fail. #[serde(rename = "secretRef")] pub secret_ref: MattermostVolumesScaleIoSecretRef, /// sslEnabled Flag enable/disable SSL communication with Gateway, default false #[serde(default, skip_serializing_if = "Option::is_none", rename = "sslEnabled")] pub ssl_enabled: Option, - /// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. Default is ThinProvisioned. + /// storageMode indicates whether the storage for a volume should be ThickProvisioned or ThinProvisioned. + /// Default is ThinProvisioned. #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageMode")] pub storage_mode: Option, /// storagePool is the ScaleIO Storage Pool associated with the protection domain. @@ -3846,32 +6091,52 @@ pub struct MattermostVolumesScaleIo { pub storage_pool: Option, /// system is the name of the storage system as configured in ScaleIO. pub system: String, - /// volumeName is the name of a volume already created in the ScaleIO system that is associated with this volume source. + /// volumeName is the name of a volume already created in the ScaleIO system + /// that is associated with this volume source. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] pub volume_name: Option, } -/// secretRef references to the secret for ScaleIO user and other sensitive information. If this is not provided, Login operation will fail. +/// secretRef references to the secret for ScaleIO user and other +/// sensitive information. If this is not provided, Login operation will fail. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesScaleIoSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } -/// secret represents a secret that should populate this volume. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret +/// secret represents a secret that should populate this volume. +/// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesSecret { - /// defaultMode is Optional: mode bits used to set permissions on created files by default. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. Defaults to 0644. Directories within the path are not affected by this setting. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// defaultMode is Optional: mode bits used to set permissions on created files by default. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values + /// for mode bits. Defaults to 0644. + /// Directories within the path are not affected by this setting. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] pub default_mode: Option, - /// items If unspecified, each key-value pair in the Data field of the referenced Secret will be projected into the volume as a file whose name is the key and content is the value. If specified, the listed keys will be projected into the specified paths, and unlisted keys will not be present. If a key is specified which is not present in the Secret, the volume setup will error unless it is marked optional. Paths must be relative and may not contain the '..' path or start with '..'. + /// items If unspecified, each key-value pair in the Data field of the referenced + /// Secret will be projected into the volume as a file whose name is the + /// key and content is the value. If specified, the listed keys will be + /// projected into the specified paths, and unlisted keys will not be + /// present. If a key is specified which is not present in the Secret, + /// the volume setup will error unless it is marked optional. Paths must be + /// relative and may not contain the '..' path or start with '..'. #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, /// optional field specify whether the Secret or its keys must be defined #[serde(default, skip_serializing_if = "Option::is_none")] pub optional: Option, - /// secretName is the name of the secret in the pod's namespace to use. More info: https://kubernetes.io/docs/concepts/storage/volumes#secret + /// secretName is the name of the secret in the pod's namespace to use. + /// More info: https://kubernetes.io/docs/concepts/storage/volumes#secret #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretName")] pub secret_name: Option, } @@ -3881,37 +6146,60 @@ pub struct MattermostVolumesSecret { pub struct MattermostVolumesSecretItems { /// key is the key to project. pub key: String, - /// mode is Optional: mode bits used to set permissions on this file. Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. If not specified, the volume defaultMode will be used. This might be in conflict with other options that affect the file mode, like fsGroup, and the result can be other mode bits set. + /// mode is Optional: mode bits used to set permissions on this file. + /// Must be an octal value between 0000 and 0777 or a decimal value between 0 and 511. + /// YAML accepts both octal and decimal values, JSON requires decimal values for mode bits. + /// If not specified, the volume defaultMode will be used. + /// This might be in conflict with other options that affect the file + /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none")] pub mode: Option, - /// path is the relative path of the file to map the key to. May not be an absolute path. May not contain the path element '..'. May not start with the string '..'. + /// path is the relative path of the file to map the key to. + /// May not be an absolute path. + /// May not contain the path element '..'. + /// May not start with the string '..'. pub path: String, } /// storageOS represents a StorageOS volume attached and mounted on Kubernetes nodes. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesStorageos { - /// fsType is the filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// fsType is the filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, - /// readOnly defaults to false (read/write). ReadOnly here will force the ReadOnly setting in VolumeMounts. + /// readOnly defaults to false (read/write). ReadOnly here will force + /// the ReadOnly setting in VolumeMounts. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, - /// secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. + /// secretRef specifies the secret to use for obtaining the StorageOS API + /// credentials. If not specified, default values will be attempted. #[serde(default, skip_serializing_if = "Option::is_none", rename = "secretRef")] pub secret_ref: Option, - /// volumeName is the human-readable name of the StorageOS volume. Volume names are only unique within a namespace. + /// volumeName is the human-readable name of the StorageOS volume. Volume + /// names are only unique within a namespace. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeName")] pub volume_name: Option, - /// volumeNamespace specifies the scope of the volume within StorageOS. If no namespace is specified then the Pod's namespace will be used. This allows the Kubernetes name scoping to be mirrored within StorageOS for tighter integration. Set VolumeName to any name to override the default behaviour. Set to "default" if you are not using namespaces within StorageOS. Namespaces that do not pre-exist within StorageOS will be created. + /// volumeNamespace specifies the scope of the volume within StorageOS. If no + /// namespace is specified then the Pod's namespace will be used. This allows the + /// Kubernetes name scoping to be mirrored within StorageOS for tighter integration. + /// Set VolumeName to any name to override the default behaviour. + /// Set to "default" if you are not using namespaces within StorageOS. + /// Namespaces that do not pre-exist within StorageOS will be created. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeNamespace")] pub volume_namespace: Option, } -/// secretRef specifies the secret to use for obtaining the StorageOS API credentials. If not specified, default values will be attempted. +/// secretRef specifies the secret to use for obtaining the StorageOS API +/// credentials. If not specified, default values will be attempted. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesStorageosSecretRef { - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3919,7 +6207,9 @@ pub struct MattermostVolumesStorageosSecretRef { /// vsphereVolume represents a vSphere volume attached and mounted on kubelets host machine #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct MattermostVolumesVsphereVolume { - /// fsType is filesystem type to mount. Must be a filesystem type supported by the host operating system. Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. + /// fsType is filesystem type to mount. + /// Must be a filesystem type supported by the host operating system. + /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// storagePolicyID is the storage Policy Based Management (SPBM) profile ID associated with the StoragePolicyName. @@ -3957,7 +6247,8 @@ pub struct MattermostStatus { /// Represents the running state of the Mattermost instance #[serde(default, skip_serializing_if = "Option::is_none")] pub state: Option, - /// Total number of non-terminated pods targeted by this Mattermost deployment that are running with the desired image. + /// Total number of non-terminated pods targeted by this Mattermost deployment + /// that are running with the desired image. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedReplicas")] pub updated_replicas: Option, /// The version currently running in the Mattermost instance diff --git a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddressclaims.rs b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddressclaims.rs index 8971f67e8..69b0975bf 100644 --- a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddressclaims.rs +++ b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddressclaims.rs @@ -19,12 +19,12 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct IPAddressClaimSpec { - /// PoolRef is a reference to the pool from which an IP address should be created. + /// poolRef is a reference to the pool from which an IP address should be created. #[serde(rename = "poolRef")] pub pool_ref: IPAddressClaimPoolRef, } -/// PoolRef is a reference to the pool from which an IP address should be created. +/// poolRef is a reference to the pool from which an IP address should be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimPoolRef { /// APIGroup is the group for the resource being referenced. @@ -41,15 +41,15 @@ pub struct IPAddressClaimPoolRef { /// IPAddressClaimStatus is the observed status of a IPAddressClaim. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimStatus { - /// AddressRef is a reference to the address that was created for this claim. + /// addressRef is a reference to the address that was created for this claim. #[serde(default, skip_serializing_if = "Option::is_none", rename = "addressRef")] pub address_ref: Option, - /// Conditions summarises the current state of the IPAddressClaim + /// conditions summarises the current state of the IPAddressClaim #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, } -/// AddressRef is a reference to the address that was created for this claim. +/// addressRef is a reference to the address that was created for this claim. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimStatusAddressRef { /// Name of the referent. diff --git a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddresses.rs b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddresses.rs index f4ae535e7..e8887d9a5 100644 --- a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddresses.rs +++ b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1alpha1/ipaddresses.rs @@ -17,22 +17,22 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct IPAddressSpec { - /// Address is the IP address. + /// address is the IP address. pub address: String, - /// ClaimRef is a reference to the claim this IPAddress was created for. + /// claimRef is a reference to the claim this IPAddress was created for. #[serde(rename = "claimRef")] pub claim_ref: IPAddressClaimRef, - /// Gateway is the network gateway of the network the address is from. + /// gateway is the network gateway of the network the address is from. #[serde(default, skip_serializing_if = "Option::is_none")] pub gateway: Option, - /// PoolRef is a reference to the pool that this IPAddress was created from. + /// poolRef is a reference to the pool that this IPAddress was created from. #[serde(rename = "poolRef")] pub pool_ref: IPAddressPoolRef, - /// Prefix is the prefix of the address. + /// prefix is the prefix of the address. pub prefix: i64, } -/// ClaimRef is a reference to the claim this IPAddress was created for. +/// claimRef is a reference to the claim this IPAddress was created for. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimRef { /// Name of the referent. @@ -44,7 +44,7 @@ pub struct IPAddressClaimRef { pub name: Option, } -/// PoolRef is a reference to the pool that this IPAddress was created from. +/// poolRef is a reference to the pool that this IPAddress was created from. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressPoolRef { /// APIGroup is the group for the resource being referenced. diff --git a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddressclaims.rs b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddressclaims.rs index 78279debb..2ee3556c8 100644 --- a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddressclaims.rs +++ b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddressclaims.rs @@ -19,15 +19,15 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct IPAddressClaimSpec { - /// ClusterName is the name of the Cluster this object belongs to. + /// clusterName is the name of the Cluster this object belongs to. #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterName")] pub cluster_name: Option, - /// PoolRef is a reference to the pool from which an IP address should be created. + /// poolRef is a reference to the pool from which an IP address should be created. #[serde(rename = "poolRef")] pub pool_ref: IPAddressClaimPoolRef, } -/// PoolRef is a reference to the pool from which an IP address should be created. +/// poolRef is a reference to the pool from which an IP address should be created. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimPoolRef { /// APIGroup is the group for the resource being referenced. @@ -44,15 +44,15 @@ pub struct IPAddressClaimPoolRef { /// IPAddressClaimStatus is the observed status of a IPAddressClaim. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimStatus { - /// AddressRef is a reference to the address that was created for this claim. + /// addressRef is a reference to the address that was created for this claim. #[serde(default, skip_serializing_if = "Option::is_none", rename = "addressRef")] pub address_ref: Option, - /// Conditions summarises the current state of the IPAddressClaim + /// conditions summarises the current state of the IPAddressClaim #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, } -/// AddressRef is a reference to the address that was created for this claim. +/// addressRef is a reference to the address that was created for this claim. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimStatusAddressRef { /// Name of the referent. diff --git a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddresses.rs b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddresses.rs index 65aec85f5..593ad48b2 100644 --- a/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddresses.rs +++ b/kube-custom-resources-rs/src/ipam_cluster_x_k8s_io/v1beta1/ipaddresses.rs @@ -17,22 +17,22 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct IPAddressSpec { - /// Address is the IP address. + /// address is the IP address. pub address: String, - /// ClaimRef is a reference to the claim this IPAddress was created for. + /// claimRef is a reference to the claim this IPAddress was created for. #[serde(rename = "claimRef")] pub claim_ref: IPAddressClaimRef, - /// Gateway is the network gateway of the network the address is from. + /// gateway is the network gateway of the network the address is from. #[serde(default, skip_serializing_if = "Option::is_none")] pub gateway: Option, - /// PoolRef is a reference to the pool that this IPAddress was created from. + /// poolRef is a reference to the pool that this IPAddress was created from. #[serde(rename = "poolRef")] pub pool_ref: IPAddressPoolRef, - /// Prefix is the prefix of the address. + /// prefix is the prefix of the address. pub prefix: i64, } -/// ClaimRef is a reference to the claim this IPAddress was created for. +/// claimRef is a reference to the claim this IPAddress was created for. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressClaimRef { /// Name of the referent. @@ -44,7 +44,7 @@ pub struct IPAddressClaimRef { pub name: Option, } -/// PoolRef is a reference to the pool that this IPAddress was created from. +/// poolRef is a reference to the pool that this IPAddress was created from. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IPAddressPoolRef { /// APIGroup is the group for the resource being referenced. diff --git a/kube-custom-resources-rs/src/k8gb_absa_oss/v1beta1/gslbs.rs b/kube-custom-resources-rs/src/k8gb_absa_oss/v1beta1/gslbs.rs index 8ff03e00e..dec33eb1d 100644 --- a/kube-custom-resources-rs/src/k8gb_absa_oss/v1beta1/gslbs.rs +++ b/kube-custom-resources-rs/src/k8gb_absa_oss/v1beta1/gslbs.rs @@ -143,7 +143,6 @@ pub struct GslbIngressRules { /// IngressRuleValue. If the host is unspecified, the Ingress routes all /// traffic based on the specified IngressRuleValue. /// - /// /// Host can be "precise" which is a domain name without the terminating dot of /// a network host (e.g. "foo.bar.com") or "wildcard", which is a domain name /// prefixed with a single wildcard label (e.g. "*.foo.com"). diff --git a/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledjobs.rs b/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledjobs.rs index c91b27c34..f5257012f 100644 --- a/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledjobs.rs +++ b/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledjobs.rs @@ -73,12 +73,10 @@ pub struct ScaledJobJobTargetRef { /// completionMode specifies how Pod completions are tracked. It can be /// `NonIndexed` (default) or `Indexed`. /// - /// /// `NonIndexed` means that the Job is considered complete when there have /// been .spec.completions successfully completed Pods. Each Pod completion is /// homologous to each other. /// - /// /// `Indexed` means that the Pods of a /// Job get an associated completion index from 0 to (.spec.completions - 1), /// available in the annotation batch.kubernetes.io/job-completion-index. @@ -90,7 +88,6 @@ pub struct ScaledJobJobTargetRef { /// `$(job-name)-$(index)-$(random-string)`, /// the Pod hostname takes the form `$(job-name)-$(index)`. /// - /// /// More completion modes can be added in the future. /// If the Job controller observes a mode that it doesn't recognize, which /// is possible during upgrades due to version skew, the controller @@ -105,6 +102,20 @@ pub struct ScaledJobJobTargetRef { /// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ #[serde(default, skip_serializing_if = "Option::is_none")] pub completions: Option, + /// ManagedBy field indicates the controller that manages a Job. The k8s Job + /// controller reconciles jobs which don't have this field at all or the field + /// value is the reserved string `kubernetes.io/job-controller`, but skips + /// reconciling Jobs with a custom value for this field. + /// The value must be a valid domain-prefixed path (e.g. acme.io/foo) - + /// all characters before the first "/" must be a valid subdomain as defined + /// by RFC 1123. All characters trailing the first "/" must be valid HTTP Path + /// characters as defined by RFC 3986. The value cannot exceed 63 characters. + /// This field is immutable. + /// + /// This field is alpha-level. The job controller accepts setting the field + /// when the feature gate JobManagedBy is enabled (disabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "managedBy")] + pub managed_by: Option, /// manualSelector controls generation of pod labels and pod selectors. /// Leave `manualSelector` unset unless you are certain what you are doing. /// When false or unset, the system pick labels unique to this job @@ -143,10 +154,6 @@ pub struct ScaledJobJobTargetRef { /// represented by the jobs's .status.failed field, is incremented and it is /// checked against the backoffLimit. This field cannot be used in combination /// with restartPolicy=OnFailure. - /// - /// - /// This field is beta-level. It can be used when the `JobPodFailurePolicy` - /// feature gate is enabled (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "podFailurePolicy")] pub pod_failure_policy: Option, /// podReplacementPolicy specifies when to create replacement Pods. @@ -156,7 +163,6 @@ pub struct ScaledJobJobTargetRef { /// - Failed means to wait until a previously created Pod is fully terminated (has phase /// Failed or Succeeded) before creating a replacement Pod. /// - /// /// When using podFailurePolicy, Failed is the the only allowed value. /// TerminatingOrFailed and Failed are allowed values when podFailurePolicy is not in use. /// This is an beta field. To use this, enable the JobPodReplacementPolicy feature toggle. @@ -168,6 +174,16 @@ pub struct ScaledJobJobTargetRef { /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, + /// successPolicy specifies the policy when the Job can be declared as succeeded. + /// If empty, the default behavior applies - the Job is declared as succeeded + /// only when the number of succeeded pods equals to the completions. + /// When the field is specified, it must be immutable and works only for the Indexed Jobs. + /// Once the Job meets the SuccessPolicy, the lingering pods are terminated. + /// + /// This field is beta-level. To use this field, you must enable the + /// `JobSuccessPolicy` feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "successPolicy")] + pub success_policy: Option, /// suspend specifies whether the Job controller should create Pods or not. If /// a Job is created with suspend set to true, no Pods are created by the Job /// controller. If a Job is suspended after creation (i.e. the flag goes from @@ -199,10 +215,6 @@ pub struct ScaledJobJobTargetRef { /// represented by the jobs's .status.failed field, is incremented and it is /// checked against the backoffLimit. This field cannot be used in combination /// with restartPolicy=OnFailure. -/// -/// -/// This field is beta-level. It can be used when the `JobPodFailurePolicy` -/// feature gate is enabled (enabled by default). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefPodFailurePolicy { /// A list of pod failure policy rules. The rules are evaluated in order. @@ -220,7 +232,6 @@ pub struct ScaledJobJobTargetRefPodFailurePolicyRules { /// Specifies the action taken on a pod failure when the requirements are satisfied. /// Possible values are: /// - /// /// - FailJob: indicates that the pod's job is marked as Failed and all /// running pods are terminated. /// - FailIndex: indicates that the pod's index is marked as Failed and will @@ -257,7 +268,6 @@ pub struct ScaledJobJobTargetRefPodFailurePolicyRulesOnExitCodes { /// specified values. Containers completed with success (exit code 0) are /// excluded from the requirement check. Possible values are: /// - /// /// - In: the requirement is satisfied if at least one container exit code /// (might be multiple if there are multiple containers not restricted /// by the 'containerName' field) is in the set of specified values. @@ -321,6 +331,56 @@ pub struct ScaledJobJobTargetRefSelectorMatchExpressions { pub values: Option>, } +/// successPolicy specifies the policy when the Job can be declared as succeeded. +/// If empty, the default behavior applies - the Job is declared as succeeded +/// only when the number of succeeded pods equals to the completions. +/// When the field is specified, it must be immutable and works only for the Indexed Jobs. +/// Once the Job meets the SuccessPolicy, the lingering pods are terminated. +/// +/// This field is beta-level. To use this field, you must enable the +/// `JobSuccessPolicy` feature gate (enabled by default). +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefSuccessPolicy { + /// rules represents the list of alternative rules for the declaring the Jobs + /// as successful before `.status.succeeded >= .spec.completions`. Once any of the rules are met, + /// the "SucceededCriteriaMet" condition is added, and the lingering pods are removed. + /// The terminal state for such a Job has the "Complete" condition. + /// Additionally, these rules are evaluated in order; Once the Job meets one of the rules, + /// other rules are ignored. At most 20 elements are allowed. + pub rules: Vec, +} + +/// SuccessPolicyRule describes rule for declaring a Job as succeeded. +/// Each rule must have at least one of the "succeededIndexes" or "succeededCount" specified. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefSuccessPolicyRules { + /// succeededCount specifies the minimal required size of the actual set of the succeeded indexes + /// for the Job. When succeededCount is used along with succeededIndexes, the check is + /// constrained only to the set of indexes specified by succeededIndexes. + /// For example, given that succeededIndexes is "1-4", succeededCount is "3", + /// and completed indexes are "1", "3", and "5", the Job isn't declared as succeeded + /// because only "1" and "3" indexes are considered in that rules. + /// When this field is null, this doesn't default to any value and + /// is never evaluated at any time. + /// When specified it needs to be a positive integer. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "succeededCount")] + pub succeeded_count: Option, + /// succeededIndexes specifies the set of indexes + /// which need to be contained in the actual set of the succeeded indexes for the Job. + /// The list of indexes must be within 0 to ".spec.completions-1" and + /// must not contain duplicates. At least one element is required. + /// The indexes are represented as intervals separated by commas. + /// The intervals can be a decimal integer or a pair of decimal integers separated by a hyphen. + /// The number are listed in represented by the first and last element of the series, + /// separated by a hyphen. + /// For example, if the completed indexes are 1, 3, 4, 5 and 7, they are + /// represented as "1,3-5,7". + /// When this field is null, this field doesn't default to any value + /// and is never evaluated at any time. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "succeededIndexes")] + pub succeeded_indexes: Option, +} + /// Describes the pod that will be created when executing a job. /// The only allowed template.spec.restartPolicy values are "Never" or "OnFailure". /// More info: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ @@ -340,6 +400,16 @@ pub struct ScaledJobJobTargetRefTemplate { /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, } /// Specification of the desired behavior of the pod. @@ -387,7 +457,7 @@ pub struct ScaledJobJobTargetRefTemplateSpec { #[serde(default, skip_serializing_if = "Option::is_none", rename = "ephemeralContainers")] pub ephemeral_containers: Option>, /// HostAliases is an optional list of hosts and IPs that will be injected into the pod's hosts - /// file if specified. This is only valid for non-hostNetwork pods. + /// file if specified. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostAliases")] pub host_aliases: Option>, /// Use the host's ipc namespace. @@ -438,9 +508,11 @@ pub struct ScaledJobJobTargetRefTemplateSpec { /// More info: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "initContainers")] pub init_containers: Option>, - /// NodeName is a request to schedule this pod onto a specific node. If it is non-empty, - /// the scheduler simply schedules this pod onto that node, assuming that it fits resource - /// requirements. + /// NodeName indicates in which node this pod is scheduled. + /// If empty, this pod is a candidate for scheduling by the scheduler defined in schedulerName. + /// Once this field is set, the kubelet for this node becomes responsible for the lifecycle of this pod. + /// This field should not be used to express a desire for the pod to be scheduled on a specific node. + /// https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeName")] pub node_name: Option, /// NodeSelector is a selector which must be true for the pod to fit on a node. @@ -451,15 +523,14 @@ pub struct ScaledJobJobTargetRefTemplateSpec { /// Specifies the OS of the containers in the pod. /// Some pod and container fields are restricted if this is set. /// - /// /// If the OS field is set to linux, the following fields must be unset: /// -securityContext.windowsOptions /// - /// /// If the OS field is set to windows, following fields must be unset: /// - spec.hostPID /// - spec.hostIPC /// - spec.hostUsers + /// - spec.securityContext.appArmorProfile /// - spec.securityContext.seLinuxOptions /// - spec.securityContext.seccompProfile /// - spec.securityContext.fsGroup @@ -469,6 +540,8 @@ pub struct ScaledJobJobTargetRefTemplateSpec { /// - spec.securityContext.runAsUser /// - spec.securityContext.runAsGroup /// - spec.securityContext.supplementalGroups + /// - spec.securityContext.supplementalGroupsPolicy + /// - spec.containers[*].securityContext.appArmorProfile /// - spec.containers[*].securityContext.seLinuxOptions /// - spec.containers[*].securityContext.seccompProfile /// - spec.containers[*].securityContext.capabilities @@ -520,11 +593,9 @@ pub struct ScaledJobJobTargetRefTemplateSpec { /// will be made available to those containers which consume them /// by name. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceClaims")] pub resource_claims: Option>, @@ -549,18 +620,14 @@ pub struct ScaledJobJobTargetRefTemplateSpec { /// If schedulingGates is not empty, the pod will stay in the SchedulingGated state and the /// scheduler will not attempt to schedule the pod. /// - /// /// SchedulingGates can only be set at pod creation time, and be removed only afterwards. - /// - /// - /// This is a beta feature enabled by the PodSchedulingReadiness feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "schedulingGates")] pub scheduling_gates: Option>, /// SecurityContext holds pod-level security attributes and common container settings. /// Optional: Defaults to empty. See type description for default values of each field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "securityContext")] pub security_context: Option, - /// DeprecatedServiceAccount is a depreciated alias for ServiceAccountName. + /// DeprecatedServiceAccount is a deprecated alias for ServiceAccountName. /// Deprecated: Use serviceAccountName instead. #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAccount")] pub service_account: Option, @@ -810,24 +877,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecAffinityPodAffinityPreferredDuringSc pub label_selector: Option, /// MatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, /// MismatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. - /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. @@ -931,24 +998,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecAffinityPodAffinityRequiredDuringSch pub label_selector: Option, /// MatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, /// MismatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. - /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. @@ -1083,24 +1150,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecAffinityPodAntiAffinityPreferredDuri pub label_selector: Option, /// MatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, /// MismatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. - /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. @@ -1204,24 +1271,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecAffinityPodAntiAffinityRequiredDurin pub label_selector: Option, /// MatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. - /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, /// MismatchLabelKeys is a set of pod label keys to select which pods will /// be taken into consideration. The keys are used to lookup values from the - /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` /// to select the group of existing pods which pods will be taken into consideration /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming /// pod labels will be ignored. The default value is empty. - /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. - /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. - /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, /// A label query over the set of namespaces that the term applies to. @@ -1524,8 +1591,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvValueFromConfigMapKeyRe /// The key to select. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -1565,8 +1634,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -1592,8 +1663,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvFrom { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvFromConfigMapRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap must be defined @@ -1605,8 +1678,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvFromConfigMapRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecContainersEnvFromSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret must be defined @@ -1891,7 +1966,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersLivenessProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -2042,7 +2116,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersReadinessProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -2114,11 +2187,9 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersResources { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -2141,6 +2212,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersResourcesClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// SecurityContext defines the security options the container should be run with. @@ -2157,6 +2233,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersSecurityContext { /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -2169,7 +2250,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersSecurityContext { #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, /// procMount denotes the type of proc mount to use for the containers. - /// The default is DefaultProcMount which uses the container runtime defaults for + /// The default value is Default which uses the container runtime defaults for /// readonly paths and masked paths. /// This requires the ProcMountType feature flag to be enabled. /// Note that this field cannot be set when spec.os.name is windows. @@ -2223,6 +2304,26 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersSecurityContext { pub windows_options: Option, } +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefTemplateSpecContainersSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -2272,7 +2373,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersSecurityContextSeccompProf /// type indicates which kind of seccomp profile will be applied. /// Valid options are: /// - /// /// Localhost - a profile defined in a file on the node should be used. /// RuntimeDefault - the container runtime default profile should be used. /// Unconfined - no profile should be applied. @@ -2384,7 +2484,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersStartupProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -2456,6 +2555,8 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersVolumeMounts { /// to container and the other way around. /// When not set, MountPropagationNone is used. /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. @@ -2464,6 +2565,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecContainersVolumeMounts { /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, /// Path within the volume from which the container's volume should be mounted. /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] @@ -2515,7 +2634,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecDnsConfigOptions { /// removed or restarted. The kubelet may evict a Pod if an ephemeral container causes the /// Pod to exceed its resource allocation. /// -/// /// To add an ephemeral container, use the ephemeralcontainers subresource of an existing /// Pod. Ephemeral containers may not be removed or restarted. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -2616,7 +2734,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainers { /// The ephemeral container will be run in the namespaces (IPC, PID, etc) of this container. /// If not set then the ephemeral container uses the namespaces configured in the Pod spec. /// - /// /// The container runtime must implement support for this feature. If the runtime does not /// support namespace targeting then the result of setting this field is undefined. #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetContainerName")] @@ -2704,8 +2821,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvValueFromConfi /// The key to select. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -2745,8 +2864,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvValueFromSecre /// The key of the secret to select from. Must be a valid secret key. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -2772,8 +2893,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvFrom { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvFromConfigMapRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap must be defined @@ -2785,8 +2908,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvFromConfigMapR #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersEnvFromSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret must be defined @@ -3067,7 +3192,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersLivenessProbeGrpc /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -3215,7 +3339,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersReadinessProbeGrp /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -3286,11 +3409,9 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersResources { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -3313,6 +3434,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersResourcesClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// Optional: SecurityContext defines the security options the ephemeral container should be run with. @@ -3328,6 +3454,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersSecurityContext { /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -3340,7 +3471,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersSecurityContext { #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, /// procMount denotes the type of proc mount to use for the containers. - /// The default is DefaultProcMount which uses the container runtime defaults for + /// The default value is Default which uses the container runtime defaults for /// readonly paths and masked paths. /// This requires the ProcMountType feature flag to be enabled. /// Note that this field cannot be set when spec.os.name is windows. @@ -3394,6 +3525,26 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersSecurityContext { pub windows_options: Option, } +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -3443,7 +3594,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersSecurityContextSe /// type indicates which kind of seccomp profile will be applied. /// Valid options are: /// - /// /// Localhost - a profile defined in a file on the node should be used. /// RuntimeDefault - the container runtime default profile should be used. /// Unconfined - no profile should be applied. @@ -3549,7 +3699,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersStartupProbeGrpc /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -3621,6 +3770,8 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersVolumeMounts { /// to container and the other way around. /// When not set, MountPropagationNone is used. /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. @@ -3629,6 +3780,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecEphemeralContainersVolumeMounts { /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, /// Path within the volume from which the container's volume should be mounted. /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] @@ -3649,8 +3818,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecHostAliases { #[serde(default, skip_serializing_if = "Option::is_none")] pub hostnames: Option>, /// IP address of the host file entry. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ip: Option, + pub ip: String, } /// LocalObjectReference contains enough information to let you locate the @@ -3658,8 +3826,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecHostAliases { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecImagePullSecrets { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -3877,8 +4047,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvValueFromConfigMapK /// The key to select. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -3918,8 +4090,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvValueFromSecretKeyR /// The key of the secret to select from. Must be a valid secret key. pub key: String, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -3945,8 +4119,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvFrom { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvFromConfigMapRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap must be defined @@ -3958,8 +4134,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvFromConfigMapRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecInitContainersEnvFromSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret must be defined @@ -4244,7 +4422,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersLivenessProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -4395,7 +4572,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersReadinessProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -4467,11 +4643,9 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersResources { /// Claims lists the names of resources, defined in spec.resourceClaims, /// that are used by this container. /// - /// /// This is an alpha field and requires enabling the /// DynamicResourceAllocation feature gate. /// - /// /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, @@ -4494,6 +4668,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersResourcesClaims { /// the Pod where this field is used. It makes that resource available /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// SecurityContext defines the security options the container should be run with. @@ -4510,6 +4689,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersSecurityContext { /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "allowPrivilegeEscalation")] pub allow_privilege_escalation: Option, + /// appArmorProfile is the AppArmor options to use by this container. If set, this profile + /// overrides the pod's appArmorProfile. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -4522,7 +4706,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersSecurityContext { #[serde(default, skip_serializing_if = "Option::is_none")] pub privileged: Option, /// procMount denotes the type of proc mount to use for the containers. - /// The default is DefaultProcMount which uses the container runtime defaults for + /// The default value is Default which uses the container runtime defaults for /// readonly paths and masked paths. /// This requires the ProcMountType feature flag to be enabled. /// Note that this field cannot be set when spec.os.name is windows. @@ -4576,6 +4760,26 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersSecurityContext { pub windows_options: Option, } +/// appArmorProfile is the AppArmor options to use by this container. If set, this profile +/// overrides the pod's appArmorProfile. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefTemplateSpecInitContainersSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + /// The capabilities to add/drop when running containers. /// Defaults to the default set of capabilities granted by the container runtime. /// Note that this field cannot be set when spec.os.name is windows. @@ -4625,7 +4829,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersSecurityContextSeccomp /// type indicates which kind of seccomp profile will be applied. /// Valid options are: /// - /// /// Localhost - a profile defined in a file on the node should be used. /// RuntimeDefault - the container runtime default profile should be used. /// Unconfined - no profile should be applied. @@ -4737,7 +4940,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersStartupProbeGrpc { /// Service is the name of the service to place in the gRPC HealthCheckRequest /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). /// - /// /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, @@ -4809,6 +5011,8 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersVolumeMounts { /// to container and the other way around. /// When not set, MountPropagationNone is used. /// This field is beta in 1.10. + /// When RecursiveReadOnly is set to IfPossible or to Enabled, MountPropagation must be None or unspecified + /// (which defaults to None). #[serde(default, skip_serializing_if = "Option::is_none", rename = "mountPropagation")] pub mount_propagation: Option, /// This must match the Name of a Volume. @@ -4817,6 +5021,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersVolumeMounts { /// Defaults to false. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readOnly")] pub read_only: Option, + /// RecursiveReadOnly specifies whether read-only mounts should be handled + /// recursively. + /// + /// If ReadOnly is false, this field has no meaning and must be unspecified. + /// + /// If ReadOnly is true, and this field is set to Disabled, the mount is not made + /// recursively read-only. If this field is set to IfPossible, the mount is made + /// recursively read-only, if it is supported by the container runtime. If this + /// field is set to Enabled, the mount is made recursively read-only if it is + /// supported by the container runtime, otherwise the pod will not be started and + /// an error will be generated to indicate the reason. + /// + /// If this field is set to IfPossible or Enabled, MountPropagation must be set to + /// None (or be unspecified, which defaults to None). + /// + /// If this field is not specified, it is treated as an equivalent of Disabled. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "recursiveReadOnly")] + pub recursive_read_only: Option, /// Path within the volume from which the container's volume should be mounted. /// Defaults to "" (volume's root). #[serde(default, skip_serializing_if = "Option::is_none", rename = "subPath")] @@ -4832,15 +5054,14 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersVolumeMounts { /// Specifies the OS of the containers in the pod. /// Some pod and container fields are restricted if this is set. /// -/// /// If the OS field is set to linux, the following fields must be unset: /// -securityContext.windowsOptions /// -/// /// If the OS field is set to windows, following fields must be unset: /// - spec.hostPID /// - spec.hostIPC /// - spec.hostUsers +/// - spec.securityContext.appArmorProfile /// - spec.securityContext.seLinuxOptions /// - spec.securityContext.seccompProfile /// - spec.securityContext.fsGroup @@ -4850,6 +5071,8 @@ pub struct ScaledJobJobTargetRefTemplateSpecInitContainersVolumeMounts { /// - spec.securityContext.runAsUser /// - spec.securityContext.runAsGroup /// - spec.securityContext.supplementalGroups +/// - spec.securityContext.supplementalGroupsPolicy +/// - spec.containers[*].securityContext.appArmorProfile /// - spec.containers[*].securityContext.seLinuxOptions /// - spec.containers[*].securityContext.seccompProfile /// - spec.containers[*].securityContext.capabilities @@ -4876,7 +5099,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecReadinessGates { pub condition_type: String, } -/// PodResourceClaim references exactly one ResourceClaim through a ClaimSource. +/// PodResourceClaim references exactly one ResourceClaim, either directly +/// or by naming a ResourceClaimTemplate which is then turned into a ResourceClaim +/// for the pod. +/// /// It adds a name to it that uniquely identifies the ResourceClaim inside the Pod. /// Containers that need access to the ResourceClaim reference it with this name. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -4884,32 +5110,28 @@ pub struct ScaledJobJobTargetRefTemplateSpecResourceClaims { /// Name uniquely identifies this resource claim inside the pod. /// This must be a DNS_LABEL. pub name: String, - /// Source describes where to find the ResourceClaim. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub source: Option, -} - -/// Source describes where to find the ResourceClaim. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct ScaledJobJobTargetRefTemplateSpecResourceClaimsSource { /// ResourceClaimName is the name of a ResourceClaim object in the same /// namespace as this pod. + /// + /// Exactly one of ResourceClaimName and ResourceClaimTemplateName must + /// be set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceClaimName")] pub resource_claim_name: Option, /// ResourceClaimTemplateName is the name of a ResourceClaimTemplate /// object in the same namespace as this pod. /// - /// /// The template will be used to create a new ResourceClaim, which will /// be bound to this pod. When this pod is deleted, the ResourceClaim /// will also be deleted. The pod name and resource name, along with a /// generated component, will be used to form a unique name for the /// ResourceClaim, which will be recorded in pod.status.resourceClaimStatuses. /// - /// /// This field is immutable and no changes will be made to the /// corresponding ResourceClaim by the control plane after creating the /// ResourceClaim. + /// + /// Exactly one of ResourceClaimName and ResourceClaimTemplateName must + /// be set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceClaimTemplateName")] pub resource_claim_template_name: Option, } @@ -4926,16 +5148,18 @@ pub struct ScaledJobJobTargetRefTemplateSpecSchedulingGates { /// Optional: Defaults to empty. See type description for default values of each field. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecSecurityContext { + /// appArmorProfile is the AppArmor options to use by the containers in this pod. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "appArmorProfile")] + pub app_armor_profile: Option, /// A special supplemental group that applies to all containers in a pod. /// Some volume types allow the Kubelet to change the ownership of that volume /// to be owned by the pod: /// - /// /// 1. The owning GID will be the FSGroup /// 2. The setgid bit is set (new files created in the volume will be owned by FSGroup) /// 3. The permission bits are OR'd with rw-rw---- /// - /// /// If unset, the Kubelet will not modify the ownership and permissions of any volume. /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsGroup")] @@ -4985,15 +5209,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecSecurityContext { /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "seccompProfile")] pub seccomp_profile: Option, - /// A list of groups applied to the first process run in each container, in addition - /// to the container's primary GID, the fsGroup (if specified), and group memberships - /// defined in the container image for the uid of the container process. If unspecified, - /// no additional groups are added to any container. Note that group memberships - /// defined in the container image for the uid of the container process are still effective, - /// even if they are not included in this list. + /// A list of groups applied to the first process run in each container, in + /// addition to the container's primary GID and fsGroup (if specified). If + /// the SupplementalGroupsPolicy feature is enabled, the + /// supplementalGroupsPolicy field determines whether these are in addition + /// to or instead of any group memberships defined in the container image. + /// If unspecified, no additional groups are added, though group memberships + /// defined in the container image may still be used, depending on the + /// supplementalGroupsPolicy field. /// Note that this field cannot be set when spec.os.name is windows. #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroups")] pub supplemental_groups: Option>, + /// Defines how supplemental groups of the first container processes are calculated. + /// Valid values are "Merge" and "Strict". If not specified, "Merge" is used. + /// (Alpha) Using the field requires the SupplementalGroupsPolicy feature gate to be enabled + /// and the container runtime must implement support for this feature. + /// Note that this field cannot be set when spec.os.name is windows. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "supplementalGroupsPolicy")] + pub supplemental_groups_policy: Option, /// Sysctls hold a list of namespaced sysctls used for the pod. Pods with unsupported /// sysctls (by the container runtime) might fail to launch. /// Note that this field cannot be set when spec.os.name is windows. @@ -5007,6 +5240,25 @@ pub struct ScaledJobJobTargetRefTemplateSpecSecurityContext { pub windows_options: Option, } +/// appArmorProfile is the AppArmor options to use by the containers in this pod. +/// Note that this field cannot be set when spec.os.name is windows. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefTemplateSpecSecurityContextAppArmorProfile { + /// localhostProfile indicates a profile loaded on the node that should be used. + /// The profile must be preconfigured on the node to work. + /// Must match the loaded name of the profile. + /// Must be set if and only if type is "Localhost". + #[serde(default, skip_serializing_if = "Option::is_none", rename = "localhostProfile")] + pub localhost_profile: Option, + /// type indicates which kind of AppArmor profile will be applied. + /// Valid options are: + /// Localhost - a profile pre-loaded on the node. + /// RuntimeDefault - the container runtime's default profile. + /// Unconfined - no AppArmor enforcement. + #[serde(rename = "type")] + pub r#type: String, +} + /// The SELinux context to be applied to all containers. /// If unspecified, the container runtime will allocate a random SELinux context for each /// container. May also be set in SecurityContext. If set in @@ -5042,7 +5294,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecSecurityContextSeccompProfile { /// type indicates which kind of seccomp profile will be applied. /// Valid options are: /// - /// /// Localhost - a profile defined in a file on the node should be used. /// RuntimeDefault - the container runtime default profile should be used. /// Unconfined - no profile should be applied. @@ -5134,7 +5385,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecTopologySpreadConstraints { /// Keys that don't exist in the incoming pod labels will /// be ignored. A null or empty list means only match against labelSelector. /// - /// /// This is a beta field and requires the MatchLabelKeysInPodTopologySpread feature gate to be enabled (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, @@ -5168,7 +5418,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecTopologySpreadConstraints { /// Valid values are integers greater than 0. /// When value is not nil, WhenUnsatisfiable must be DoNotSchedule. /// - /// /// For example, in a 3-zone cluster, MaxSkew is set to 2, MinDomains is set to 5 and pods with the same /// labelSelector spread as 2/2/2: /// | zone1 | zone2 | zone3 | @@ -5177,9 +5426,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecTopologySpreadConstraints { /// In this situation, new pod with the same labelSelector cannot be scheduled, /// because computed skew will be 3(3 - 0) if new Pod is scheduled to any of the three zones, /// it will violate MaxSkew. - /// - /// - /// This is a beta field and requires the MinDomainsInPodTopologySpread feature gate to be enabled (enabled by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "minDomains")] pub min_domains: Option, /// NodeAffinityPolicy indicates how we will treat Pod's nodeAffinity/nodeSelector @@ -5187,7 +5433,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecTopologySpreadConstraints { /// - Honor: only nodes matching nodeAffinity/nodeSelector are included in the calculations. /// - Ignore: nodeAffinity/nodeSelector are ignored. All nodes are included in the calculations. /// - /// /// If this value is nil, the behavior is equivalent to the Honor policy. /// This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeAffinityPolicy")] @@ -5198,7 +5443,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecTopologySpreadConstraints { /// has a toleration, are included. /// - Ignore: node taints are ignored. All nodes are included. /// - /// /// If this value is nil, the behavior is equivalent to the Ignore policy. /// This is a beta-level feature default enabled by the NodeInclusionPolicyInPodTopologySpread feature flag. #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeTaintsPolicy")] @@ -5307,7 +5551,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumes { /// The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, /// and deleted when the pod is removed. /// - /// /// Use this if: /// a) the volume is only needed while the pod runs, /// b) features of normal volumes like restoring from snapshot or capacity @@ -5318,17 +5561,14 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumes { /// information on the connection between this volume type /// and PersistentVolumeClaim). /// - /// /// Use PersistentVolumeClaim or one of the vendor-specific /// APIs for volumes that persist for longer than the lifecycle /// of an individual pod. /// - /// /// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to /// be used that way - see the documentation of the driver for /// more information. /// - /// /// A pod can use both types of ephemeral volumes and /// persistent volumes at the same time. #[serde(default, skip_serializing_if = "Option::is_none")] @@ -5363,11 +5603,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumes { /// used for system agents or other privileged things that are allowed /// to see the host machine. Most containers will NOT need this. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath - /// --- - /// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not - /// mount host directories as read/write. #[serde(default, skip_serializing_if = "Option::is_none", rename = "hostPath")] pub host_path: Option, + /// image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. + /// The volume is resolved at pod startup depending on which PullPolicy value is provided: + /// + /// - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. + /// - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. + /// - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. + /// + /// The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. + /// A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. + /// The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. + /// The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. + /// The volume will be mounted read-only (ro) and non-executable files (noexec). + /// Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). + /// The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub image: Option, /// iscsi represents an ISCSI Disk resource that is attached to a /// kubelet's host machine and then exposed to the pod. /// More info: https://examples.k8s.io/volumes/iscsi/README.md @@ -5426,7 +5679,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesAwsElasticBlockStore { /// Tip: Ensure that the filesystem type is supported by the host operating system. /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore - /// TODO: how do we prevent errors in the filesystem from compromising the machine #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// partition is the partition in the volume that you want to mount. @@ -5519,8 +5771,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesCephfs { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesCephfsSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -5555,8 +5809,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesCinder { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesCinderSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -5583,8 +5839,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesConfigMap { #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional specify whether the ConfigMap or its keys must be defined @@ -5648,8 +5906,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesCsi { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesCsiNodePublishSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -5675,7 +5935,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -5694,7 +5954,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesDownwardApiItems { pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -5743,7 +6003,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEmptyDir { /// The volume's lifecycle is tied to the pod that defines it - it will be created before the pod starts, /// and deleted when the pod is removed. /// -/// /// Use this if: /// a) the volume is only needed while the pod runs, /// b) features of normal volumes like restoring from snapshot or capacity @@ -5754,17 +6013,14 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEmptyDir { /// information on the connection between this volume type /// and PersistentVolumeClaim). /// -/// /// Use PersistentVolumeClaim or one of the vendor-specific /// APIs for volumes that persist for longer than the lifecycle /// of an individual pod. /// -/// /// Use CSI for light-weight local ephemeral volumes if the CSI driver is meant to /// be used that way - see the documentation of the driver for /// more information. /// -/// /// A pod can use both types of ephemeral volumes and /// persistent volumes at the same time. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -5777,7 +6033,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeral { /// entry. Pod validation will reject the pod if the concatenated name /// is not valid for a PVC (for example, too long). /// - /// /// An existing PVC with that name that is not owned by the pod /// will *not* be used for the pod to avoid using an unrelated /// volume by mistake. Starting the pod is then blocked until @@ -5787,11 +6042,9 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeral { /// this should not be necessary, but it may be useful when /// manually reconstructing a broken cluster. /// - /// /// This field is read-only and no changes will be made by Kubernetes /// to the PVC after it has been created. /// - /// /// Required, must not be nil. #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeClaimTemplate")] pub volume_claim_template: Option, @@ -5805,7 +6058,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeral { /// entry. Pod validation will reject the pod if the concatenated name /// is not valid for a PVC (for example, too long). /// -/// /// An existing PVC with that name that is not owned by the pod /// will *not* be used for the pod to avoid using an unrelated /// volume by mistake. Starting the pod is then blocked until @@ -5815,11 +6067,9 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeral { /// this should not be necessary, but it may be useful when /// manually reconstructing a broken cluster. /// -/// /// This field is read-only and no changes will be made by Kubernetes /// to the PVC after it has been created. /// -/// /// Required, must not be nil. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeralVolumeClaimTemplate { @@ -5840,6 +6090,16 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeralVolumeClaimTemplate /// validation. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeralVolumeClaimTemplateMetadata { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub annotations: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub finalizers: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub labels: Option>, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub name: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] + pub namespace: Option, } /// The specification for the PersistentVolumeClaim. The entire content is @@ -5911,8 +6171,8 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesEphemeralVolumeClaimTemplateS /// If the resource referred to by volumeAttributesClass does not exist, this PersistentVolumeClaim will be /// set to a Pending state, as reflected by the modifyVolumeStatus field, until such as a resource /// exists. - /// More info: https://kubernetes.io/docs/concepts/storage/persistent-volumes#volumeattributesclass - /// (Alpha) Using this field requires the VolumeAttributesClass feature gate to be enabled. + /// More info: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/ + /// (Beta) Using this field requires the VolumeAttributesClass feature gate to be enabled (off by default). #[serde(default, skip_serializing_if = "Option::is_none", rename = "volumeAttributesClassName")] pub volume_attributes_class_name: Option, /// volumeMode defines what type of volume is required by the claim. @@ -6041,7 +6301,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesFc { /// fsType is the filesystem type to mount. /// Must be a filesystem type supported by the host operating system. /// Ex. "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. - /// TODO: how do we prevent errors in the filesystem from compromising the machine #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// lun is Optional: FC target lun number @@ -6095,8 +6354,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesFlexVolume { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesFlexVolumeSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -6122,7 +6383,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesGcePersistentDisk { /// Tip: Ensure that the filesystem type is supported by the host operating system. /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk - /// TODO: how do we prevent errors in the filesystem from compromising the machine #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// partition is the partition in the volume that you want to mount. @@ -6184,9 +6444,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesGlusterfs { /// used for system agents or other privileged things that are allowed /// to see the host machine. Most containers will NOT need this. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#hostpath -/// --- -/// TODO(jonesdl) We need to restrict who can use host directory mounts and who can/can not -/// mount host directories as read/write. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesHostPath { /// path of the directory on the host. @@ -6200,6 +6457,39 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesHostPath { pub r#type: Option, } +/// image represents an OCI object (a container image or artifact) pulled and mounted on the kubelet's host machine. +/// The volume is resolved at pod startup depending on which PullPolicy value is provided: +/// +/// - Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. +/// - Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. +/// - IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. +/// +/// The volume gets re-resolved if the pod gets deleted and recreated, which means that new remote content will become available on pod recreation. +/// A failure to resolve or pull the image during pod startup will block containers from starting and may add significant latency. Failures will be retried using normal volume backoff and will be reported on the pod reason and message. +/// The types of objects that may be mounted by this volume are defined by the container runtime implementation on a host machine and at minimum must include all valid types supported by the container image field. +/// The OCI object gets mounted in a single directory (spec.containers[*].volumeMounts.mountPath) by merging the manifest layers in the same way as for container images. +/// The volume will be mounted read-only (ro) and non-executable files (noexec). +/// Sub path mounts for containers are not supported (spec.containers[*].volumeMounts.subpath). +/// The field spec.securityContext.fsGroupChangePolicy has no effect on this volume type. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ScaledJobJobTargetRefTemplateSpecVolumesImage { + /// Policy for pulling OCI objects. Possible values are: + /// Always: the kubelet always attempts to pull the reference. Container creation will fail If the pull fails. + /// Never: the kubelet never pulls the reference and only uses a local image or artifact. Container creation will fail if the reference isn't present. + /// IfNotPresent: the kubelet pulls if the reference isn't already present on disk. Container creation will fail if the reference isn't present and the pull fails. + /// Defaults to Always if :latest tag is specified, or IfNotPresent otherwise. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "pullPolicy")] + pub pull_policy: Option, + /// Required: Image or artifact reference to be used. + /// Behaves in the same way as pod.spec.containers[*].image. + /// Pull secrets will be assembled in the same way as for the container image by looking up node credentials, SA image pull secrets, and pod spec image pull secrets. + /// More info: https://kubernetes.io/docs/concepts/containers/images + /// This field is optional to allow higher level config management to default or override + /// container images in workload controllers like Deployments and StatefulSets. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub reference: Option, +} + /// iscsi represents an ISCSI Disk resource that is attached to a /// kubelet's host machine and then exposed to the pod. /// More info: https://examples.k8s.io/volumes/iscsi/README.md @@ -6215,7 +6505,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesIscsi { /// Tip: Ensure that the filesystem type is supported by the host operating system. /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#iscsi - /// TODO: how do we prevent errors in the filesystem from compromising the machine #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// initiatorName is the custom iSCSI Initiator Name. @@ -6252,8 +6541,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesIscsi { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesIscsiSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -6331,25 +6622,24 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjected { /// mode, like fsGroup, and the result can be other mode bits set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "defaultMode")] pub default_mode: Option, - /// sources is the list of volume projections + /// sources is the list of volume projections. Each entry in this list + /// handles one source. #[serde(default, skip_serializing_if = "Option::is_none")] pub sources: Option>, } -/// Projection that may be projected along with other supported volume types +/// Projection that may be projected along with other supported volume types. +/// Exactly one of these fields must be set. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSources { /// ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field /// of ClusterTrustBundle objects in an auto-updating file. /// - /// /// Alpha, gated by the ClusterTrustBundleProjection feature gate. /// - /// /// ClusterTrustBundle objects can either be selected by name, or by the /// combination of signer name and a label selector. /// - /// /// Kubelet performs aggressive normalization of the PEM contents written /// into the pod filesystem. Esoteric PEM features such as inter-block /// comments and block headers are stripped. Certificates are deduplicated. @@ -6374,14 +6664,11 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSources { /// ClusterTrustBundle allows a pod to access the `.spec.trustBundle` field /// of ClusterTrustBundle objects in an auto-updating file. /// -/// /// Alpha, gated by the ClusterTrustBundleProjection feature gate. /// -/// /// ClusterTrustBundle objects can either be selected by name, or by the /// combination of signer name and a label selector. /// -/// /// Kubelet performs aggressive normalization of the PEM contents written /// into the pod filesystem. Esoteric PEM features such as inter-block /// comments and block headers are stripped. Certificates are deduplicated. @@ -6461,8 +6748,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesConfigMap { #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional specify whether the ConfigMap or its keys must be defined @@ -6501,7 +6790,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesDownwardApi { /// DownwardAPIVolumeFile represents information to create the file containing the pod field #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesDownwardApiItems { - /// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. + /// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, /// Optional: mode bits used to set permissions on this file, must be an octal value @@ -6520,7 +6809,7 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesDownwardApiIt pub resource_field_ref: Option, } -/// Required: Selects a field of the pod: only annotations, labels, name and namespace are supported. +/// Required: Selects a field of the pod: only annotations, labels, name, namespace and uid are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesDownwardApiItemsFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -6558,8 +6847,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesProjectedSourcesSecret { #[serde(default, skip_serializing_if = "Option::is_none")] pub items: Option>, /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// optional field specify whether the Secret or its key must be defined @@ -6644,7 +6935,6 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesRbd { /// Tip: Ensure that the filesystem type is supported by the host operating system. /// Examples: "ext4", "xfs", "ntfs". Implicitly inferred to be "ext4" if unspecified. /// More info: https://kubernetes.io/docs/concepts/storage/volumes#rbd - /// TODO: how do we prevent errors in the filesystem from compromising the machine #[serde(default, skip_serializing_if = "Option::is_none", rename = "fsType")] pub fs_type: Option, /// image is the rados image name. @@ -6688,8 +6978,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesRbd { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesRbdSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -6739,8 +7031,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesScaleIo { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesScaleIoSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -6831,8 +7125,10 @@ pub struct ScaledJobJobTargetRefTemplateSpecVolumesStorageos { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledJobJobTargetRefTemplateSpecVolumesStorageosSecretRef { /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names - /// TODO: Add other useful fields. apiVersion, kind, uid? #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, } @@ -6915,11 +7211,15 @@ pub struct ScaledJobTriggersAuthenticationRef { pub struct ScaledJobStatus { #[serde(default, skip_serializing_if = "Option::is_none", rename = "Paused")] pub paused: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "authenticationsTypes")] + pub authentications_types: Option, /// Conditions an array representation to store multiple Conditions #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastActiveTime")] pub last_active_time: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "triggersTypes")] + pub triggers_types: Option, } /// Condition to store the condition state diff --git a/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledobjects.rs b/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledobjects.rs index 013728f22..ee66d4769 100644 --- a/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledobjects.rs +++ b/kube-custom-resources-rs/src/keda_sh/v1alpha1/scaledobjects.rs @@ -233,6 +233,8 @@ pub struct ScaledObjectTriggersAuthenticationRef { /// ScaledObjectStatus is the status for a ScaledObject resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ScaledObjectStatus { + #[serde(default, skip_serializing_if = "Option::is_none", rename = "authenticationsTypes")] + pub authentications_types: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "compositeScalerName")] pub composite_scaler_name: Option, /// Conditions an array representation to store multiple Conditions @@ -257,6 +259,8 @@ pub struct ScaledObjectStatus { pub scale_target_gvkr: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleTargetKind")] pub scale_target_kind: Option, + #[serde(default, skip_serializing_if = "Option::is_none", rename = "triggersTypes")] + pub triggers_types: Option, } /// Condition to store the condition state diff --git a/kube-custom-resources-rs/src/kuadrant_io/v1beta3/ratelimitpolicies.rs b/kube-custom-resources-rs/src/kuadrant_io/v1beta3/ratelimitpolicies.rs index 346c73b0d..a4193e110 100644 --- a/kube-custom-resources-rs/src/kuadrant_io/v1beta3/ratelimitpolicies.rs +++ b/kube-custom-resources-rs/src/kuadrant_io/v1beta3/ratelimitpolicies.rs @@ -33,6 +33,11 @@ pub struct RateLimitPolicySpec { /// Reference to the object to which this policy applies. #[serde(rename = "targetRef")] pub target_ref: RateLimitPolicyTargetRef, + /// Overall conditions for the policy to be enforced. + /// If omitted, the policy will be enforced at all requests to the protected routes. + /// If present, all conditions must match for the policy to be enforced. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub when: Option>, } /// Rules to apply as defaults. Can be overridden by more specific policiy rules lower in the hierarchy and by less specific policy overrides. @@ -45,81 +50,53 @@ pub struct RateLimitPolicyDefaults { /// Strategy defines the merge strategy to apply when merging this policy with other policies. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, + /// Overall conditions for the policy to be enforced. + /// If omitted, the policy will be enforced at all requests to the protected routes. + /// If present, all conditions must match for the policy to be enforced. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub when: Option>, } /// Limits holds the struct of limits indexed by a unique name #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyDefaultsLimits { - /// Counters defines additional rate limit counters based on context qualifiers and well known selectors + /// Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors #[serde(default, skip_serializing_if = "Option::is_none")] - pub counters: Option>, + pub counters: Option>, /// Rates holds the list of limit rates #[serde(default, skip_serializing_if = "Option::is_none")] pub rates: Option>, - /// When holds the list of conditions for the policy to be enforced. + /// When holds a list of "limit-level" `Predicate`s /// Called also "soft" conditions as route selectors must also match #[serde(default, skip_serializing_if = "Option::is_none")] pub when: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyDefaultsLimitsCounters { + /// Expression defines one CEL expression + /// Expression can use well known attributes + /// Attributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes + /// Well-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors + /// They are named by a dot-separated path (e.g. request.path) + /// Example: "request.path" -> The path portion of the URL + pub expression: String, +} + /// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyDefaultsLimitsRates { - /// Duration defines the time period for which the Limit specified above applies. - pub duration: i64, /// Limit defines the max value allowed for a given period of time pub limit: i64, - /// Duration defines the time uni - /// Possible values are: "second", "minute", "hour", "day" - pub unit: RateLimitPolicyDefaultsLimitsRatesUnit, + /// Window defines the time period for which the Limit specified above applies. + pub window: String, } -/// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyDefaultsLimitsRatesUnit { - #[serde(rename = "second")] - Second, - #[serde(rename = "minute")] - Minute, - #[serde(rename = "hour")] - Hour, - #[serde(rename = "day")] - Day, -} - -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyDefaultsLimitsWhen { - /// The binary operator to be applied to the content fetched from the selector - /// Possible values are: "eq" (equal to), "neq" (not equal to) - pub operator: RateLimitPolicyDefaultsLimitsWhenOperator, - /// Selector defines one item from the well known selectors - /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors - pub selector: String, - /// The value of reference for the comparison. - pub value: String, -} - -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyDefaultsLimitsWhenOperator { - #[serde(rename = "eq")] - Eq, - #[serde(rename = "neq")] - Neq, - #[serde(rename = "startswith")] - Startswith, - #[serde(rename = "endswith")] - Endswith, - #[serde(rename = "incl")] - Incl, - #[serde(rename = "excl")] - Excl, - #[serde(rename = "matches")] - Matches, + pub predicate: String, } /// Rules to apply as defaults. Can be overridden by more specific policiy rules lower in the hierarchy and by less specific policy overrides. @@ -132,79 +109,52 @@ pub enum RateLimitPolicyDefaultsStrategy { Merge, } +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyDefaultsWhen { + pub predicate: String, +} + /// Limits holds the struct of limits indexed by a unique name #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyLimits { - /// Counters defines additional rate limit counters based on context qualifiers and well known selectors + /// Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors #[serde(default, skip_serializing_if = "Option::is_none")] - pub counters: Option>, + pub counters: Option>, /// Rates holds the list of limit rates #[serde(default, skip_serializing_if = "Option::is_none")] pub rates: Option>, - /// When holds the list of conditions for the policy to be enforced. + /// When holds a list of "limit-level" `Predicate`s /// Called also "soft" conditions as route selectors must also match #[serde(default, skip_serializing_if = "Option::is_none")] pub when: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyLimitsCounters { + /// Expression defines one CEL expression + /// Expression can use well known attributes + /// Attributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes + /// Well-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors + /// They are named by a dot-separated path (e.g. request.path) + /// Example: "request.path" -> The path portion of the URL + pub expression: String, +} + /// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyLimitsRates { - /// Duration defines the time period for which the Limit specified above applies. - pub duration: i64, /// Limit defines the max value allowed for a given period of time pub limit: i64, - /// Duration defines the time uni - /// Possible values are: "second", "minute", "hour", "day" - pub unit: RateLimitPolicyLimitsRatesUnit, -} - -/// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyLimitsRatesUnit { - #[serde(rename = "second")] - Second, - #[serde(rename = "minute")] - Minute, - #[serde(rename = "hour")] - Hour, - #[serde(rename = "day")] - Day, + /// Window defines the time period for which the Limit specified above applies. + pub window: String, } -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyLimitsWhen { - /// The binary operator to be applied to the content fetched from the selector - /// Possible values are: "eq" (equal to), "neq" (not equal to) - pub operator: RateLimitPolicyLimitsWhenOperator, - /// Selector defines one item from the well known selectors - /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors - pub selector: String, - /// The value of reference for the comparison. - pub value: String, -} - -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyLimitsWhenOperator { - #[serde(rename = "eq")] - Eq, - #[serde(rename = "neq")] - Neq, - #[serde(rename = "startswith")] - Startswith, - #[serde(rename = "endswith")] - Endswith, - #[serde(rename = "incl")] - Incl, - #[serde(rename = "excl")] - Excl, - #[serde(rename = "matches")] - Matches, + pub predicate: String, } /// Rules to apply as overrides. Override all policy rules lower in the hierarchy. Can be overridden by less specific policy overrides. @@ -217,81 +167,53 @@ pub struct RateLimitPolicyOverrides { /// Strategy defines the merge strategy to apply when merging this policy with other policies. #[serde(default, skip_serializing_if = "Option::is_none")] pub strategy: Option, + /// Overall conditions for the policy to be enforced. + /// If omitted, the policy will be enforced at all requests to the protected routes. + /// If present, all conditions must match for the policy to be enforced. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub when: Option>, } /// Limits holds the struct of limits indexed by a unique name #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyOverridesLimits { - /// Counters defines additional rate limit counters based on context qualifiers and well known selectors + /// Counters defines additional rate limit counters based on CEL expressions which can reference well known selectors /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors #[serde(default, skip_serializing_if = "Option::is_none")] - pub counters: Option>, + pub counters: Option>, /// Rates holds the list of limit rates #[serde(default, skip_serializing_if = "Option::is_none")] pub rates: Option>, - /// When holds the list of conditions for the policy to be enforced. + /// When holds a list of "limit-level" `Predicate`s /// Called also "soft" conditions as route selectors must also match #[serde(default, skip_serializing_if = "Option::is_none")] pub when: Option>, } +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyOverridesLimitsCounters { + /// Expression defines one CEL expression + /// Expression can use well known attributes + /// Attributes: https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/advanced/attributes + /// Well-known selectors: https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors + /// They are named by a dot-separated path (e.g. request.path) + /// Example: "request.path" -> The path portion of the URL + pub expression: String, +} + /// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyOverridesLimitsRates { - /// Duration defines the time period for which the Limit specified above applies. - pub duration: i64, /// Limit defines the max value allowed for a given period of time pub limit: i64, - /// Duration defines the time uni - /// Possible values are: "second", "minute", "hour", "day" - pub unit: RateLimitPolicyOverridesLimitsRatesUnit, -} - -/// Rate defines the actual rate limit that will be used when there is a match -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyOverridesLimitsRatesUnit { - #[serde(rename = "second")] - Second, - #[serde(rename = "minute")] - Minute, - #[serde(rename = "hour")] - Hour, - #[serde(rename = "day")] - Day, + /// Window defines the time period for which the Limit specified above applies. + pub window: String, } -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyOverridesLimitsWhen { - /// The binary operator to be applied to the content fetched from the selector - /// Possible values are: "eq" (equal to), "neq" (not equal to) - pub operator: RateLimitPolicyOverridesLimitsWhenOperator, - /// Selector defines one item from the well known selectors - /// TODO Document properly "Well-known selector" https://github.com/Kuadrant/architecture/blob/main/rfcs/0001-rlp-v2.md#well-known-selectors - pub selector: String, - /// The value of reference for the comparison. - pub value: String, -} - -/// WhenCondition defines semantics for matching an HTTP request based on conditions -/// https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteSpec -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] -pub enum RateLimitPolicyOverridesLimitsWhenOperator { - #[serde(rename = "eq")] - Eq, - #[serde(rename = "neq")] - Neq, - #[serde(rename = "startswith")] - Startswith, - #[serde(rename = "endswith")] - Endswith, - #[serde(rename = "incl")] - Incl, - #[serde(rename = "excl")] - Excl, - #[serde(rename = "matches")] - Matches, + pub predicate: String, } /// Rules to apply as overrides. Override all policy rules lower in the hierarchy. Can be overridden by less specific policy overrides. @@ -304,6 +226,12 @@ pub enum RateLimitPolicyOverridesStrategy { Merge, } +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyOverridesWhen { + pub predicate: String, +} + /// Reference to the object to which this policy applies. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyTargetRef { @@ -330,6 +258,12 @@ pub struct RateLimitPolicyTargetRef { pub section_name: Option, } +/// Predicate defines one CEL expression that must be evaluated to bool +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct RateLimitPolicyWhen { + pub predicate: String, +} + #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct RateLimitPolicyStatus { /// Represents the observations of a foo's current state. diff --git a/kube-custom-resources-rs/src/kueue_x_k8s_io/v1beta1/provisioningrequestconfigs.rs b/kube-custom-resources-rs/src/kueue_x_k8s_io/v1beta1/provisioningrequestconfigs.rs index baa82d1e0..42d7f6933 100644 --- a/kube-custom-resources-rs/src/kueue_x_k8s_io/v1beta1/provisioningrequestconfigs.rs +++ b/kube-custom-resources-rs/src/kueue_x_k8s_io/v1beta1/provisioningrequestconfigs.rs @@ -35,5 +35,52 @@ pub struct ProvisioningRequestConfigSpec { /// Check autoscaling.x-k8s.io ProvisioningRequestSpec.ProvisioningClassName for details. #[serde(rename = "provisioningClassName")] pub provisioning_class_name: String, + /// retryStrategy defines strategy for retrying ProvisioningRequest. + /// If null, then the default configuration is applied with the following parameter values: + /// backoffLimitCount: 3 + /// backoffBaseSeconds: 60 - 1 min + /// backoffMaxSeconds: 1800 - 30 mins + /// + /// To switch off retry mechanism + /// set retryStrategy.backoffLimitCount to 0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "retryStrategy")] + pub retry_strategy: Option, +} + +/// retryStrategy defines strategy for retrying ProvisioningRequest. +/// If null, then the default configuration is applied with the following parameter values: +/// backoffLimitCount: 3 +/// backoffBaseSeconds: 60 - 1 min +/// backoffMaxSeconds: 1800 - 30 mins +/// +/// To switch off retry mechanism +/// set retryStrategy.backoffLimitCount to 0. +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] +pub struct ProvisioningRequestConfigRetryStrategy { + /// BackoffBaseSeconds defines the base for the exponential backoff for + /// re-queuing an evicted workload. + /// + /// Defaults to 60. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "backoffBaseSeconds")] + pub backoff_base_seconds: Option, + /// BackoffLimitCount defines the maximum number of re-queuing retries. + /// Once the number is reached, the workload is deactivated (`.spec.activate`=`false`). + /// + /// Every backoff duration is about "b*2^(n-1)+Rand" where: + /// - "b" represents the base set by "BackoffBaseSeconds" parameter, + /// - "n" represents the "workloadStatus.requeueState.count", + /// - "Rand" represents the random jitter. + /// During this time, the workload is taken as an inadmissible and + /// other workloads will have a chance to be admitted. + /// By default, the consecutive requeue delays are around: (60s, 120s, 240s, ...). + /// + /// Defaults to 3. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "backoffLimitCount")] + pub backoff_limit_count: Option, + /// BackoffMaxSeconds defines the maximum backoff time to re-queue an evicted workload. + /// + /// Defaults to 1800. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "backoffMaxSeconds")] + pub backoff_max_seconds: Option, } diff --git a/kube-custom-resources-rs/src/listeners_stackable_tech/v1alpha1/listenerclasses.rs b/kube-custom-resources-rs/src/listeners_stackable_tech/v1alpha1/listenerclasses.rs index 17d75903b..bc697f049 100644 --- a/kube-custom-resources-rs/src/listeners_stackable_tech/v1alpha1/listenerclasses.rs +++ b/kube-custom-resources-rs/src/listeners_stackable_tech/v1alpha1/listenerclasses.rs @@ -16,9 +16,11 @@ use self::prelude::*; #[kube(schema = "disabled")] #[kube(derive="PartialEq")] pub struct ListenerClassSpec { - /// Whether addresses should prefer using the IP address (`IP`) or the hostname (`Hostname`). + /// Whether addresses should prefer using the IP address (`IP`) or the hostname (`Hostname`). Can also be set to `HostnameConservative`, which will use `IP` for `NodePort` service types, but `Hostname` for everything else. /// - /// The other type will be used if the preferred type is not available. By default `Hostname` is used. + /// The other type will be used if the preferred type is not available. + /// + /// Defaults to `HostnameConservative`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredAddressType")] pub preferred_address_type: Option, /// Annotations that should be added to the Service object. @@ -40,6 +42,7 @@ pub enum ListenerClassPreferredAddressType { Hostname, #[serde(rename = "IP")] Ip, + HostnameConservative, } /// Defines a policy for how [Listeners](https://docs.stackable.tech/home/nightly/listener-operator/listener) should be exposed. Read the [ListenerClass documentation](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass) for more information. diff --git a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/clusteroutputs.rs b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/clusteroutputs.rs index 785d5f8d5..a8e31e378 100644 --- a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/clusteroutputs.rs +++ b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/clusteroutputs.rs @@ -5202,6 +5202,8 @@ pub struct ClusterOutputNewrelicLicenseKeyValueFromSecretKeyRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterOutputNullout { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub never_flush: Option, } #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -5311,6 +5313,8 @@ pub struct ClusterOutputOpensearch { #[serde(default, skip_serializing_if = "Option::is_none")] pub reload_on_failure: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub remove_keys: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update_key: Option, diff --git a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/outputs.rs b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/outputs.rs index 45d2cb3ab..4d964a742 100644 --- a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/outputs.rs +++ b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1alpha1/outputs.rs @@ -4823,6 +4823,8 @@ pub struct OutputNewrelicLicenseKeyValueFromSecretKeyRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct OutputNullout { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub never_flush: Option, } #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -4932,6 +4934,8 @@ pub struct OutputOpensearch { #[serde(default, skip_serializing_if = "Option::is_none")] pub reload_on_failure: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub remove_keys: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update_key: Option, diff --git a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/clusteroutputs.rs b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/clusteroutputs.rs index 8b0e6b54b..03f74d74e 100644 --- a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/clusteroutputs.rs +++ b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/clusteroutputs.rs @@ -5202,6 +5202,8 @@ pub struct ClusterOutputNewrelicLicenseKeyValueFromSecretKeyRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterOutputNullout { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub never_flush: Option, } #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -5311,6 +5313,8 @@ pub struct ClusterOutputOpensearch { #[serde(default, skip_serializing_if = "Option::is_none")] pub reload_on_failure: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub remove_keys: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update_key: Option, diff --git a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/outputs.rs b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/outputs.rs index 1073c11aa..d186736ad 100644 --- a/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/outputs.rs +++ b/kube-custom-resources-rs/src/logging_banzaicloud_io/v1beta1/outputs.rs @@ -5198,6 +5198,8 @@ pub struct OutputNewrelicLicenseKeyValueFromSecretKeyRef { #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct OutputNullout { + #[serde(default, skip_serializing_if = "Option::is_none")] + pub never_flush: Option, } #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -5307,6 +5309,8 @@ pub struct OutputOpensearch { #[serde(default, skip_serializing_if = "Option::is_none")] pub reload_on_failure: Option, #[serde(default, skip_serializing_if = "Option::is_none")] + pub remove_keys: Option, + #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update: Option, #[serde(default, skip_serializing_if = "Option::is_none")] pub remove_keys_on_update_key: Option, diff --git a/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigrevisions.rs b/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigrevisions.rs index e50215432..7ebb06639 100644 --- a/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigrevisions.rs +++ b/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigrevisions.rs @@ -26,13 +26,15 @@ pub struct EnvoyConfigRevisionSpec { /// EnvoyResources holds the different types of resources suported by the envoy discovery service #[serde(default, skip_serializing_if = "Option::is_none", rename = "envoyResources")] pub envoy_resources: Option, - /// NodeID holds the envoy identifier for the discovery service to know which set of resources to send to each of the envoy clients that connect to it. + /// NodeID holds the envoy identifier for the discovery service to know which set + /// of resources to send to each of the envoy clients that connect to it. #[serde(rename = "nodeID")] pub node_id: String, /// Resources holds the different types of resources suported by the envoy discovery service #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, - /// Serialization specicifies the serialization format used to describe the resources. "json" and "yaml" are supported. "json" is used if unset. + /// Serialization specicifies the serialization format used to describe the resources. "json" and "yaml" + /// are supported. "json" is used if unset. #[serde(default, skip_serializing_if = "Option::is_none")] pub serialization: Option, /// Version is a hash of the EnvoyResources field @@ -49,25 +51,32 @@ pub enum EnvoyConfigRevisionEnvoyApi { /// EnvoyResources holds the different types of resources suported by the envoy discovery service #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResources { - /// Clusters is a list of the envoy Cluster resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto + /// Clusters is a list of the envoy Cluster resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub clusters: Option>, - /// Endpoints is a list of the envoy ClusterLoadAssignment resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto + /// Endpoints is a list of the envoy ClusterLoadAssignment resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub endpoints: Option>, - /// ExtensionConfigs is a list of the envoy ExtensionConfig resource type API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto + /// ExtensionConfigs is a list of the envoy ExtensionConfig resource type + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto #[serde(default, skip_serializing_if = "Option::is_none", rename = "extensionConfigs")] pub extension_configs: Option>, - /// Listeners is a list of the envoy Listener resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto + /// Listeners is a list of the envoy Listener resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub listeners: Option>, - /// Routes is a list of the envoy Route resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto + /// Routes is a list of the envoy Route resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub routes: Option>, - /// Runtimes is a list of the envoy Runtime resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto + /// Runtimes is a list of the envoy Runtime resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub runtimes: Option>, - /// ScopedRoutes is a list of the envoy ScopeRoute resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto + /// ScopedRoutes is a list of the envoy ScopeRoute resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto #[serde(default, skip_serializing_if = "Option::is_none", rename = "scopedRoutes")] pub scoped_routes: Option>, /// Secrets is a list of references to Kubernetes Secret objects. @@ -75,87 +84,127 @@ pub struct EnvoyConfigRevisionEnvoyResources { pub secrets: Option>, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesClusters { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesEndpoints { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesExtensionConfigs { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesListeners { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesRoutes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesRuntimes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesScopedRoutes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoySecretResource holds a reference to a k8s Secret from where to take a secret from. Only Secrets within the same namespace can be referred. +/// EnvoySecretResource holds a reference to a k8s Secret from where +/// to take a secret from. Only Secrets within the same namespace can +/// be referred. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesSecrets { - /// Name of the envoy tslCerticate secret resource. The certificate will be fetched from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name. + /// Name of the envoy tslCerticate secret resource. The certificate will be fetched + /// from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name. pub name: String, - /// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field. + /// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the + /// Kubernetes Secret must match the 'name' field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ref")] pub r#ref: Option, } -/// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field. +/// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the +/// Kubernetes Secret must match the 'name' field. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionEnvoyResourcesSecretsRef { /// name is unique within a namespace to reference a secret resource. @@ -166,16 +215,20 @@ pub struct EnvoyConfigRevisionEnvoyResourcesSecretsRef { pub namespace: Option, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct EnvoyConfigRevisionResources { - /// Blueprint specifies a template to generate a configuration proto. It is currently only supported to generate secret configuration resources from k8s Secrets + /// Blueprint specifies a template to generate a configuration proto. It is currently + /// only supported to generate secret configuration resources from k8s Secrets #[serde(default, skip_serializing_if = "Option::is_none")] pub blueprint: Option, - /// Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource + /// Specifies a label selector to watch for EndpointSlices that will + /// be used to generate the endpoint resource #[serde(default, skip_serializing_if = "Option::is_none", rename = "generateFromEndpointSlices")] pub generate_from_endpoint_slices: Option, - /// The name of a Kubernetes Secret of type "Opaque". It will generate an envoy "generic secret" proto. + /// The name of a Kubernetes Secret of type "Opaque". It will generate an + /// envoy "generic secret" proto. #[serde(default, skip_serializing_if = "Option::is_none", rename = "generateFromOpaqueSecret")] pub generate_from_opaque_secret: Option, /// The name of a Kubernetes Secret of type "kubernetes.io/tls" @@ -184,12 +237,15 @@ pub struct EnvoyConfigRevisionResources { /// Type is the type url for the protobuf message #[serde(rename = "type")] pub r#type: EnvoyConfigRevisionResourcesType, - /// Value is the protobufer message that configures the resource. The proto must match the envoy configuration API v3 specification for the given resource type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types) + /// Value is the protobufer message that configures the resource. The proto + /// must match the envoy configuration API v3 specification for the given resource + /// type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types) #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option>, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum EnvoyConfigRevisionResourcesBlueprint { #[serde(rename = "tlsCertificate")] @@ -198,41 +254,54 @@ pub enum EnvoyConfigRevisionResourcesBlueprint { ValidationContext, } -/// Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource +/// Specifies a label selector to watch for EndpointSlices that will +/// be used to generate the endpoint resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionResourcesGenerateFromEndpointSlices { #[serde(rename = "clusterName")] pub cluster_name: String, - /// A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. + /// A label selector is a label query over a set of resources. The result of matchLabels and + /// matchExpressions are ANDed. An empty label selector matches all objects. A null + /// label selector matches no objects. pub selector: EnvoyConfigRevisionResourcesGenerateFromEndpointSlicesSelector, #[serde(rename = "targetPort")] pub target_port: String, } -/// A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. +/// A label selector is a label query over a set of resources. The result of matchLabels and +/// matchExpressions are ANDed. An empty label selector matches all objects. A null +/// label selector matches no objects. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionResourcesGenerateFromEndpointSlicesSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionResourcesGenerateFromEndpointSlicesSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// The name of a Kubernetes Secret of type "Opaque". It will generate an envoy "generic secret" proto. +/// The name of a Kubernetes Secret of type "Opaque". It will generate an +/// envoy "generic secret" proto. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionResourcesGenerateFromOpaqueSecret { /// A unique name to refer to the name:key combination @@ -243,7 +312,8 @@ pub struct EnvoyConfigRevisionResourcesGenerateFromOpaqueSecret { pub name: String, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum EnvoyConfigRevisionResourcesType { #[serde(rename = "listener")] @@ -281,21 +351,26 @@ pub struct EnvoyConfigRevisionStatus { /// Conditions represent the latest available observations of an object's state #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// LastPublishedAt indicates the last time this config review transitioned to published + /// LastPublishedAt indicates the last time this config review transitioned to + /// published #[serde(default, skip_serializing_if = "Option::is_none", rename = "lastPublishedAt")] pub last_published_at: Option, - /// ProvidesVersions keeps track of the version that this revision publishes in the xDS server for each resource type + /// ProvidesVersions keeps track of the version that this revision + /// publishes in the xDS server for each resource type #[serde(default, skip_serializing_if = "Option::is_none", rename = "providesVersions")] pub provides_versions: Option, - /// Published signals if the EnvoyConfigRevision is the one currently published in the xds server cache + /// Published signals if the EnvoyConfigRevision is the one currently published + /// in the xds server cache #[serde(default, skip_serializing_if = "Option::is_none")] pub published: Option, - /// Tainted indicates whether the EnvoyConfigRevision is eligible for publishing or not + /// Tainted indicates whether the EnvoyConfigRevision is eligible for publishing + /// or not #[serde(default, skip_serializing_if = "Option::is_none")] pub tainted: Option, } -/// ProvidesVersions keeps track of the version that this revision publishes in the xDS server for each resource type +/// ProvidesVersions keeps track of the version that this revision +/// publishes in the xDS server for each resource type #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigRevisionStatusProvidesVersions { #[serde(default, skip_serializing_if = "Option::is_none")] diff --git a/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigs.rs b/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigs.rs index e940a5f23..36c562de9 100644 --- a/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigs.rs +++ b/kube-custom-resources-rs/src/marin3r_3scale_net/v1alpha1/envoyconfigs.rs @@ -24,16 +24,19 @@ pub struct EnvoyConfigSpec { /// EnvoyAPI is the version of envoy's API to use. Defaults to v3. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envoyAPI")] pub envoy_api: Option, - /// EnvoyResources holds the different types of resources suported by the envoy discovery service DEPRECATED. Use the `resources` field instead. + /// EnvoyResources holds the different types of resources suported by the envoy discovery service + /// DEPRECATED. Use the `resources` field instead. #[serde(default, skip_serializing_if = "Option::is_none", rename = "envoyResources")] pub envoy_resources: Option, - /// NodeID holds the envoy identifier for the discovery service to know which set of resources to send to each of the envoy clients that connect to it. + /// NodeID holds the envoy identifier for the discovery service to know which set + /// of resources to send to each of the envoy clients that connect to it. #[serde(rename = "nodeID")] pub node_id: String, /// Resources holds the different types of resources suported by the envoy discovery service #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option>, - /// Serialization specicifies the serialization format used to describe the resources. "json" and "yaml" are supported. "json" is used if unset. + /// Serialization specicifies the serialization format used to describe the resources. "json" and "yaml" + /// are supported. "json" is used if unset. #[serde(default, skip_serializing_if = "Option::is_none")] pub serialization: Option, } @@ -45,28 +48,36 @@ pub enum EnvoyConfigEnvoyApi { V3, } -/// EnvoyResources holds the different types of resources suported by the envoy discovery service DEPRECATED. Use the `resources` field instead. +/// EnvoyResources holds the different types of resources suported by the envoy discovery service +/// DEPRECATED. Use the `resources` field instead. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResources { - /// Clusters is a list of the envoy Cluster resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto + /// Clusters is a list of the envoy Cluster resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/cluster/v3/cluster.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub clusters: Option>, - /// Endpoints is a list of the envoy ClusterLoadAssignment resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto + /// Endpoints is a list of the envoy ClusterLoadAssignment resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/endpoint/v3/endpoint.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub endpoints: Option>, - /// ExtensionConfigs is a list of the envoy ExtensionConfig resource type API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto + /// ExtensionConfigs is a list of the envoy ExtensionConfig resource type + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/core/v3/extension.proto #[serde(default, skip_serializing_if = "Option::is_none", rename = "extensionConfigs")] pub extension_configs: Option>, - /// Listeners is a list of the envoy Listener resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto + /// Listeners is a list of the envoy Listener resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/listener/v3/listener.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub listeners: Option>, - /// Routes is a list of the envoy Route resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto + /// Routes is a list of the envoy Route resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/route.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub routes: Option>, - /// Runtimes is a list of the envoy Runtime resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto + /// Runtimes is a list of the envoy Runtime resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/service/runtime/v3/rtds.proto #[serde(default, skip_serializing_if = "Option::is_none")] pub runtimes: Option>, - /// ScopedRoutes is a list of the envoy ScopeRoute resource type. API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto + /// ScopedRoutes is a list of the envoy ScopeRoute resource type. + /// API V3 reference: https://www.envoyproxy.io/docs/envoy/latest/api-v3/config/route/v3/scoped_route.proto #[serde(default, skip_serializing_if = "Option::is_none", rename = "scopedRoutes")] pub scoped_routes: Option>, /// Secrets is a list of references to Kubernetes Secret objects. @@ -74,87 +85,127 @@ pub struct EnvoyConfigEnvoyResources { pub secrets: Option>, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesClusters { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesEndpoints { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesExtensionConfigs { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesListeners { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesRoutes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesRuntimes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoyResource holds serialized representation of an envoy resource +/// EnvoyResource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesScopedRoutes { - /// Name of the envoy resource. DEPRECATED: this field has no effect and will be removed in an upcoming release. The name of the resources for discovery purposes is included in the resource itself. Refer to the envoy API reference to check how the name is specified for each resource type. + /// Name of the envoy resource. + /// DEPRECATED: this field has no effect and will be removed in an + /// upcoming release. The name of the resources for discovery purposes + /// is included in the resource itself. Refer to the envoy API reference + /// to check how the name is specified for each resource type. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Value is the serialized representation of the envoy resource pub value: String, } -/// EnvoySecretResource holds a reference to a k8s Secret from where to take a secret from. Only Secrets within the same namespace can be referred. +/// EnvoySecretResource holds a reference to a k8s Secret from where +/// to take a secret from. Only Secrets within the same namespace can +/// be referred. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesSecrets { - /// Name of the envoy tslCerticate secret resource. The certificate will be fetched from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name. + /// Name of the envoy tslCerticate secret resource. The certificate will be fetched + /// from a Kubernetes Secrets of type 'kubernetes.io/tls' with this same name. pub name: String, - /// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field. + /// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the + /// Kubernetes Secret must match the 'name' field. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ref")] pub r#ref: Option, } -/// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the Kubernetes Secret must match the 'name' field. +/// DEPRECATED: this field is deprecated and it's value will be ignored. The 'name' of the +/// Kubernetes Secret must match the 'name' field. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigEnvoyResourcesSecretsRef { /// name is unique within a namespace to reference a secret resource. @@ -165,16 +216,20 @@ pub struct EnvoyConfigEnvoyResourcesSecretsRef { pub namespace: Option, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub struct EnvoyConfigResources { - /// Blueprint specifies a template to generate a configuration proto. It is currently only supported to generate secret configuration resources from k8s Secrets + /// Blueprint specifies a template to generate a configuration proto. It is currently + /// only supported to generate secret configuration resources from k8s Secrets #[serde(default, skip_serializing_if = "Option::is_none")] pub blueprint: Option, - /// Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource + /// Specifies a label selector to watch for EndpointSlices that will + /// be used to generate the endpoint resource #[serde(default, skip_serializing_if = "Option::is_none", rename = "generateFromEndpointSlices")] pub generate_from_endpoint_slices: Option, - /// The name of a Kubernetes Secret of type "Opaque". It will generate an envoy "generic secret" proto. + /// The name of a Kubernetes Secret of type "Opaque". It will generate an + /// envoy "generic secret" proto. #[serde(default, skip_serializing_if = "Option::is_none", rename = "generateFromOpaqueSecret")] pub generate_from_opaque_secret: Option, /// The name of a Kubernetes Secret of type "kubernetes.io/tls" @@ -183,12 +238,15 @@ pub struct EnvoyConfigResources { /// Type is the type url for the protobuf message #[serde(rename = "type")] pub r#type: EnvoyConfigResourcesType, - /// Value is the protobufer message that configures the resource. The proto must match the envoy configuration API v3 specification for the given resource type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types) + /// Value is the protobufer message that configures the resource. The proto + /// must match the envoy configuration API v3 specification for the given resource + /// type (https://www.envoyproxy.io/docs/envoy/latest/api-docs/xds_protocol#resource-types) #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option>, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum EnvoyConfigResourcesBlueprint { #[serde(rename = "tlsCertificate")] @@ -197,41 +255,54 @@ pub enum EnvoyConfigResourcesBlueprint { ValidationContext, } -/// Specifies a label selector to watch for EndpointSlices that will be used to generate the endpoint resource +/// Specifies a label selector to watch for EndpointSlices that will +/// be used to generate the endpoint resource #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigResourcesGenerateFromEndpointSlices { #[serde(rename = "clusterName")] pub cluster_name: String, - /// A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. + /// A label selector is a label query over a set of resources. The result of matchLabels and + /// matchExpressions are ANDed. An empty label selector matches all objects. A null + /// label selector matches no objects. pub selector: EnvoyConfigResourcesGenerateFromEndpointSlicesSelector, #[serde(rename = "targetPort")] pub target_port: String, } -/// A label selector is a label query over a set of resources. The result of matchLabels and matchExpressions are ANDed. An empty label selector matches all objects. A null label selector matches no objects. +/// A label selector is a label query over a set of resources. The result of matchLabels and +/// matchExpressions are ANDed. An empty label selector matches all objects. A null +/// label selector matches no objects. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigResourcesGenerateFromEndpointSlicesSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigResourcesGenerateFromEndpointSlicesSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// The name of a Kubernetes Secret of type "Opaque". It will generate an envoy "generic secret" proto. +/// The name of a Kubernetes Secret of type "Opaque". It will generate an +/// envoy "generic secret" proto. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigResourcesGenerateFromOpaqueSecret { /// A unique name to refer to the name:key combination @@ -242,7 +313,8 @@ pub struct EnvoyConfigResourcesGenerateFromOpaqueSecret { pub name: String, } -/// Resource holds serialized representation of an envoy resource +/// Resource holds serialized representation of an envoy +/// resource #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum EnvoyConfigResourcesType { #[serde(rename = "listener")] @@ -275,19 +347,25 @@ pub enum EnvoyConfigSerialization { /// EnvoyConfigStatus defines the observed state of EnvoyConfig #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigStatus { - /// CacheState summarizes all the observations about the EnvoyConfig to give the user a concrete idea on the general status of the discovery servie cache. It is intended only for human consumption. Other controllers should relly on conditions to determine the status of the discovery server cache. + /// CacheState summarizes all the observations about the EnvoyConfig + /// to give the user a concrete idea on the general status of the discovery servie cache. + /// It is intended only for human consumption. Other controllers should relly on conditions + /// to determine the status of the discovery server cache. #[serde(default, skip_serializing_if = "Option::is_none", rename = "cacheState")] pub cache_state: Option, /// Conditions represent the latest available observations of an object's state #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// DesiredVersion represents the resources version described in the spec of the EnvoyConfig object + /// DesiredVersion represents the resources version described in + /// the spec of the EnvoyConfig object #[serde(default, skip_serializing_if = "Option::is_none", rename = "desiredVersion")] pub desired_version: Option, - /// PublishedVersion is the config version currently served by the envoy discovery service for the give nodeID + /// PublishedVersion is the config version currently + /// served by the envoy discovery service for the give nodeID #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishedVersion")] pub published_version: Option, - /// ConfigRevisions is an ordered list of references to EnvoyConfigRevision objects + /// ConfigRevisions is an ordered list of references to EnvoyConfigRevision + /// objects #[serde(default, skip_serializing_if = "Option::is_none")] pub revisions: Option>, } @@ -295,35 +373,49 @@ pub struct EnvoyConfigStatus { /// ConfigRevisionRef holds a reference to EnvoyConfigRevision object #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigStatusRevisions { - /// Ref is a reference to the EnvoyConfigRevision object that holds the configuration matching the Version field. + /// Ref is a reference to the EnvoyConfigRevision object that + /// holds the configuration matching the Version field. #[serde(rename = "ref")] pub r#ref: ObjectReference, /// Version is a hash of the EnvoyResources field pub version: String, } -/// Ref is a reference to the EnvoyConfigRevision object that holds the configuration matching the Version field. +/// Ref is a reference to the EnvoyConfigRevision object that +/// holds the configuration matching the Version field. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyConfigStatusRevisionsRef { /// API version of the referent. #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] pub api_version: Option, - /// If referring to a piece of an object instead of an entire object, this string should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. For example, if the object reference is to a container within a pod, this would take on a value like: "spec.containers{name}" (where "name" refers to the name of the container that triggered the event) or if no container name is specified "spec.containers[2]" (container with index 2 in this pod). This syntax is chosen only to have some well-defined way of referencing a part of an object. TODO: this design is not final and this field is subject to change in the future. + /// If referring to a piece of an object instead of an entire object, this string + /// should contain a valid JSON/Go field access statement, such as desiredState.manifest.containers[2]. + /// For example, if the object reference is to a container within a pod, this would take on a value like: + /// "spec.containers{name}" (where "name" refers to the name of the container that triggered + /// the event) or if no container name is specified "spec.containers[2]" (container with + /// index 2 in this pod). This syntax is chosen only to have some well-defined way of + /// referencing a part of an object. + /// TODO: this design is not final and this field is subject to change in the future. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldPath")] pub field_path: Option, - /// Kind of the referent. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + /// Kind of the referent. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds #[serde(default, skip_serializing_if = "Option::is_none")] pub kind: Option, - /// Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names + /// Name of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, - /// Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ + /// Namespace of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/ #[serde(default, skip_serializing_if = "Option::is_none")] pub namespace: Option, - /// Specific resourceVersion to which this reference is made, if any. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency + /// Specific resourceVersion to which this reference is made, if any. + /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceVersion")] pub resource_version: Option, - /// UID of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids + /// UID of the referent. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#uids #[serde(default, skip_serializing_if = "Option::is_none")] pub uid: Option, } diff --git a/kube-custom-resources-rs/src/mattermost_com/v1alpha1/clusterinstallations.rs b/kube-custom-resources-rs/src/mattermost_com/v1alpha1/clusterinstallations.rs index 832d3f0a4..851e81cc0 100644 --- a/kube-custom-resources-rs/src/mattermost_com/v1alpha1/clusterinstallations.rs +++ b/kube-custom-resources-rs/src/mattermost_com/v1alpha1/clusterinstallations.rs @@ -11,7 +11,8 @@ mod prelude { } use self::prelude::*; -/// Specification of the desired behavior of the Mattermost cluster. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status +/// Specification of the desired behavior of the Mattermost cluster. More info: +/// https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status #[derive(CustomResource, Serialize, Deserialize, Clone, Debug, Default, PartialEq)] #[kube(group = "mattermost.com", version = "v1alpha1", kind = "ClusterInstallation", plural = "clusterinstallations")] #[kube(namespaced)] @@ -55,19 +56,24 @@ pub struct ClusterInstallationSpec { /// Secret that contains the mattermost license #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostLicenseSecret")] pub mattermost_license_secret: Option, - /// Migrate specifies that the ClusterInstallation CR should be migrated to the Mattermost CR. CAUTION: Some features like BlueGreen or Canary are not supported with a new Custom Resource therefore migration should be performed with extra caution. + /// Migrate specifies that the ClusterInstallation CR should be migrated to the Mattermost CR. + /// CAUTION: Some features like BlueGreen or Canary are not supported with a new Custom Resource + /// therefore migration should be performed with extra caution. #[serde(default, skip_serializing_if = "Option::is_none")] pub migrate: Option, /// Minio defines the configuration of Minio for a ClusterInstallation. #[serde(default, skip_serializing_if = "Option::is_none")] pub minio: Option, - /// NodeSelector is a selector which must be true for the pod to fit on a node. Selector which must match a node's labels for the pod to be scheduled on that node. More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ + /// NodeSelector is a selector which must be true for the pod to fit on a node. + /// Selector which must match a node's labels for the pod to be scheduled on that node. + /// More info: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/ #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodeSelector")] pub node_selector: Option>, /// Defines the probe to check if the application is ready to accept traffic. #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] pub readiness_probe: Option, - /// Replicas defines the number of replicas to use for the Mattermost app servers. Setting this will override the number of replicas set by 'Size'. + /// Replicas defines the number of replicas to use for the Mattermost app servers. + /// Setting this will override the number of replicas set by 'Size'. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceLabels")] @@ -77,7 +83,14 @@ pub struct ClusterInstallationSpec { pub resources: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "serviceAnnotations")] pub service_annotations: Option>, - /// Size defines the size of the ClusterInstallation. This is typically specified in number of users. This will override replica and resource requests/limits appropriately for the provided number of users. This is a write-only field - its value is erased after setting appropriate values of resources. Accepted values are: 100users, 1000users, 5000users, 10000users, 250000users. If replicas and resource requests/limits are not specified, and Size is not provided the configuration for 5000users will be applied. Setting 'Replicas', 'Resources', 'Minio.Replicas', 'Minio.Resource', 'Database.Replicas', or 'Database.Resources' will override the values set by Size. Setting new Size will override previous values regardless if set by Size or manually. + /// Size defines the size of the ClusterInstallation. This is typically specified in number of users. + /// This will override replica and resource requests/limits appropriately for the provided number of users. + /// This is a write-only field - its value is erased after setting appropriate values of resources. + /// Accepted values are: 100users, 1000users, 5000users, 10000users, 250000users. If replicas and resource + /// requests/limits are not specified, and Size is not provided the configuration for 5000users will be applied. + /// Setting 'Replicas', 'Resources', 'Minio.Replicas', 'Minio.Resource', 'Database.Replicas', + /// or 'Database.Resources' will override the values set by Size. + /// Setting new Size will override previous values regardless if set by Size or manually. #[serde(default, skip_serializing_if = "Option::is_none")] pub size: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "useIngressTLS")] @@ -106,15 +119,28 @@ pub struct ClusterInstallationAffinity { /// Describes node affinity scheduling rules for the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node matches the corresponding matchExpressions; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to an update), the system + /// may or may not try to eventually evict the pod from its node. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option, } -/// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +/// An empty preferred scheduling term matches all objects with implicit weight 0 +/// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { /// A node selector term, associated with the corresponding weight. @@ -134,31 +160,47 @@ pub struct ClusterInstallationAffinityNodeAffinityPreferredDuringSchedulingIgnor pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. +/// If the affinity requirements specified by this field are not met at +/// scheduling time, the pod will not be scheduled onto the node. +/// If the affinity requirements specified by this field cease to be met +/// at some point during pod execution (e.g. due to an update), the system +/// may or may not try to eventually evict the pod from its node. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// Required. A list of node selector terms. The terms are ORed. @@ -166,7 +208,9 @@ pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnore pub node_selector_terms: Vec, } -/// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +/// A null or empty node selector term matches no objects. The requirements of +/// them are ANDed. +/// The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { /// A list of node selector requirements by node's labels. @@ -177,26 +221,38 @@ pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnore pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -204,10 +260,24 @@ pub struct ClusterInstallationAffinityNodeAffinityRequiredDuringSchedulingIgnore /// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -218,7 +288,8 @@ pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnore /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } @@ -226,124 +297,235 @@ pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnore #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -351,10 +533,24 @@ pub struct ClusterInstallationAffinityPodAffinityRequiredDuringSchedulingIgnored /// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the anti-affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling anti-affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the anti-affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the anti-affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -365,7 +561,8 @@ pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIg /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } @@ -373,124 +570,235 @@ pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIg #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both matchLabelKeys and labelSelector. + /// Also, matchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] + pub match_label_keys: Option>, + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `labelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both mismatchLabelKeys and labelSelector. + /// Also, mismatchLabelKeys cannot be set when labelSelector isn't set. + /// This is a beta field and requires enabling MatchLabelKeysInPodAffinity feature gate (enabled by default). + #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] + pub mismatch_label_keys: Option>, + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } /// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -515,10 +823,12 @@ pub struct ClusterInstallationBlueGreen { /// Blue defines the blue deployment. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationBlueGreenBlue { - /// Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Image defines the base Docker image that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds. + /// IngressName defines the ingress name that will be used by the deployment. + /// This option is not used for Canary builds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] pub ingress_name: Option, /// Name defines the name of the deployment @@ -526,7 +836,8 @@ pub struct ClusterInstallationBlueGreenBlue { pub name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceLabels")] pub resource_labels: Option>, - /// Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Version defines the Docker image version that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } @@ -534,10 +845,12 @@ pub struct ClusterInstallationBlueGreenBlue { /// Green defines the green deployment. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationBlueGreenGreen { - /// Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Image defines the base Docker image that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds. + /// IngressName defines the ingress name that will be used by the deployment. + /// This option is not used for Canary builds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] pub ingress_name: Option, /// Name defines the name of the deployment @@ -545,7 +858,8 @@ pub struct ClusterInstallationBlueGreenGreen { pub name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceLabels")] pub resource_labels: Option>, - /// Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Version defines the Docker image version that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } @@ -564,10 +878,12 @@ pub struct ClusterInstallationCanary { /// Deployment defines the canary deployment. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationCanaryDeployment { - /// Image defines the base Docker image that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Image defines the base Docker image that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// IngressName defines the ingress name that will be used by the deployment. This option is not used for Canary builds. + /// IngressName defines the ingress name that will be used by the deployment. + /// This option is not used for Canary builds. #[serde(default, skip_serializing_if = "Option::is_none", rename = "ingressName")] pub ingress_name: Option, /// Name defines the name of the deployment @@ -575,7 +891,8 @@ pub struct ClusterInstallationCanaryDeployment { pub name: Option, #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceLabels")] pub resource_labels: Option>, - /// Version defines the Docker image version that will be used for the deployment. Required when BlueGreen or Canary is enabled. + /// Version defines the Docker image version that will be used for the deployment. + /// Required when BlueGreen or Canary is enabled. #[serde(default, skip_serializing_if = "Option::is_none")] pub version: Option, } @@ -598,24 +915,42 @@ pub struct ClusterInstallationDatabase { /// Defines the object storage url for uploading backups. #[serde(default, skip_serializing_if = "Option::is_none", rename = "backupURL")] pub backup_url: Option, - /// Defines the AWS S3 bucket where the Database Backup is stored. The operator will download the file to restore the data. + /// Defines the AWS S3 bucket where the Database Backup is stored. + /// The operator will download the file to restore the data. #[serde(default, skip_serializing_if = "Option::is_none", rename = "initBucketURL")] pub init_bucket_url: Option, - /// Defines the number of database replicas. For redundancy use at least 2 replicas. Setting this will override the number of replicas set by 'Size'. + /// Defines the number of database replicas. + /// For redundancy use at least 2 replicas. + /// Setting this will override the number of replicas set by 'Size'. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Defines the resource requests and limits for the database pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// Optionally enter the name of an already-existing Secret for connecting to the database. This secret should be configured as follows: - /// User-Managed Database - Key: DB_CONNECTION_STRING | Value: Operator-Managed Database - Key: ROOT_PASSWORD | Value: - Key: USER | Value: - Key: PASSWORD | Value: - Key: DATABASE Value: - /// Notes: If you define all secret values for both User-Managed and Operator-Managed database types, the User-Managed connection string will take precedence and the Operator-Managed values will be ignored. If the secret is left blank, the default behavior is to use an Operator-Managed database with strong randomly-generated database credentials. + /// Optionally enter the name of an already-existing Secret for connecting to + /// the database. This secret should be configured as follows: + /// + /// User-Managed Database + /// - Key: DB_CONNECTION_STRING | Value: + /// Operator-Managed Database + /// - Key: ROOT_PASSWORD | Value: + /// - Key: USER | Value: + /// - Key: PASSWORD | Value: + /// - Key: DATABASE Value: + /// + /// Notes: + /// If you define all secret values for both User-Managed and + /// Operator-Managed database types, the User-Managed connection string will + /// take precedence and the Operator-Managed values will be ignored. If the + /// secret is left blank, the default behavior is to use an Operator-Managed + /// database with strong randomly-generated database credentials. #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, /// Defines the storage size for the database. ie 50Gi #[serde(default, skip_serializing_if = "Option::is_none", rename = "storageSize")] pub storage_size: Option, - /// Defines the type of database to use for an Operator-Managed database. This value is ignored when using a User-Managed database. + /// Defines the type of database to use for an Operator-Managed database. This + /// value is ignored when using a User-Managed database. #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] pub r#type: Option, /// Defines the cluster version for the database to use @@ -626,15 +961,23 @@ pub struct ClusterInstallationDatabase { /// Defines the resource requests and limits for the database pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationDatabaseResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -642,8 +985,15 @@ pub struct ClusterInstallationDatabaseResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationDatabaseResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// ElasticSearch defines the ElasticSearch configuration for a ClusterInstallation. @@ -663,31 +1013,46 @@ pub struct ClusterInstallationLivenessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -695,18 +1060,24 @@ pub struct ClusterInstallationLivenessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationLivenessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationLivenessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -714,7 +1085,8 @@ pub struct ClusterInstallationLivenessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationLivenessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -723,9 +1095,12 @@ pub struct ClusterInstallationLivenessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -733,7 +1108,8 @@ pub struct ClusterInstallationLivenessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationLivenessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -745,7 +1121,9 @@ pub struct ClusterInstallationLivenessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } @@ -754,7 +1132,15 @@ pub struct ClusterInstallationLivenessProbeTcpSocket { pub struct ClusterInstallationMattermostEnv { /// Name of the environment variable. Must be a C_IDENTIFIER. pub name: String, - /// Variable references $(VAR_NAME) are expanded using the previously defined environment variables in the container and any service environment variables. If a variable cannot be resolved, the reference in the input string will be unchanged. Double $$ are reduced to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". Escaped references will never be expanded, regardless of whether the variable exists or not. Defaults to "". + /// Variable references $(VAR_NAME) are expanded + /// using the previously defined environment variables in the container and + /// any service environment variables. If a variable cannot be resolved, + /// the reference in the input string will be unchanged. Double $$ are reduced + /// to a single $, which allows for escaping the $(VAR_NAME) syntax: i.e. + /// "$$(VAR_NAME)" will produce the string literal "$(VAR_NAME)". + /// Escaped references will never be expanded, regardless of whether the variable + /// exists or not. + /// Defaults to "". #[serde(default, skip_serializing_if = "Option::is_none")] pub value: Option, /// Source for the environment variable's value. Cannot be used if value is not empty. @@ -768,10 +1154,12 @@ pub struct ClusterInstallationMattermostEnvValueFrom { /// Selects a key of a ConfigMap. #[serde(default, skip_serializing_if = "Option::is_none", rename = "configMapKeyRef")] pub config_map_key_ref: Option, - /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. + /// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, + /// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[serde(default, skip_serializing_if = "Option::is_none", rename = "fieldRef")] pub field_ref: Option, - /// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. + /// Selects a resource of the container: only resources limits and requests + /// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[serde(default, skip_serializing_if = "Option::is_none", rename = "resourceFieldRef")] pub resource_field_ref: Option, /// Selects a key of a secret in the pod's namespace @@ -784,7 +1172,11 @@ pub struct ClusterInstallationMattermostEnvValueFrom { pub struct ClusterInstallationMattermostEnvValueFromConfigMapKeyRef { /// The key to select. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the ConfigMap or its key must be defined @@ -792,7 +1184,8 @@ pub struct ClusterInstallationMattermostEnvValueFromConfigMapKeyRef { pub optional: Option, } -/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. +/// Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['']`, `metadata.annotations['']`, +/// spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationMattermostEnvValueFromFieldRef { /// Version of the schema the FieldPath is written in terms of, defaults to "v1". @@ -803,7 +1196,8 @@ pub struct ClusterInstallationMattermostEnvValueFromFieldRef { pub field_path: String, } -/// Selects a resource of the container: only resources limits and requests (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. +/// Selects a resource of the container: only resources limits and requests +/// (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory and requests.ephemeral-storage) are currently supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationMattermostEnvValueFromResourceFieldRef { /// Container name: required for volumes, optional for env vars @@ -821,7 +1215,11 @@ pub struct ClusterInstallationMattermostEnvValueFromResourceFieldRef { pub struct ClusterInstallationMattermostEnvValueFromSecretKeyRef { /// The key of the secret to select from. Must be a valid secret key. pub key: String, - /// 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? + /// Name of the referent. + /// This field is effectively required, but due to backwards compatibility is + /// allowed to be empty. Instances of this type with an empty value here are + /// almost certainly wrong. + /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, /// Specify whether the Secret or its key must be defined @@ -838,13 +1236,20 @@ pub struct ClusterInstallationMinio { /// Set to use an external MinIO deployment or S3. Must also set 'Secret' and 'ExternalBucket'. #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalURL")] pub external_url: Option, - /// Defines the number of Minio replicas. Supply 1 to run Minio in standalone mode with no redundancy. Supply 4 or more to run Minio in distributed mode. Note that it is not possible to upgrade Minio from standalone to distributed mode. Setting this will override the number of replicas set by 'Size'. More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html + /// Defines the number of Minio replicas. + /// Supply 1 to run Minio in standalone mode with no redundancy. + /// Supply 4 or more to run Minio in distributed mode. + /// Note that it is not possible to upgrade Minio from standalone to distributed mode. + /// Setting this will override the number of replicas set by 'Size'. + /// More info: https://docs.min.io/docs/distributed-minio-quickstart-guide.html #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, /// Defines the resource requests and limits for the Minio pods. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// Optionally enter the name of already existing secret. Secret should have two values: "accesskey" and "secretkey". Required when "ExternalURL" is set. + /// Optionally enter the name of already existing secret. + /// Secret should have two values: "accesskey" and "secretkey". + /// Required when "ExternalURL" is set. #[serde(default, skip_serializing_if = "Option::is_none")] pub secret: Option, /// Defines the storage size for Minio. ie 50Gi @@ -855,15 +1260,23 @@ pub struct ClusterInstallationMinio { /// Defines the resource requests and limits for the Minio pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationMinioResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -871,8 +1284,15 @@ pub struct ClusterInstallationMinioResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationMinioResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } /// Defines the probe to check if the application is ready to accept traffic. @@ -881,31 +1301,46 @@ pub struct ClusterInstallationReadinessProbe { /// Exec specifies the action to take. #[serde(default, skip_serializing_if = "Option::is_none")] pub exec: Option, - /// Minimum consecutive failures for the probe to be considered failed after having succeeded. Defaults to 3. Minimum value is 1. + /// Minimum consecutive failures for the probe to be considered failed after having succeeded. + /// Defaults to 3. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failureThreshold")] pub failure_threshold: Option, - /// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. + /// GRPC specifies an action involving a GRPC port. #[serde(default, skip_serializing_if = "Option::is_none")] pub grpc: Option, /// HTTPGet specifies the http request to perform. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpGet")] pub http_get: Option, - /// Number of seconds after the container has started before liveness probes are initiated. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after the container has started before liveness probes are initiated. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "initialDelaySeconds")] pub initial_delay_seconds: Option, - /// How often (in seconds) to perform the probe. Default to 10 seconds. Minimum value is 1. + /// How often (in seconds) to perform the probe. + /// Default to 10 seconds. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "periodSeconds")] pub period_seconds: Option, - /// Minimum consecutive successes for the probe to be considered successful after having failed. Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. + /// Minimum consecutive successes for the probe to be considered successful after having failed. + /// Defaults to 1. Must be 1 for liveness and startup. Minimum value is 1. #[serde(default, skip_serializing_if = "Option::is_none", rename = "successThreshold")] pub success_threshold: Option, /// TCPSocket specifies an action involving a TCP port. #[serde(default, skip_serializing_if = "Option::is_none", rename = "tcpSocket")] pub tcp_socket: Option, - /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. The grace period is the duration in seconds after the processes running in the pod are sent a termination signal and the time when the processes are forcibly halted with a kill signal. Set this value longer than the expected cleanup time for your process. If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this value overrides the value provided by the pod spec. Value must be non-negative integer. The value zero indicates stop immediately via the kill signal (no opportunity to shut down). This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. + /// Optional duration in seconds the pod needs to terminate gracefully upon probe failure. + /// The grace period is the duration in seconds after the processes running in the pod are sent + /// a termination signal and the time when the processes are forcibly halted with a kill signal. + /// Set this value longer than the expected cleanup time for your process. + /// If this value is nil, the pod's terminationGracePeriodSeconds will be used. Otherwise, this + /// value overrides the value provided by the pod spec. + /// Value must be non-negative integer. The value zero indicates stop immediately via + /// the kill signal (no opportunity to shut down). + /// This is a beta field and requires enabling ProbeTerminationGracePeriod feature gate. + /// Minimum value is 1. spec.terminationGracePeriodSeconds is used if unset. #[serde(default, skip_serializing_if = "Option::is_none", rename = "terminationGracePeriodSeconds")] pub termination_grace_period_seconds: Option, - /// Number of seconds after which the probe times out. Defaults to 1 second. Minimum value is 1. More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes + /// Number of seconds after which the probe times out. + /// Defaults to 1 second. Minimum value is 1. + /// More info: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } @@ -913,18 +1348,24 @@ pub struct ClusterInstallationReadinessProbe { /// Exec specifies the action to take. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationReadinessProbeExec { - /// Command is the command line to execute inside the container, the working directory for the command is root ('/') in the container's filesystem. The command is simply exec'd, it is not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use a shell, you need to explicitly call out to that shell. Exit status of 0 is treated as live/healthy and non-zero is unhealthy. + /// Command is the command line to execute inside the container, the working directory for the + /// command is root ('/') in the container's filesystem. The command is simply exec'd, it is + /// not run inside a shell, so traditional shell instructions ('|', etc) won't work. To use + /// a shell, you need to explicitly call out to that shell. + /// Exit status of 0 is treated as live/healthy and non-zero is unhealthy. #[serde(default, skip_serializing_if = "Option::is_none")] pub command: Option>, } -/// GRPC specifies an action involving a GRPC port. This is a beta field and requires enabling GRPCContainerProbe feature gate. +/// GRPC specifies an action involving a GRPC port. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationReadinessProbeGrpc { /// Port number of the gRPC service. Number must be in the range 1 to 65535. pub port: i32, - /// Service is the name of the service to place in the gRPC HealthCheckRequest (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). - /// If this is not specified, the default behavior is defined by gRPC. + /// Service is the name of the service to place in the gRPC HealthCheckRequest + /// (see https://github.com/grpc/grpc/blob/master/doc/health-checking.md). + /// + /// If this is not specified, the default behavior is defined by gRPC. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, } @@ -932,7 +1373,8 @@ pub struct ClusterInstallationReadinessProbeGrpc { /// HTTPGet specifies the http request to perform. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationReadinessProbeHttpGet { - /// Host name to connect to, defaults to the pod IP. You probably want to set "Host" in httpHeaders instead. + /// Host name to connect to, defaults to the pod IP. You probably want to set + /// "Host" in httpHeaders instead. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, /// Custom headers to set in the request. HTTP allows repeated headers. @@ -941,9 +1383,12 @@ pub struct ClusterInstallationReadinessProbeHttpGet { /// Path to access on the HTTP server. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Name or number of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Name or number of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, - /// Scheme to use for connecting to the host. Defaults to HTTP. + /// Scheme to use for connecting to the host. + /// Defaults to HTTP. #[serde(default, skip_serializing_if = "Option::is_none")] pub scheme: Option, } @@ -951,7 +1396,8 @@ pub struct ClusterInstallationReadinessProbeHttpGet { /// HTTPHeader describes a custom header to be used in HTTP probes #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationReadinessProbeHttpGetHttpHeaders { - /// The header field name. This will be canonicalized upon output, so case-variant names will be understood as the same header. + /// The header field name. + /// This will be canonicalized upon output, so case-variant names will be understood as the same header. pub name: String, /// The header field value pub value: String, @@ -963,22 +1409,32 @@ pub struct ClusterInstallationReadinessProbeTcpSocket { /// Optional: Host name to connect to, defaults to the pod IP. #[serde(default, skip_serializing_if = "Option::is_none")] pub host: Option, - /// Number or name of the port to access on the container. Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. + /// Number or name of the port to access on the container. + /// Number must be in the range 1 to 65535. + /// Name must be an IANA_SVC_NAME. pub port: IntOrString, } /// Defines the resource requests and limits for the Mattermost app server pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -986,11 +1442,21 @@ pub struct ClusterInstallationResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, + /// Request is the name chosen for a request in the referenced claim. + /// If empty, everything from the claim is made available, otherwise + /// only the result of this request. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub request: Option, } -/// Most recent observed status of the Mattermost cluster. Read-only. Not included when requesting from the apiserver, only from the Mattermost Operator API itself. More info: https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status +/// Most recent observed status of the Mattermost cluster. Read-only. Not +/// included when requesting from the apiserver, only from the Mattermost +/// Operator API itself. More info: +/// https://github.com/kubernetes/community/blob/master/contributors/devel/api-conventions.md#spec-and-status #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ClusterInstallationStatus { /// The name of the blue deployment in BlueGreen @@ -1014,7 +1480,8 @@ pub struct ClusterInstallationStatus { /// Represents the running state of the Mattermost instance #[serde(default, skip_serializing_if = "Option::is_none")] pub state: Option, - /// Total number of non-terminated pods targeted by this Mattermost deployment that are running with the desired image. + /// Total number of non-terminated pods targeted by this Mattermost deployment + /// that are running with the desired image. #[serde(default, skip_serializing_if = "Option::is_none", rename = "updatedReplicas")] pub updated_replicas: Option, /// The version currently running in the Mattermost instance diff --git a/kube-custom-resources-rs/src/mattermost_com/v1alpha1/mattermostrestoredbs.rs b/kube-custom-resources-rs/src/mattermost_com/v1alpha1/mattermostrestoredbs.rs index 71d28843e..c8f9b2707 100644 --- a/kube-custom-resources-rs/src/mattermost_com/v1alpha1/mattermostrestoredbs.rs +++ b/kube-custom-resources-rs/src/mattermost_com/v1alpha1/mattermostrestoredbs.rs @@ -24,16 +24,20 @@ pub struct MattermostRestoreDBSpec { /// MattermostClusterName defines the ClusterInstallation name. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostClusterName")] pub mattermost_cluster_name: Option, - /// MattermostDBName defines the database name. Need to set if different from `mattermost`. + /// MattermostDBName defines the database name. + /// Need to set if different from `mattermost`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostDBName")] pub mattermost_db_name: Option, - /// MattermostDBPassword defines the user password to access the database. Need to set if the user is different from the one created by the operator. + /// MattermostDBPassword defines the user password to access the database. + /// Need to set if the user is different from the one created by the operator. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostDBPassword")] pub mattermost_db_password: Option, - /// MattermostDBUser defines the user to access the database. Need to set if the user is different from `mmuser`. + /// MattermostDBUser defines the user to access the database. + /// Need to set if the user is different from `mmuser`. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mattermostDBUser")] pub mattermost_db_user: Option, - /// RestoreSecret defines the secret that holds the credentials to MySQL Operator be able to download the DB backup file + /// RestoreSecret defines the secret that holds the credentials to + /// MySQL Operator be able to download the DB backup file #[serde(default, skip_serializing_if = "Option::is_none", rename = "restoreSecret")] pub restore_secret: Option, } diff --git a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/alertmanagerconfigs.rs b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/alertmanagerconfigs.rs index 714200b18..58d4d1423 100644 --- a/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/alertmanagerconfigs.rs +++ b/kube-custom-resources-rs/src/monitoring_coreos_com/v1alpha1/alertmanagerconfigs.rs @@ -5564,6 +5564,10 @@ pub struct AlertmanagerConfigReceiversTelegramConfigs { /// Message template #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, + /// The Telegram Group Topic ID. + /// It requires Alertmanager >= 0.26.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "messageThreadID")] + pub message_thread_id: Option, /// Parse mode for telegram message #[serde(default, skip_serializing_if = "Option::is_none", rename = "parseMode")] pub parse_mode: Option, diff --git a/kube-custom-resources-rs/src/monitoring_coreos_com/v1beta1/alertmanagerconfigs.rs b/kube-custom-resources-rs/src/monitoring_coreos_com/v1beta1/alertmanagerconfigs.rs index ac608e4c0..4390888e8 100644 --- a/kube-custom-resources-rs/src/monitoring_coreos_com/v1beta1/alertmanagerconfigs.rs +++ b/kube-custom-resources-rs/src/monitoring_coreos_com/v1beta1/alertmanagerconfigs.rs @@ -5395,6 +5395,10 @@ pub struct AlertmanagerConfigReceiversTelegramConfigs { /// Message template #[serde(default, skip_serializing_if = "Option::is_none")] pub message: Option, + /// The Telegram Group Topic ID. + /// It requires Alertmanager >= 0.26.0. + #[serde(default, skip_serializing_if = "Option::is_none", rename = "messageThreadID")] + pub message_thread_id: Option, /// Parse mode for telegram message #[serde(default, skip_serializing_if = "Option::is_none", rename = "parseMode")] pub parse_mode: Option, diff --git a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservicecertificates.rs b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservicecertificates.rs index b9366906b..0588f3c34 100644 --- a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservicecertificates.rs +++ b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservicecertificates.rs @@ -19,39 +19,47 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct DiscoveryServiceCertificateSpec { - /// CertificateRenewalConfig configures the certificate renewal process. If unset default behavior is to renew the certificate but not notify of renewals. + /// CertificateRenewalConfig configures the certificate renewal process. If unset default + /// behavior is to renew the certificate but not notify of renewals. #[serde(default, skip_serializing_if = "Option::is_none", rename = "certificateRenewal")] pub certificate_renewal: Option, /// CommonName is the CommonName of the certificate #[serde(rename = "commonName")] pub common_name: String, - /// Hosts is the list of hosts the certificate is valid for. Only use when 'IsServerCertificate' is true. If unset, the CommonName field will be used to populate the valid hosts of the certificate. + /// Hosts is the list of hosts the certificate is valid for. Only + /// use when 'IsServerCertificate' is true. If unset, the CommonName + /// field will be used to populate the valid hosts of the certificate. #[serde(default, skip_serializing_if = "Option::is_none")] pub hosts: Option>, /// IsCA is a boolean specifying that the certificate is a CA #[serde(default, skip_serializing_if = "Option::is_none", rename = "isCA")] pub is_ca: Option, - /// SecretRef is a reference to the secret that will hold the certificate and the private key. + /// SecretRef is a reference to the secret that will hold the certificate + /// and the private key. #[serde(rename = "secretRef")] pub secret_ref: DiscoveryServiceCertificateSecretRef, - /// IsServerCertificate is a boolean specifying if the certificate should be issued with server auth usage enabled + /// IsServerCertificate is a boolean specifying if the certificate should be + /// issued with server auth usage enabled #[serde(default, skip_serializing_if = "Option::is_none")] pub server: Option, - /// Signer specifies the signer to use to create this certificate. Supported signers are CertManager and SelfSigned. + /// Signer specifies the signer to use to create this certificate. Supported + /// signers are CertManager and SelfSigned. pub signer: DiscoveryServiceCertificateSigner, /// ValidFor specifies the validity of the certificate in seconds #[serde(rename = "validFor")] pub valid_for: i64, } -/// CertificateRenewalConfig configures the certificate renewal process. If unset default behavior is to renew the certificate but not notify of renewals. +/// CertificateRenewalConfig configures the certificate renewal process. If unset default +/// behavior is to renew the certificate but not notify of renewals. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceCertificateCertificateRenewal { /// Enabled is a flag to enable or disable renewal of the certificate pub enabled: bool, } -/// SecretRef is a reference to the secret that will hold the certificate and the private key. +/// SecretRef is a reference to the secret that will hold the certificate +/// and the private key. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceCertificateSecretRef { /// name is unique within a namespace to reference a secret resource. @@ -62,7 +70,8 @@ pub struct DiscoveryServiceCertificateSecretRef { pub namespace: Option, } -/// Signer specifies the signer to use to create this certificate. Supported signers are CertManager and SelfSigned. +/// Signer specifies the signer to use to create this certificate. Supported +/// signers are CertManager and SelfSigned. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceCertificateSigner { /// CASigned holds specific configuration for the CASigned signer @@ -100,7 +109,8 @@ pub struct DiscoveryServiceCertificateSignerSelfSigned { /// DiscoveryServiceCertificateStatus defines the observed state of DiscoveryServiceCertificate #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceCertificateStatus { - /// CertificateHash stores the current hash of the certificate. It is used for other controllers to validate if a certificate has been re-issued. + /// CertificateHash stores the current hash of the certificate. It is used + /// for other controllers to validate if a certificate has been re-issued. #[serde(default, skip_serializing_if = "Option::is_none", rename = "certificateHash")] pub certificate_hash: Option, /// Conditions represent the latest available observations of an object's state @@ -109,7 +119,8 @@ pub struct DiscoveryServiceCertificateStatus { /// NotAfter is the time at which the certificate expires #[serde(default, skip_serializing_if = "Option::is_none", rename = "notAfter")] pub not_after: Option, - /// NotBefore is the time at which the certificate starts being valid + /// NotBefore is the time at which the certificate starts + /// being valid #[serde(default, skip_serializing_if = "Option::is_none", rename = "notBefore")] pub not_before: Option, /// Ready is a boolean that specifies if the certificate is ready to be used diff --git a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservices.rs b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservices.rs index e38010851..166e8b4a2 100644 --- a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservices.rs +++ b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/discoveryservices.rs @@ -21,7 +21,8 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct DiscoveryServiceSpec { - /// Debug enables debugging log level for the discovery service controllers. It is safe to use since secret data is never shown in the logs. + /// Debug enables debugging log level for the discovery service controllers. It is safe to + /// use since secret data is never shown in the logs. #[serde(default, skip_serializing_if = "Option::is_none")] pub debug: Option, /// Image holds the image to use for the discovery service Deployment @@ -30,7 +31,8 @@ pub struct DiscoveryServiceSpec { /// MetricsPort is the port where metrics are served. Defaults to 8383. #[serde(default, skip_serializing_if = "Option::is_none", rename = "metricsPort")] pub metrics_port: Option, - /// PKIConfig has configuration for the PKI that marin3r manages for the different certificates it requires + /// PKIConfig has configuration for the PKI that marin3r manages for the + /// different certificates it requires #[serde(default, skip_serializing_if = "Option::is_none", rename = "pkiConfg")] pub pki_confg: Option, /// PriorityClass to assign the discovery service Pod to @@ -39,7 +41,9 @@ pub struct DiscoveryServiceSpec { /// ProbePort is the port where healthz endpoint is served. Defaults to 8384. #[serde(default, skip_serializing_if = "Option::is_none", rename = "probePort")] pub probe_port: Option, - /// Resources holds the Resource Requirements to use for the discovery service Deployment. When not set it defaults to no resource requests nor limits. CPU and Memory resources are supported. + /// Resources holds the Resource Requirements to use for the discovery service + /// Deployment. When not set it defaults to no resource requests nor limits. + /// CPU and Memory resources are supported. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, /// ServiceConfig configures the way the DiscoveryService endpoints are exposed @@ -50,18 +54,22 @@ pub struct DiscoveryServiceSpec { pub xds_server_port: Option, } -/// PKIConfig has configuration for the PKI that marin3r manages for the different certificates it requires +/// PKIConfig has configuration for the PKI that marin3r manages for the +/// different certificates it requires #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServicePkiConfg { - /// CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server. + /// CertificateOptions specifies options to generate the server certificate used both + /// for the xDS server and the mutating webhook server. #[serde(rename = "rootCertificateAuthority")] pub root_certificate_authority: DiscoveryServicePkiConfgRootCertificateAuthority, - /// CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server. + /// CertificateOptions specifies options to generate the server certificate used both + /// for the xDS server and the mutating webhook server. #[serde(rename = "serverCertificate")] pub server_certificate: DiscoveryServicePkiConfgServerCertificate, } -/// CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server. +/// CertificateOptions specifies options to generate the server certificate used both +/// for the xDS server and the mutating webhook server. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServicePkiConfgRootCertificateAuthority { pub duration: String, @@ -69,7 +77,8 @@ pub struct DiscoveryServicePkiConfgRootCertificateAuthority { pub secret_name: String, } -/// CertificateOptions specifies options to generate the server certificate used both for the xDS server and the mutating webhook server. +/// CertificateOptions specifies options to generate the server certificate used both +/// for the xDS server and the mutating webhook server. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServicePkiConfgServerCertificate { pub duration: String, @@ -77,18 +86,30 @@ pub struct DiscoveryServicePkiConfgServerCertificate { pub secret_name: String, } -/// Resources holds the Resource Requirements to use for the discovery service Deployment. When not set it defaults to no resource requests nor limits. CPU and Memory resources are supported. +/// Resources holds the Resource Requirements to use for the discovery service +/// Deployment. When not set it defaults to no resource requests nor limits. +/// CPU and Memory resources are supported. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -96,7 +117,9 @@ pub struct DiscoveryServiceResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct DiscoveryServiceResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, } @@ -126,7 +149,9 @@ pub struct DiscoveryServiceStatusDeploymentStatus { /// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet. + /// Count of hash collisions for the Deployment. The Deployment controller uses this + /// field as a collision avoidance mechanism when it needs to create the name for the + /// newest ReplicaSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")] pub collision_count: Option, /// Represents the latest available observations of a deployment's current state. @@ -141,7 +166,9 @@ pub struct DiscoveryServiceStatusDeploymentStatus { /// Total number of non-terminated pods targeted by this deployment (their labels match the selector). #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created. + /// Total number of unavailable pods targeted by this deployment. This is the total number of + /// pods that are still required for the deployment to have 100% available capacity. They may + /// either be pods that are running but not yet available or pods that still have not been created. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unavailableReplicas")] pub unavailable_replicas: Option, /// Total number of non-terminated pods targeted by this deployment that have the desired template spec. diff --git a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/envoydeployments.rs b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/envoydeployments.rs index 333a4fef9..3504f1bb1 100644 --- a/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/envoydeployments.rs +++ b/kube-custom-resources-rs/src/operator_marin3r_3scale_net/v1alpha1/envoydeployments.rs @@ -30,16 +30,20 @@ pub struct EnvoyDeploymentSpec { /// Affinity configuration for the envoy pods #[serde(default, skip_serializing_if = "Option::is_none")] pub affinity: Option, - /// Defines the local service cluster name where Envoy is running. Defaults to the NodeID in the EnvoyConfig if unset + /// Defines the local service cluster name where Envoy is running. Defaults + /// to the NodeID in the EnvoyConfig if unset #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterID")] pub cluster_id: Option, - /// DiscoveryServiceRef points to a DiscoveryService in the same namespace + /// DiscoveryServiceRef points to a DiscoveryService in the same + /// namespace #[serde(rename = "discoveryServiceRef")] pub discovery_service_ref: String, - /// Defines the duration of the client certificate that is used to authenticate with the DiscoveryService + /// Defines the duration of the client certificate that is used to authenticate + /// with the DiscoveryService #[serde(default, skip_serializing_if = "Option::is_none")] pub duration: Option, - /// EnvoyConfigRef points to an EnvoyConfig in the same namespace that holds the envoy resources for this Deployment + /// EnvoyConfigRef points to an EnvoyConfig in the same namespace + /// that holds the envoy resources for this Deployment #[serde(rename = "envoyConfigRef")] pub envoy_config_ref: String, /// Allows the user to define extra command line arguments for the Envoy process @@ -48,7 +52,8 @@ pub struct EnvoyDeploymentSpec { /// Image is the envoy image and tag to use #[serde(default, skip_serializing_if = "Option::is_none")] pub image: Option, - /// InitManager defines configuration for Envoy's init manager, which handles initialization for Envoy pods + /// InitManager defines configuration for Envoy's init + /// manager, which handles initialization for Envoy pods #[serde(default, skip_serializing_if = "Option::is_none", rename = "initManager")] pub init_manager: Option, /// Liveness probe for the envoy pods @@ -63,13 +68,16 @@ pub struct EnvoyDeploymentSpec { /// Readiness probe for the envoy pods #[serde(default, skip_serializing_if = "Option::is_none", rename = "readinessProbe")] pub readiness_probe: Option, - /// Replicas configures the number of replicas in the Deployment. One of 'static', 'dynamic' can be set. If both are set, static has precedence. + /// Replicas configures the number of replicas in the Deployment. One of + /// 'static', 'dynamic' can be set. If both are set, static has precedence. #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Resources holds the resource requirements to use for the Envoy Deployment. Defaults to no resource requests nor limits. + /// Resources holds the resource requirements to use for the Envoy + /// Deployment. Defaults to no resource requests nor limits. #[serde(default, skip_serializing_if = "Option::is_none")] pub resources: Option, - /// ShutdownManager defines configuration for Envoy's shutdown manager, which handles graceful termination of Envoy pods + /// ShutdownManager defines configuration for Envoy's shutdown + /// manager, which handles graceful termination of Envoy pods #[serde(default, skip_serializing_if = "Option::is_none", rename = "shutdownManager")] pub shutdown_manager: Option, } @@ -91,15 +99,28 @@ pub struct EnvoyDeploymentAffinity { /// Describes node affinity scheduling rules for the pod. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node matches the corresponding matchExpressions; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node matches the corresponding matchExpressions; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to an update), the system + /// may or may not try to eventually evict the pod from its node. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option, } -/// An empty preferred scheduling term matches all objects with implicit weight 0 (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). +/// An empty preferred scheduling term matches all objects with implicit weight 0 +/// (i.e. it's a no-op). A null preferred scheduling term matches no objects (i.e. is also a no-op). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecution { /// A node selector term, associated with the corresponding weight. @@ -119,31 +140,47 @@ pub struct EnvoyDeploymentAffinityNodeAffinityPreferredDuringSchedulingIgnoredDu pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityPreferredDuringSchedulingIgnoredDuringExecutionPreferenceMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to an update), the system may or may not try to eventually evict the pod from its node. +/// If the affinity requirements specified by this field are not met at +/// scheduling time, the pod will not be scheduled onto the node. +/// If the affinity requirements specified by this field cease to be met +/// at some point during pod execution (e.g. due to an update), the system +/// may or may not try to eventually evict the pod from its node. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecution { /// Required. A list of node selector terms. The terms are ORed. @@ -151,7 +188,9 @@ pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDur pub node_selector_terms: Vec, } -/// A null or empty node selector term matches no objects. The requirements of them are ANDed. The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. +/// A null or empty node selector term matches no objects. The requirements of +/// them are ANDed. +/// The TopologySelectorTerm type implements a subset of the NodeSelectorTerm. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTerms { /// A list of node selector requirements by node's labels. @@ -162,26 +201,38 @@ pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDur pub match_fields: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchExpressions { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A node selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A node selector requirement is a selector that contains values, a key, and an operator +/// that relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDuringExecutionNodeSelectorTermsMatchFields { /// The label key that the selector applies to. pub key: String, - /// Represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. + /// Represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt. pub operator: String, - /// An array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. If the operator is Gt or Lt, the values array must have a single element, which will be interpreted as an integer. This array is replaced during a strategic merge patch. + /// An array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. If the operator is Gt or Lt, the values + /// array must have a single element, which will be interpreted as an integer. + /// This array is replaced during a strategic merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -189,10 +240,24 @@ pub struct EnvoyDeploymentAffinityNodeAffinityRequiredDuringSchedulingIgnoredDur /// Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -203,144 +268,244 @@ pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDur /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, - /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } -/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. +/// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, - /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } -/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. +/// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -348,10 +513,24 @@ pub struct EnvoyDeploymentAffinityPodAffinityRequiredDuringSchedulingIgnoredDuri /// Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinity { - /// The scheduler will prefer to schedule pods to nodes that satisfy the anti-affinity expressions specified by this field, but it may choose a node that violates one or more of the expressions. The node that is most preferred is the one with the greatest sum of weights, i.e. for each node that meets all of the scheduling requirements (resource request, requiredDuringScheduling anti-affinity expressions, etc.), compute a sum by iterating through the elements of this field and adding "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the node(s) with the highest sum are the most preferred. + /// The scheduler will prefer to schedule pods to nodes that satisfy + /// the anti-affinity expressions specified by this field, but it may choose + /// a node that violates one or more of the expressions. The node that is + /// most preferred is the one with the greatest sum of weights, i.e. + /// for each node that meets all of the scheduling requirements (resource + /// request, requiredDuringScheduling anti-affinity expressions, etc.), + /// compute a sum by iterating through the elements of this field and adding + /// "weight" to the sum if the node has pods which matches the corresponding podAffinityTerm; the + /// node(s) with the highest sum are the most preferred. #[serde(default, skip_serializing_if = "Option::is_none", rename = "preferredDuringSchedulingIgnoredDuringExecution")] pub preferred_during_scheduling_ignored_during_execution: Option>, - /// If the anti-affinity requirements specified by this field are not met at scheduling time, the pod will not be scheduled onto the node. If the anti-affinity requirements specified by this field cease to be met at some point during pod execution (e.g. due to a pod label update), the system may or may not try to eventually evict the pod from its node. When there are multiple elements, the lists of nodes corresponding to each podAffinityTerm are intersected, i.e. all terms must be satisfied. + /// If the anti-affinity requirements specified by this field are not met at + /// scheduling time, the pod will not be scheduled onto the node. + /// If the anti-affinity requirements specified by this field cease to be met + /// at some point during pod execution (e.g. due to a pod label update), the + /// system may or may not try to eventually evict the pod from its node. + /// When there are multiple elements, the lists of nodes corresponding to each + /// podAffinityTerm are intersected, i.e. all terms must be satisfied. #[serde(default, skip_serializing_if = "Option::is_none", rename = "requiredDuringSchedulingIgnoredDuringExecution")] pub required_during_scheduling_ignored_during_execution: Option>, } @@ -362,149 +541,250 @@ pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnore /// Required. A pod affinity term, associated with the corresponding weight. #[serde(rename = "podAffinityTerm")] pub pod_affinity_term: EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm, - /// weight associated with matching the corresponding podAffinityTerm, in the range 1-100. + /// weight associated with matching the corresponding podAffinityTerm, + /// in the range 1-100. pub weight: i32, } /// Required. A pod affinity term, associated with the corresponding weight. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTerm { - /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, - /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } -/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. +/// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityPreferredDuringSchedulingIgnoredDuringExecutionPodAffinityTermNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// Defines a set of pods (namely those matching the labelSelector relative to the given namespace(s)) that this pod should be co-located (affinity) or not co-located (anti-affinity) with, where co-located is defined as running on a node whose value of the label with key matches that of any node on which a pod of the set of pods is running +/// Defines a set of pods (namely those matching the labelSelector +/// relative to the given namespace(s)) that this pod should be +/// co-located (affinity) or not co-located (anti-affinity) with, +/// where co-located is defined as running on a node whose value of +/// the label with key matches that of any node on which +/// a pod of the set of pods is running #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecution { - /// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. + /// A label query over a set of resources, in this case pods. + /// If it's null, this PodAffinityTerm matches with no Pods. #[serde(default, skip_serializing_if = "Option::is_none", rename = "labelSelector")] pub label_selector: Option, - /// MatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. Also, MatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key in (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MatchLabelKeys and LabelSelector. + /// Also, MatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabelKeys")] pub match_label_keys: Option>, - /// MismatchLabelKeys is a set of pod label keys to select which pods will be taken into consideration. The keys are used to lookup values from the incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` to select the group of existing pods which pods will be taken into consideration for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming pod labels will be ignored. The default value is empty. The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. + /// MismatchLabelKeys is a set of pod label keys to select which pods will + /// be taken into consideration. The keys are used to lookup values from the + /// incoming pod labels, those key-value labels are merged with `LabelSelector` as `key notin (value)` + /// to select the group of existing pods which pods will be taken into consideration + /// for the incoming pod's pod (anti) affinity. Keys that don't exist in the incoming + /// pod labels will be ignored. The default value is empty. + /// The same key is forbidden to exist in both MismatchLabelKeys and LabelSelector. + /// Also, MismatchLabelKeys cannot be set when LabelSelector isn't set. + /// This is an alpha field and requires enabling MatchLabelKeysInPodAffinity feature gate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "mismatchLabelKeys")] pub mismatch_label_keys: Option>, - /// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. + /// A label query over the set of namespaces that the term applies to. + /// The term is applied to the union of the namespaces selected by this field + /// and the ones listed in the namespaces field. + /// null selector and null or empty namespaces list means "this pod's namespace". + /// An empty selector ({}) matches all namespaces. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// namespaces specifies a static list of namespace names that the term applies to. The term is applied to the union of the namespaces listed in this field and the ones selected by namespaceSelector. null or empty namespaces list and null namespaceSelector means "this pod's namespace". + /// namespaces specifies a static list of namespace names that the term applies to. + /// The term is applied to the union of the namespaces listed in this field + /// and the ones selected by namespaceSelector. + /// null or empty namespaces list and null namespaceSelector means "this pod's namespace". #[serde(default, skip_serializing_if = "Option::is_none")] pub namespaces: Option>, - /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching the labelSelector in the specified namespaces, where co-located is defined as running on a node whose value of the label with key topologyKey matches that of any node on which any of the selected pods is running. Empty topologyKey is not allowed. + /// This pod should be co-located (affinity) or not co-located (anti-affinity) with the pods matching + /// the labelSelector in the specified namespaces, where co-located is defined as running on a node + /// whose value of the label with key topologyKey matches that of any node on which any of the + /// selected pods is running. + /// Empty topologyKey is not allowed. #[serde(rename = "topologyKey")] pub topology_key: String, } -/// A label query over a set of resources, in this case pods. If it's null, this PodAffinityTerm matches with no Pods. +/// A label query over a set of resources, in this case pods. +/// If it's null, this PodAffinityTerm matches with no Pods. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionLabelSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// A label query over the set of namespaces that the term applies to. The term is applied to the union of the namespaces selected by this field and the ones listed in the namespaces field. null selector and null or empty namespaces list means "this pod's namespace". An empty selector ({}) matches all namespaces. +/// A label query over the set of namespaces that the term applies to. +/// The term is applied to the union of the namespaces selected by this field +/// and the ones listed in the namespaces field. +/// null selector and null or empty namespaces list means "this pod's namespace". +/// An empty selector ({}) matches all namespaces. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentAffinityPodAntiAffinityRequiredDuringSchedulingIgnoredDuringExecutionNamespaceSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } -/// InitManager defines configuration for Envoy's init manager, which handles initialization for Envoy pods +/// InitManager defines configuration for Envoy's init +/// manager, which handles initialization for Envoy pods #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentInitManager { /// Image is the init manager image and tag to use @@ -535,10 +815,16 @@ pub struct EnvoyDeploymentLivenessProbe { /// Configures PodDisruptionBudget for the envoy Pods #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentPodDisruptionBudget { - /// An eviction is allowed if at most "maxUnavailable" pods selected by "selector" are unavailable after the eviction, i.e. even in absence of the evicted pod. For example, one can prevent all voluntary evictions by specifying 0. This is a mutually exclusive setting with "minAvailable". + /// An eviction is allowed if at most "maxUnavailable" pods selected by + /// "selector" are unavailable after the eviction, i.e. even in absence of + /// the evicted pod. For example, one can prevent all voluntary evictions + /// by specifying 0. This is a mutually exclusive setting with "minAvailable". #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxUnavailable")] pub max_unavailable: Option, - /// An eviction is allowed if at least "minAvailable" pods selected by "selector" will still be available after the eviction, i.e. even in the absence of the evicted pod. So for example you can prevent all voluntary evictions by specifying "100%". + /// An eviction is allowed if at least "minAvailable" pods selected by + /// "selector" will still be available after the eviction, i.e. even in the + /// absence of the evicted pod. So for example you can prevent all voluntary + /// evictions by specifying "100%". #[serde(default, skip_serializing_if = "Option::is_none", rename = "minAvailable")] pub min_available: Option, } @@ -575,7 +861,8 @@ pub struct EnvoyDeploymentReadinessProbe { pub timeout_seconds: i32, } -/// Replicas configures the number of replicas in the Deployment. One of 'static', 'dynamic' can be set. If both are set, static has precedence. +/// Replicas configures the number of replicas in the Deployment. One of +/// 'static', 'dynamic' can be set. If both are set, static has precedence. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicas { /// Configure a min and max value for the number of pods to autoscale dynamically. @@ -589,41 +876,74 @@ pub struct EnvoyDeploymentReplicas { /// Configure a min and max value for the number of pods to autoscale dynamically. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamic { - /// behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). If not set, the default HPAScalingRules for scale up and scale down are used. + /// behavior configures the scaling behavior of the target + /// in both Up and Down directions (scaleUp and scaleDown fields respectively). + /// If not set, the default HPAScalingRules for scale up and scale down are used. #[serde(default, skip_serializing_if = "Option::is_none")] pub behavior: Option, - /// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. It cannot be less that minReplicas. + /// maxReplicas is the upper limit for the number of replicas to which the autoscaler can scale up. + /// It cannot be less that minReplicas. #[serde(rename = "maxReplicas")] pub max_replicas: i32, - /// metrics contains the specifications for which to use to calculate the desired replica count (the maximum replica count across all metrics will be used). The desired replica count is calculated multiplying the ratio between the target value and the current value by the current number of pods. Ergo, metrics used must decrease as the pod count is increased, and vice-versa. See the individual metric source types for more information about how each type of metric must respond. If not set, the default metric will be set to 80% average CPU utilization. + /// metrics contains the specifications for which to use to calculate the + /// desired replica count (the maximum replica count across all metrics will + /// be used). The desired replica count is calculated multiplying the + /// ratio between the target value and the current value by the current + /// number of pods. Ergo, metrics used must decrease as the pod count is + /// increased, and vice-versa. See the individual metric source types for + /// more information about how each type of metric must respond. + /// If not set, the default metric will be set to 80% average CPU utilization. #[serde(default, skip_serializing_if = "Option::is_none")] pub metrics: Option>, - /// minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available. + /// minReplicas is the lower limit for the number of replicas to which the autoscaler + /// can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the + /// alpha feature gate HPAScaleToZero is enabled and at least one Object or External + /// metric is configured. Scaling is active as long as at least one metric value is + /// available. #[serde(default, skip_serializing_if = "Option::is_none", rename = "minReplicas")] pub min_replicas: Option, } -/// behavior configures the scaling behavior of the target in both Up and Down directions (scaleUp and scaleDown fields respectively). If not set, the default HPAScalingRules for scale up and scale down are used. +/// behavior configures the scaling behavior of the target +/// in both Up and Down directions (scaleUp and scaleDown fields respectively). +/// If not set, the default HPAScalingRules for scale up and scale down are used. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicBehavior { - /// scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used). + /// scaleDown is scaling policy for scaling Down. + /// If not set, the default value is to allow to scale down to minReplicas pods, with a + /// 300 second stabilization window (i.e., the highest recommendation for + /// the last 300sec is used). #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleDown")] pub scale_down: Option, - /// scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of: * increase no more than 4 pods per 60 seconds * double the number of pods per 60 seconds No stabilization is used. + /// scaleUp is scaling policy for scaling Up. + /// If not set, the default value is the higher of: + /// * increase no more than 4 pods per 60 seconds + /// * double the number of pods per 60 seconds + /// No stabilization is used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "scaleUp")] pub scale_up: Option, } -/// scaleDown is scaling policy for scaling Down. If not set, the default value is to allow to scale down to minReplicas pods, with a 300 second stabilization window (i.e., the highest recommendation for the last 300sec is used). +/// scaleDown is scaling policy for scaling Down. +/// If not set, the default value is to allow to scale down to minReplicas pods, with a +/// 300 second stabilization window (i.e., the highest recommendation for +/// the last 300sec is used). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleDown { - /// policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid + /// policies is a list of potential scaling polices which can be used during scaling. + /// At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid #[serde(default, skip_serializing_if = "Option::is_none")] pub policies: Option>, - /// selectPolicy is used to specify which policy should be used. If not set, the default value Max is used. + /// selectPolicy is used to specify which policy should be used. + /// If not set, the default value Max is used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "selectPolicy")] pub select_policy: Option, - /// stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). + /// stabilizationWindowSeconds is the number of seconds for which past recommendations should be + /// considered while scaling up or scaling down. + /// StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). + /// If not set, use the default values: + /// - For scale up: 0 (i.e. no stabilization is done). + /// - For scale down: 300 (i.e. the stabilization window is 300 seconds long). #[serde(default, skip_serializing_if = "Option::is_none", rename = "stabilizationWindowSeconds")] pub stabilization_window_seconds: Option, } @@ -631,26 +951,39 @@ pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleDown { /// HPAScalingPolicy is a single policy which must hold true for a specified past interval. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleDownPolicies { - /// periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). + /// periodSeconds specifies the window of time for which the policy should hold true. + /// PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). #[serde(rename = "periodSeconds")] pub period_seconds: i32, /// type is used to specify the scaling policy. #[serde(rename = "type")] pub r#type: String, - /// value contains the amount of change which is permitted by the policy. It must be greater than zero + /// value contains the amount of change which is permitted by the policy. + /// It must be greater than zero pub value: i32, } -/// scaleUp is scaling policy for scaling Up. If not set, the default value is the higher of: * increase no more than 4 pods per 60 seconds * double the number of pods per 60 seconds No stabilization is used. +/// scaleUp is scaling policy for scaling Up. +/// If not set, the default value is the higher of: +/// * increase no more than 4 pods per 60 seconds +/// * double the number of pods per 60 seconds +/// No stabilization is used. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleUp { - /// policies is a list of potential scaling polices which can be used during scaling. At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid + /// policies is a list of potential scaling polices which can be used during scaling. + /// At least one policy must be specified, otherwise the HPAScalingRules will be discarded as invalid #[serde(default, skip_serializing_if = "Option::is_none")] pub policies: Option>, - /// selectPolicy is used to specify which policy should be used. If not set, the default value Max is used. + /// selectPolicy is used to specify which policy should be used. + /// If not set, the default value Max is used. #[serde(default, skip_serializing_if = "Option::is_none", rename = "selectPolicy")] pub select_policy: Option, - /// stabilizationWindowSeconds is the number of seconds for which past recommendations should be considered while scaling up or scaling down. StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). If not set, use the default values: - For scale up: 0 (i.e. no stabilization is done). - For scale down: 300 (i.e. the stabilization window is 300 seconds long). + /// stabilizationWindowSeconds is the number of seconds for which past recommendations should be + /// considered while scaling up or scaling down. + /// StabilizationWindowSeconds must be greater than or equal to zero and less than or equal to 3600 (one hour). + /// If not set, use the default values: + /// - For scale up: 0 (i.e. no stabilization is done). + /// - For scale down: 300 (i.e. the stabilization window is 300 seconds long). #[serde(default, skip_serializing_if = "Option::is_none", rename = "stabilizationWindowSeconds")] pub stabilization_window_seconds: Option, } @@ -658,40 +991,67 @@ pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleUp { /// HPAScalingPolicy is a single policy which must hold true for a specified past interval. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicBehaviorScaleUpPolicies { - /// periodSeconds specifies the window of time for which the policy should hold true. PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). + /// periodSeconds specifies the window of time for which the policy should hold true. + /// PeriodSeconds must be greater than zero and less than or equal to 1800 (30 min). #[serde(rename = "periodSeconds")] pub period_seconds: i32, /// type is used to specify the scaling policy. #[serde(rename = "type")] pub r#type: String, - /// value contains the amount of change which is permitted by the policy. It must be greater than zero + /// value contains the amount of change which is permitted by the policy. + /// It must be greater than zero pub value: i32, } -/// MetricSpec specifies how to scale based on a single metric (only `type` and one other matching field should be set at once). +/// MetricSpec specifies how to scale based on a single metric +/// (only `type` and one other matching field should be set at once). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetrics { - /// containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. + /// containerResource refers to a resource metric (such as those specified in + /// requests and limits) known to Kubernetes describing a single container in + /// each pod of the current scale target (e.g. CPU or memory). Such metrics are + /// built in to Kubernetes, and have special scaling options on top of those + /// available to normal per-pod metrics using the "pods" source. + /// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. #[serde(default, skip_serializing_if = "Option::is_none", rename = "containerResource")] pub container_resource: Option, - /// external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). + /// external refers to a global metric that is not associated + /// with any Kubernetes object. It allows autoscaling based on information + /// coming from components running outside of cluster + /// (for example length of queue in cloud messaging service, or + /// QPS from loadbalancer running outside of cluster). #[serde(default, skip_serializing_if = "Option::is_none")] pub external: Option, - /// object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object). + /// object refers to a metric describing a single kubernetes object + /// (for example, hits-per-second on an Ingress object). #[serde(default, skip_serializing_if = "Option::is_none")] pub object: Option, - /// pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value. + /// pods refers to a metric describing each pod in the current scale target + /// (for example, transactions-processed-per-second). The values will be + /// averaged together before being compared to the target value. #[serde(default, skip_serializing_if = "Option::is_none")] pub pods: Option, - /// resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. + /// resource refers to a resource metric (such as those specified in + /// requests and limits) known to Kubernetes describing each pod in the + /// current scale target (e.g. CPU or memory). Such metrics are built in to + /// Kubernetes, and have special scaling options on top of those available + /// to normal per-pod metrics using the "pods" source. #[serde(default, skip_serializing_if = "Option::is_none")] pub resource: Option, - /// type is the type of metric source. It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled + /// type is the type of metric source. It should be one of "ContainerResource", "External", + /// "Object", "Pods" or "Resource", each mapping to a matching field in the object. + /// Note: "ContainerResource" type is available on when the feature-gate + /// HPAContainerMetrics is enabled #[serde(rename = "type")] pub r#type: String, } -/// containerResource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. +/// containerResource refers to a resource metric (such as those specified in +/// requests and limits) known to Kubernetes describing a single container in +/// each pod of the current scale target (e.g. CPU or memory). Such metrics are +/// built in to Kubernetes, and have special scaling options on top of those +/// available to normal per-pod metrics using the "pods" source. +/// This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsContainerResource { /// container is the name of the container in the pods of the scaling target @@ -705,10 +1065,14 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsContainerResource { /// target specifies the target value for the given metric #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsContainerResourceTarget { - /// averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type + /// averageUtilization is the target value of the average of the + /// resource metric across all relevant pods, represented as a percentage of + /// the requested value of the resource for the pods. + /// Currently only valid for Resource metric source type #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageUtilization")] pub average_utilization: Option, - /// averageValue is the target value of the average of the metric across all relevant pods (as a quantity) + /// averageValue is the target value of the average of the + /// metric across all relevant pods (as a quantity) #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageValue")] pub average_value: Option, /// type represents whether the metric type is Utilization, Value, or AverageValue @@ -719,7 +1083,11 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsContainerResourceTarget { pub value: Option, } -/// external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster). +/// external refers to a global metric that is not associated +/// with any Kubernetes object. It allows autoscaling based on information +/// coming from components running outside of cluster +/// (for example length of queue in cloud messaging service, or +/// QPS from loadbalancer running outside of cluster). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsExternal { /// metric identifies the target metric by name and selector @@ -733,30 +1101,41 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsExternal { pub struct EnvoyDeploymentReplicasDynamicMetricsExternalMetric { /// name is the name of the given metric pub name: String, - /// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. + /// selector is the string-encoded form of a standard kubernetes label selector for the given metric + /// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. + /// When unset, just the metricName will be used to gather metrics. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, } -/// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. +/// selector is the string-encoded form of a standard kubernetes label selector for the given metric +/// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. +/// When unset, just the metricName will be used to gather metrics. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsExternalMetricSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsExternalMetricSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -764,10 +1143,14 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsExternalMetricSelectorMatchExpre /// target specifies the target value for the given metric #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsExternalTarget { - /// averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type + /// averageUtilization is the target value of the average of the + /// resource metric across all relevant pods, represented as a percentage of + /// the requested value of the resource for the pods. + /// Currently only valid for Resource metric source type #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageUtilization")] pub average_utilization: Option, - /// averageValue is the target value of the average of the metric across all relevant pods (as a quantity) + /// averageValue is the target value of the average of the + /// metric across all relevant pods (as a quantity) #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageValue")] pub average_value: Option, /// type represents whether the metric type is Utilization, Value, or AverageValue @@ -778,7 +1161,8 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsExternalTarget { pub value: Option, } -/// object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object). +/// object refers to a metric describing a single kubernetes object +/// (for example, hits-per-second on an Ingress object). #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsObject { /// describedObject specifies the descriptions of a object,such as kind,name apiVersion @@ -807,30 +1191,41 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsObjectDescribedObject { pub struct EnvoyDeploymentReplicasDynamicMetricsObjectMetric { /// name is the name of the given metric pub name: String, - /// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. + /// selector is the string-encoded form of a standard kubernetes label selector for the given metric + /// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. + /// When unset, just the metricName will be used to gather metrics. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, } -/// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. +/// selector is the string-encoded form of a standard kubernetes label selector for the given metric +/// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. +/// When unset, just the metricName will be used to gather metrics. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsObjectMetricSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsObjectMetricSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -838,10 +1233,14 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsObjectMetricSelectorMatchExpress /// target specifies the target value for the given metric #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsObjectTarget { - /// averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type + /// averageUtilization is the target value of the average of the + /// resource metric across all relevant pods, represented as a percentage of + /// the requested value of the resource for the pods. + /// Currently only valid for Resource metric source type #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageUtilization")] pub average_utilization: Option, - /// averageValue is the target value of the average of the metric across all relevant pods (as a quantity) + /// averageValue is the target value of the average of the + /// metric across all relevant pods (as a quantity) #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageValue")] pub average_value: Option, /// type represents whether the metric type is Utilization, Value, or AverageValue @@ -852,7 +1251,9 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsObjectTarget { pub value: Option, } -/// pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value. +/// pods refers to a metric describing each pod in the current scale target +/// (for example, transactions-processed-per-second). The values will be +/// averaged together before being compared to the target value. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsPods { /// metric identifies the target metric by name and selector @@ -866,30 +1267,41 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsPods { pub struct EnvoyDeploymentReplicasDynamicMetricsPodsMetric { /// name is the name of the given metric pub name: String, - /// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. + /// selector is the string-encoded form of a standard kubernetes label selector for the given metric + /// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. + /// When unset, just the metricName will be used to gather metrics. #[serde(default, skip_serializing_if = "Option::is_none")] pub selector: Option, } -/// selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics. +/// selector is the string-encoded form of a standard kubernetes label selector for the given metric +/// When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. +/// When unset, just the metricName will be used to gather metrics. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsPodsMetricSelector { /// matchExpressions is a list of label selector requirements. The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchExpressions")] pub match_expressions: Option>, - /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed. + /// matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels + /// map is equivalent to an element of matchExpressions, whose key field is "key", the + /// operator is "In", and the values array contains only "value". The requirements are ANDed. #[serde(default, skip_serializing_if = "Option::is_none", rename = "matchLabels")] pub match_labels: Option>, } -/// A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values. +/// A label selector requirement is a selector that contains values, a key, and an operator that +/// relates the key and values. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsPodsMetricSelectorMatchExpressions { /// key is the label key that the selector applies to. pub key: String, - /// operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist. + /// operator represents a key's relationship to a set of values. + /// Valid operators are In, NotIn, Exists and DoesNotExist. pub operator: String, - /// values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch. + /// values is an array of string values. If the operator is In or NotIn, + /// the values array must be non-empty. If the operator is Exists or DoesNotExist, + /// the values array must be empty. This array is replaced during a strategic + /// merge patch. #[serde(default, skip_serializing_if = "Option::is_none")] pub values: Option>, } @@ -897,10 +1309,14 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsPodsMetricSelectorMatchExpressio /// target specifies the target value for the given metric #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsPodsTarget { - /// averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type + /// averageUtilization is the target value of the average of the + /// resource metric across all relevant pods, represented as a percentage of + /// the requested value of the resource for the pods. + /// Currently only valid for Resource metric source type #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageUtilization")] pub average_utilization: Option, - /// averageValue is the target value of the average of the metric across all relevant pods (as a quantity) + /// averageValue is the target value of the average of the + /// metric across all relevant pods (as a quantity) #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageValue")] pub average_value: Option, /// type represents whether the metric type is Utilization, Value, or AverageValue @@ -911,7 +1327,11 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsPodsTarget { pub value: Option, } -/// resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. +/// resource refers to a resource metric (such as those specified in +/// requests and limits) known to Kubernetes describing each pod in the +/// current scale target (e.g. CPU or memory). Such metrics are built in to +/// Kubernetes, and have special scaling options on top of those available +/// to normal per-pod metrics using the "pods" source. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsResource { /// name is the name of the resource in question. @@ -923,10 +1343,14 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsResource { /// target specifies the target value for the given metric #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentReplicasDynamicMetricsResourceTarget { - /// averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type + /// averageUtilization is the target value of the average of the + /// resource metric across all relevant pods, represented as a percentage of + /// the requested value of the resource for the pods. + /// Currently only valid for Resource metric source type #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageUtilization")] pub average_utilization: Option, - /// averageValue is the target value of the average of the metric across all relevant pods (as a quantity) + /// averageValue is the target value of the average of the + /// metric across all relevant pods (as a quantity) #[serde(default, skip_serializing_if = "Option::is_none", rename = "averageValue")] pub average_value: Option, /// type represents whether the metric type is Utilization, Value, or AverageValue @@ -937,18 +1361,29 @@ pub struct EnvoyDeploymentReplicasDynamicMetricsResourceTarget { pub value: Option, } -/// Resources holds the resource requirements to use for the Envoy Deployment. Defaults to no resource requests nor limits. +/// Resources holds the resource requirements to use for the Envoy +/// Deployment. Defaults to no resource requests nor limits. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentResources { - /// Claims lists the names of resources, defined in spec.resourceClaims, that are used by this container. - /// This is an alpha field and requires enabling the DynamicResourceAllocation feature gate. - /// This field is immutable. It can only be set for containers. + /// Claims lists the names of resources, defined in spec.resourceClaims, + /// that are used by this container. + /// + /// + /// This is an alpha field and requires enabling the + /// DynamicResourceAllocation feature gate. + /// + /// + /// This field is immutable. It can only be set for containers. #[serde(default, skip_serializing_if = "Option::is_none")] pub claims: Option>, - /// Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Limits describes the maximum amount of compute resources allowed. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub limits: Option>, - /// Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. Requests cannot exceed Limits. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ + /// Requests describes the minimum amount of compute resources required. + /// If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, + /// otherwise to an implementation-defined value. Requests cannot exceed Limits. + /// More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/ #[serde(default, skip_serializing_if = "Option::is_none")] pub requests: Option>, } @@ -956,17 +1391,22 @@ pub struct EnvoyDeploymentResources { /// ResourceClaim references one entry in PodSpec.ResourceClaims. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentResourcesClaims { - /// Name must match the name of one entry in pod.spec.resourceClaims of the Pod where this field is used. It makes that resource available inside a container. + /// Name must match the name of one entry in pod.spec.resourceClaims of + /// the Pod where this field is used. It makes that resource available + /// inside a container. pub name: String, } -/// ShutdownManager defines configuration for Envoy's shutdown manager, which handles graceful termination of Envoy pods +/// ShutdownManager defines configuration for Envoy's shutdown +/// manager, which handles graceful termination of Envoy pods #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct EnvoyDeploymentShutdownManager { - /// The drain strategy for the graceful shutdown. It also affects drain when listeners are modified or removed via LDS. + /// The drain strategy for the graceful shutdown. It also affects + /// drain when listeners are modified or removed via LDS. #[serde(default, skip_serializing_if = "Option::is_none", rename = "drainStrategy")] pub drain_strategy: Option, - /// The time in seconds that Envoy will drain connections during shutdown. It also affects drain behaviour when listeners are modified or removed via LDS. + /// The time in seconds that Envoy will drain connections during shutdown. + /// It also affects drain behaviour when listeners are modified or removed via LDS. #[serde(default, skip_serializing_if = "Option::is_none", rename = "drainTime")] pub drain_time: Option, /// Image is the shutdown manager image and tag to use @@ -977,7 +1417,8 @@ pub struct EnvoyDeploymentShutdownManager { pub server_port: Option, } -/// ShutdownManager defines configuration for Envoy's shutdown manager, which handles graceful termination of Envoy pods +/// ShutdownManager defines configuration for Envoy's shutdown +/// manager, which handles graceful termination of Envoy pods #[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] pub enum EnvoyDeploymentShutdownManagerDrainStrategy { #[serde(rename = "gradual")] @@ -1002,7 +1443,9 @@ pub struct EnvoyDeploymentStatusDeploymentStatus { /// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. #[serde(default, skip_serializing_if = "Option::is_none", rename = "availableReplicas")] pub available_replicas: Option, - /// Count of hash collisions for the Deployment. The Deployment controller uses this field as a collision avoidance mechanism when it needs to create the name for the newest ReplicaSet. + /// Count of hash collisions for the Deployment. The Deployment controller uses this + /// field as a collision avoidance mechanism when it needs to create the name for the + /// newest ReplicaSet. #[serde(default, skip_serializing_if = "Option::is_none", rename = "collisionCount")] pub collision_count: Option, /// Represents the latest available observations of a deployment's current state. @@ -1017,7 +1460,9 @@ pub struct EnvoyDeploymentStatusDeploymentStatus { /// Total number of non-terminated pods targeted by this deployment (their labels match the selector). #[serde(default, skip_serializing_if = "Option::is_none")] pub replicas: Option, - /// Total number of unavailable pods targeted by this deployment. This is the total number of pods that are still required for the deployment to have 100% available capacity. They may either be pods that are running but not yet available or pods that still have not been created. + /// Total number of unavailable pods targeted by this deployment. This is the total number of + /// pods that are still required for the deployment to have 100% available capacity. They may + /// either be pods that are running but not yet available or pods that still have not been created. #[serde(default, skip_serializing_if = "Option::is_none", rename = "unavailableReplicas")] pub unavailable_replicas: Option, /// Total number of non-terminated pods targeted by this deployment that have the desired template spec. diff --git a/kube-custom-resources-rs/src/runtime_cluster_x_k8s_io/v1alpha1/extensionconfigs.rs b/kube-custom-resources-rs/src/runtime_cluster_x_k8s_io/v1alpha1/extensionconfigs.rs index b6e517f4b..2d2ec5e28 100644 --- a/kube-custom-resources-rs/src/runtime_cluster_x_k8s_io/v1alpha1/extensionconfigs.rs +++ b/kube-custom-resources-rs/src/runtime_cluster_x_k8s_io/v1alpha1/extensionconfigs.rs @@ -19,34 +19,34 @@ use self::prelude::*; #[kube(derive="Default")] #[kube(derive="PartialEq")] pub struct ExtensionConfigSpec { - /// ClientConfig defines how to communicate with the Extension server. + /// clientConfig defines how to communicate with the Extension server. #[serde(rename = "clientConfig")] pub client_config: ExtensionConfigClientConfig, - /// NamespaceSelector decides whether to call the hook for an object based + /// namespaceSelector decides whether to call the hook for an object based /// on whether the namespace for that object matches the selector. /// Defaults to the empty LabelSelector, which matches all objects. #[serde(default, skip_serializing_if = "Option::is_none", rename = "namespaceSelector")] pub namespace_selector: Option, - /// Settings defines key value pairs to be passed to all calls + /// settings defines key value pairs to be passed to all calls /// to all supported RuntimeExtensions. /// Note: Settings can be overridden on the ClusterClass. #[serde(default, skip_serializing_if = "Option::is_none")] pub settings: Option>, } -/// ClientConfig defines how to communicate with the Extension server. +/// clientConfig defines how to communicate with the Extension server. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ExtensionConfigClientConfig { - /// CABundle is a PEM encoded CA bundle which will be used to validate the Extension server's server certificate. + /// caBundle is a PEM encoded CA bundle which will be used to validate the Extension server's server certificate. #[serde(default, skip_serializing_if = "Option::is_none", rename = "caBundle")] pub ca_bundle: Option, - /// Service is a reference to the Kubernetes service for the Extension server. + /// service is a reference to the Kubernetes service for the Extension server. /// Note: Exactly one of `url` or `service` must be specified. /// /// If the Extension server is running within a cluster, then you should use `service`. #[serde(default, skip_serializing_if = "Option::is_none")] pub service: Option, - /// URL gives the location of the Extension server, in standard URL form + /// url gives the location of the Extension server, in standard URL form /// (`scheme://host:port/path`). /// Note: Exactly one of `url` or `service` must be specified. /// @@ -65,28 +65,28 @@ pub struct ExtensionConfigClientConfig { pub url: Option, } -/// Service is a reference to the Kubernetes service for the Extension server. +/// service is a reference to the Kubernetes service for the Extension server. /// Note: Exactly one of `url` or `service` must be specified. /// /// If the Extension server is running within a cluster, then you should use `service`. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ExtensionConfigClientConfigService { - /// Name is the name of the service. + /// name is the name of the service. pub name: String, - /// Namespace is the namespace of the service. + /// namespace is the namespace of the service. pub namespace: String, - /// Path is an optional URL path and if present may be any string permissible in + /// path is an optional URL path and if present may be any string permissible in /// a URL. If a path is set it will be used as prefix to the hook-specific path. #[serde(default, skip_serializing_if = "Option::is_none")] pub path: Option, - /// Port is the port on the service that's hosting the Extension server. + /// port is the port on the service that's hosting the Extension server. /// Defaults to 443. /// Port should be a valid port number (1-65535, inclusive). #[serde(default, skip_serializing_if = "Option::is_none")] pub port: Option, } -/// NamespaceSelector decides whether to call the hook for an object based +/// namespaceSelector decides whether to call the hook for an object based /// on whether the namespace for that object matches the selector. /// Defaults to the empty LabelSelector, which matches all objects. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] @@ -121,10 +121,10 @@ pub struct ExtensionConfigNamespaceSelectorMatchExpressions { /// ExtensionConfigStatus is the current state of the ExtensionConfig #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ExtensionConfigStatus { - /// Conditions define the current service state of the ExtensionConfig. + /// conditions define the current service state of the ExtensionConfig. #[serde(default, skip_serializing_if = "Option::is_none")] pub conditions: Option>, - /// Handlers defines the current ExtensionHandlers supported by an Extension. + /// handlers defines the current ExtensionHandlers supported by an Extension. #[serde(default, skip_serializing_if = "Option::is_none")] pub handlers: Option>, } @@ -132,28 +132,28 @@ pub struct ExtensionConfigStatus { /// ExtensionHandler specifies the details of a handler for a particular runtime hook registered by an Extension server. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ExtensionConfigStatusHandlers { - /// FailurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client. + /// failurePolicy defines how failures in calls to the ExtensionHandler should be handled by a client. /// Defaults to Fail if not set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "failurePolicy")] pub failure_policy: Option, - /// Name is the unique name of the ExtensionHandler. + /// name is the unique name of the ExtensionHandler. pub name: String, - /// RequestHook defines the versioned runtime hook which this ExtensionHandler serves. + /// requestHook defines the versioned runtime hook which this ExtensionHandler serves. #[serde(rename = "requestHook")] pub request_hook: ExtensionConfigStatusHandlersRequestHook, - /// TimeoutSeconds defines the timeout duration for client calls to the ExtensionHandler. + /// timeoutSeconds defines the timeout duration for client calls to the ExtensionHandler. /// Defaults to 10 is not set. #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] pub timeout_seconds: Option, } -/// RequestHook defines the versioned runtime hook which this ExtensionHandler serves. +/// requestHook defines the versioned runtime hook which this ExtensionHandler serves. #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct ExtensionConfigStatusHandlersRequestHook { - /// APIVersion is the group and version of the Hook. + /// apiVersion is the group and version of the Hook. #[serde(rename = "apiVersion")] pub api_version: String, - /// Hook is the name of the hook. + /// hook is the name of the hook. pub hook: String, } diff --git a/kube-custom-resources-rs/src/traefik_io/v1alpha1/ingressroutes.rs b/kube-custom-resources-rs/src/traefik_io/v1alpha1/ingressroutes.rs index a93aae99d..bf9b581d3 100644 --- a/kube-custom-resources-rs/src/traefik_io/v1alpha1/ingressroutes.rs +++ b/kube-custom-resources-rs/src/traefik_io/v1alpha1/ingressroutes.rs @@ -34,11 +34,13 @@ pub struct IngressRouteSpec { } /// Route holds the HTTP route configuration. -#[derive(Serialize, Deserialize, Clone, Debug, PartialEq)] +#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct IngressRouteRoutes { /// Kind defines the kind of the route. /// Rule is the only supported kind. - pub kind: IngressRouteRoutesKind, + /// If not defined, defaults to Rule. + #[serde(default, skip_serializing_if = "Option::is_none")] + pub kind: Option, /// Match defines the router's rule. /// More info: https://doc.traefik.io/traefik/v3.2/routing/routers/#rule #[serde(rename = "match")] @@ -215,7 +217,7 @@ pub struct IngressRouteRoutesServicesStickyCookie { /// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpOnly")] pub http_only: Option, - /// MaxAge indicates the number of seconds until the cookie expires. + /// MaxAge defines the number of seconds until the cookie expires. /// When set to a negative number, the cookie expires immediately. /// When set to zero, the cookie never expires. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] @@ -223,6 +225,11 @@ pub struct IngressRouteRoutesServicesStickyCookie { /// Name defines the Cookie name. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, + /// Path defines the path that must exist in the requested URL for the browser to send the Cookie header. + /// When not provided the cookie will be sent on every request to the domain. + /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, /// SameSite defines the same site policy. /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite #[serde(default, skip_serializing_if = "Option::is_none", rename = "sameSite")] diff --git a/kube-custom-resources-rs/src/traefik_io/v1alpha1/traefikservices.rs b/kube-custom-resources-rs/src/traefik_io/v1alpha1/traefikservices.rs index f3c0398c6..337f456c7 100644 --- a/kube-custom-resources-rs/src/traefik_io/v1alpha1/traefikservices.rs +++ b/kube-custom-resources-rs/src/traefik_io/v1alpha1/traefikservices.rs @@ -292,7 +292,7 @@ pub struct TraefikServiceMirroringMirrorsStickyCookie { /// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpOnly")] pub http_only: Option, - /// MaxAge indicates the number of seconds until the cookie expires. + /// MaxAge defines the number of seconds until the cookie expires. /// When set to a negative number, the cookie expires immediately. /// When set to zero, the cookie never expires. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] @@ -300,6 +300,11 @@ pub struct TraefikServiceMirroringMirrorsStickyCookie { /// Name defines the Cookie name. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, + /// Path defines the path that must exist in the requested URL for the browser to send the Cookie header. + /// When not provided the cookie will be sent on every request to the domain. + /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, /// SameSite defines the same site policy. /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite #[serde(default, skip_serializing_if = "Option::is_none", rename = "sameSite")] @@ -336,7 +341,7 @@ pub struct TraefikServiceMirroringStickyCookie { /// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpOnly")] pub http_only: Option, - /// MaxAge indicates the number of seconds until the cookie expires. + /// MaxAge defines the number of seconds until the cookie expires. /// When set to a negative number, the cookie expires immediately. /// When set to zero, the cookie never expires. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] @@ -344,6 +349,11 @@ pub struct TraefikServiceMirroringStickyCookie { /// Name defines the Cookie name. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, + /// Path defines the path that must exist in the requested URL for the browser to send the Cookie header. + /// When not provided the cookie will be sent on every request to the domain. + /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, /// SameSite defines the same site policy. /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite #[serde(default, skip_serializing_if = "Option::is_none", rename = "sameSite")] @@ -503,7 +513,7 @@ pub struct TraefikServiceWeightedServicesStickyCookie { /// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpOnly")] pub http_only: Option, - /// MaxAge indicates the number of seconds until the cookie expires. + /// MaxAge defines the number of seconds until the cookie expires. /// When set to a negative number, the cookie expires immediately. /// When set to zero, the cookie never expires. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] @@ -511,6 +521,11 @@ pub struct TraefikServiceWeightedServicesStickyCookie { /// Name defines the Cookie name. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, + /// Path defines the path that must exist in the requested URL for the browser to send the Cookie header. + /// When not provided the cookie will be sent on every request to the domain. + /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, /// SameSite defines the same site policy. /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite #[serde(default, skip_serializing_if = "Option::is_none", rename = "sameSite")] @@ -535,7 +550,7 @@ pub struct TraefikServiceWeightedStickyCookie { /// HTTPOnly defines whether the cookie can be accessed by client-side APIs, such as JavaScript. #[serde(default, skip_serializing_if = "Option::is_none", rename = "httpOnly")] pub http_only: Option, - /// MaxAge indicates the number of seconds until the cookie expires. + /// MaxAge defines the number of seconds until the cookie expires. /// When set to a negative number, the cookie expires immediately. /// When set to zero, the cookie never expires. #[serde(default, skip_serializing_if = "Option::is_none", rename = "maxAge")] @@ -543,6 +558,11 @@ pub struct TraefikServiceWeightedStickyCookie { /// Name defines the Cookie name. #[serde(default, skip_serializing_if = "Option::is_none")] pub name: Option, + /// Path defines the path that must exist in the requested URL for the browser to send the Cookie header. + /// When not provided the cookie will be sent on every request to the domain. + /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#pathpath-value + #[serde(default, skip_serializing_if = "Option::is_none")] + pub path: Option, /// SameSite defines the same site policy. /// More info: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie/SameSite #[serde(default, skip_serializing_if = "Option::is_none", rename = "sameSite")] diff --git a/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1/instancesets.rs b/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1/instancesets.rs index 5057d227c..a3d53b250 100644 --- a/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1/instancesets.rs +++ b/kube-custom-resources-rs/src/workloads_kubeblocks_io/v1/instancesets.rs @@ -135,14 +135,6 @@ pub struct InstanceSetSpec { /// It must match the labels defined in the pod template. /// More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors pub selector: InstanceSetSelector, - /// Defines the behavior of a service spec. - /// Provides read-write service. - /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - /// - /// - /// Note: This field will be removed in future version. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub service: Option, /// PodTemplateSpec describes the data a pod should have when created from a template pub template: InstanceSetTemplate, /// Indicates the StatefulSetUpdateStrategy that will be @@ -3735,418 +3727,6 @@ pub struct InstanceSetSelectorMatchExpressions { pub values: Option>, } -/// Defines the behavior of a service spec. -/// Provides read-write service. -/// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -/// -/// -/// Note: This field will be removed in future version. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetService { - /// 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 - #[serde(default, skip_serializing_if = "Option::is_none", rename = "apiVersion")] - pub api_version: Option, - /// 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 - #[serde(default, skip_serializing_if = "Option::is_none")] - pub kind: Option, - /// Standard object's metadata. - /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata - #[serde(default, skip_serializing_if = "Option::is_none")] - pub metadata: Option, - /// Spec defines the behavior of a service. - /// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - #[serde(default, skip_serializing_if = "Option::is_none")] - pub spec: Option, - /// Most recently observed status of the service. - /// Populated by the system. - /// Read-only. - /// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status - #[serde(default, skip_serializing_if = "Option::is_none")] - pub status: Option, -} - -/// Standard object's metadata. -/// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceMetadata { - #[serde(default, skip_serializing_if = "Option::is_none")] - pub annotations: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub finalizers: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub labels: Option>, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - #[serde(default, skip_serializing_if = "Option::is_none")] - pub namespace: Option, -} - -/// Spec defines the behavior of a service. -/// https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceSpec { - /// allocateLoadBalancerNodePorts defines if NodePorts will be automatically - /// allocated for services with type LoadBalancer. Default is "true". It - /// may be set to "false" if the cluster load-balancer does not rely on - /// NodePorts. If the caller requests specific NodePorts (by specifying a - /// value), those requests will be respected, regardless of this field. - /// This field may only be set for services with type LoadBalancer and will - /// be cleared if the type is changed to any other type. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "allocateLoadBalancerNodePorts")] - pub allocate_load_balancer_node_ports: Option, - /// clusterIP is the IP address of the service and is usually assigned - /// randomly. If an address is specified manually, is in-range (as per - /// system configuration), and is not in use, it will be allocated to the - /// service; otherwise creation of the service will fail. This field may not - /// be changed through updates unless the type field is also being changed - /// to ExternalName (which requires this field to be blank) or the type - /// field is being changed from ExternalName (in which case this field may - /// optionally be specified, as describe above). Valid values are "None", - /// empty string (""), or a valid IP address. Setting this to "None" makes a - /// "headless service" (no virtual IP), which is useful when direct endpoint - /// connections are preferred and proxying is not required. Only applies to - /// types ClusterIP, NodePort, and LoadBalancer. If this field is specified - /// when creating a Service of type ExternalName, creation will fail. This - /// field will be wiped when updating a Service to type ExternalName. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIP")] - pub cluster_ip: Option, - /// ClusterIPs is a list of IP addresses assigned to this service, and are - /// usually assigned randomly. If an address is specified manually, is - /// in-range (as per system configuration), and is not in use, it will be - /// allocated to the service; otherwise creation of the service will fail. - /// This field may not be changed through updates unless the type field is - /// also being changed to ExternalName (which requires this field to be - /// empty) or the type field is being changed from ExternalName (in which - /// case this field may optionally be specified, as describe above). Valid - /// values are "None", empty string (""), or a valid IP address. Setting - /// this to "None" makes a "headless service" (no virtual IP), which is - /// useful when direct endpoint connections are preferred and proxying is - /// not required. Only applies to types ClusterIP, NodePort, and - /// LoadBalancer. If this field is specified when creating a Service of type - /// ExternalName, creation will fail. This field will be wiped when updating - /// a Service to type ExternalName. If this field is not specified, it will - /// be initialized from the clusterIP field. If this field is specified, - /// clients must ensure that clusterIPs[0] and clusterIP have the same - /// value. - /// - /// - /// This field may hold a maximum of two entries (dual-stack IPs, in either order). - /// These IPs must correspond to the values of the ipFamilies field. Both - /// clusterIPs and ipFamilies are governed by the ipFamilyPolicy field. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - #[serde(default, skip_serializing_if = "Option::is_none", rename = "clusterIPs")] - pub cluster_i_ps: Option>, - /// externalIPs is a list of IP addresses for which nodes in the cluster - /// will also accept traffic for this service. These IPs are not managed by - /// Kubernetes. The user is responsible for ensuring that traffic arrives - /// at a node with this IP. A common example is external load-balancers - /// that are not part of the Kubernetes system. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalIPs")] - pub external_i_ps: Option>, - /// externalName is the external reference that discovery mechanisms will - /// return as an alias for this service (e.g. a DNS CNAME record). No - /// proxying will be involved. Must be a lowercase RFC-1123 hostname - /// (https://tools.ietf.org/html/rfc1123) and requires `type` to be "ExternalName". - #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalName")] - pub external_name: Option, - /// externalTrafficPolicy describes how nodes distribute service traffic they - /// receive on one of the Service's "externally-facing" addresses (NodePorts, - /// ExternalIPs, and LoadBalancer IPs). If set to "Local", the proxy will configure - /// the service in a way that assumes that external load balancers will take care - /// of balancing the service traffic between nodes, and so each node will deliver - /// traffic only to the node-local endpoints of the service, without masquerading - /// the client source IP. (Traffic mistakenly sent to a node with no endpoints will - /// be dropped.) The default value, "Cluster", uses the standard behavior of - /// routing to all endpoints evenly (possibly modified by topology and other - /// features). Note that traffic sent to an External IP or LoadBalancer IP from - /// within the cluster will always get "Cluster" semantics, but clients sending to - /// a NodePort from within the cluster may need to take traffic policy into account - /// when picking a node. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "externalTrafficPolicy")] - pub external_traffic_policy: Option, - /// healthCheckNodePort specifies the healthcheck nodePort for the service. - /// This only applies when type is set to LoadBalancer and - /// externalTrafficPolicy is set to Local. If a value is specified, is - /// in-range, and is not in use, it will be used. If not specified, a value - /// will be automatically allocated. External systems (e.g. load-balancers) - /// can use this port to determine if a given node holds endpoints for this - /// service or not. If this field is specified when creating a Service - /// which does not need it, creation will fail. This field will be wiped - /// when updating a Service to no longer need it (e.g. changing type). - /// This field cannot be updated once set. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "healthCheckNodePort")] - pub health_check_node_port: Option, - /// InternalTrafficPolicy describes how nodes distribute service traffic they - /// receive on the ClusterIP. If set to "Local", the proxy will assume that pods - /// only want to talk to endpoints of the service on the same node as the pod, - /// dropping the traffic if there are no local endpoints. The default value, - /// "Cluster", uses the standard behavior of routing to all endpoints evenly - /// (possibly modified by topology and other features). - #[serde(default, skip_serializing_if = "Option::is_none", rename = "internalTrafficPolicy")] - pub internal_traffic_policy: Option, - /// IPFamilies is a list of IP families (e.g. IPv4, IPv6) assigned to this - /// service. This field is usually assigned automatically based on cluster - /// configuration and the ipFamilyPolicy field. If this field is specified - /// manually, the requested family is available in the cluster, - /// and ipFamilyPolicy allows it, it will be used; otherwise creation of - /// the service will fail. This field is conditionally mutable: it allows - /// for adding or removing a secondary IP family, but it does not allow - /// changing the primary IP family of the Service. Valid values are "IPv4" - /// and "IPv6". This field only applies to Services of types ClusterIP, - /// NodePort, and LoadBalancer, and does apply to "headless" services. - /// This field will be wiped when updating a Service to type ExternalName. - /// - /// - /// This field may hold a maximum of two entries (dual-stack families, in - /// either order). These families must correspond to the values of the - /// clusterIPs field, if specified. Both clusterIPs and ipFamilies are - /// governed by the ipFamilyPolicy field. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilies")] - pub ip_families: Option>, - /// IPFamilyPolicy represents the dual-stack-ness requested or required by - /// this Service. If there is no value provided, then this field will be set - /// to SingleStack. Services can be "SingleStack" (a single IP family), - /// "PreferDualStack" (two IP families on dual-stack configured clusters or - /// a single IP family on single-stack clusters), or "RequireDualStack" - /// (two IP families on dual-stack configured clusters, otherwise fail). The - /// ipFamilies and clusterIPs fields depend on the value of this field. This - /// field will be wiped when updating a service to type ExternalName. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipFamilyPolicy")] - pub ip_family_policy: Option, - /// loadBalancerClass is the class of the load balancer implementation this Service belongs to. - /// If specified, the value of this field must be a label-style identifier, with an optional prefix, - /// e.g. "internal-vip" or "example.com/internal-vip". Unprefixed names are reserved for end-users. - /// This field can only be set when the Service type is 'LoadBalancer'. If not set, the default load - /// balancer implementation is used, today this is typically done through the cloud provider integration, - /// but should apply for any default implementation. If set, it is assumed that a load balancer - /// implementation is watching for Services with a matching class. Any default load balancer - /// implementation (e.g. cloud providers) should ignore Services that set this field. - /// This field can only be set when creating or updating a Service to type 'LoadBalancer'. - /// Once set, it can not be changed. This field will be wiped when a service is updated to a non 'LoadBalancer' type. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerClass")] - pub load_balancer_class: Option, - /// Only applies to Service Type: LoadBalancer. - /// This feature depends on whether the underlying cloud-provider supports specifying - /// the loadBalancerIP when a load balancer is created. - /// This field will be ignored if the cloud-provider does not support the feature. - /// Deprecated: This field was under-specified and its meaning varies across implementations. - /// Using it is non-portable and it may not support dual-stack. - /// Users are encouraged to use implementation-specific annotations when available. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerIP")] - pub load_balancer_ip: Option, - /// If specified and supported by the platform, this will restrict traffic through the cloud-provider - /// load-balancer will be restricted to the specified client IPs. This field will be ignored if the - /// cloud-provider does not support the feature." - /// More info: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/ - #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancerSourceRanges")] - pub load_balancer_source_ranges: Option>, - /// The list of ports that are exposed by this service. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ports: Option>, - /// publishNotReadyAddresses indicates that any agent which deals with endpoints for this - /// Service should disregard any indications of ready/not-ready. - /// The primary use case for setting this field is for a StatefulSet's Headless Service to - /// propagate SRV DNS records for its Pods for the purpose of peer discovery. - /// The Kubernetes controllers that generate Endpoints and EndpointSlice resources for - /// Services interpret this to mean that all endpoints are considered "ready" even if the - /// Pods themselves are not. Agents which consume only Kubernetes generated endpoints - /// through the Endpoints or EndpointSlice resources can safely assume this behavior. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "publishNotReadyAddresses")] - pub publish_not_ready_addresses: Option, - /// Route service traffic to pods with label keys and values matching this - /// selector. If empty or not present, the service is assumed to have an - /// external process managing its endpoints, which Kubernetes will not - /// modify. Only applies to types ClusterIP, NodePort, and LoadBalancer. - /// Ignored if type is ExternalName. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/ - #[serde(default, skip_serializing_if = "Option::is_none")] - pub selector: Option>, - /// Supports "ClientIP" and "None". Used to maintain session affinity. - /// Enable client IP based session affinity. - /// Must be ClientIP or None. - /// Defaults to None. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies - #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinity")] - pub session_affinity: Option, - /// sessionAffinityConfig contains the configurations of session affinity. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "sessionAffinityConfig")] - pub session_affinity_config: Option, - /// type determines how the Service is exposed. Defaults to ClusterIP. Valid - /// options are ExternalName, ClusterIP, NodePort, and LoadBalancer. - /// "ClusterIP" allocates a cluster-internal IP address for load-balancing - /// to endpoints. Endpoints are determined by the selector or if that is not - /// specified, by manual construction of an Endpoints object or - /// EndpointSlice objects. If clusterIP is "None", no virtual IP is - /// allocated and the endpoints are published as a set of endpoints rather - /// than a virtual IP. - /// "NodePort" builds on ClusterIP and allocates a port on every node which - /// routes to the same endpoints as the clusterIP. - /// "LoadBalancer" builds on NodePort and creates an external load-balancer - /// (if supported in the current cloud) which routes to the same endpoints - /// as the clusterIP. - /// "ExternalName" aliases this service to the specified externalName. - /// Several other fields do not apply to ExternalName services. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types - #[serde(default, skip_serializing_if = "Option::is_none", rename = "type")] - pub r#type: Option, -} - -/// ServicePort contains information on service's port. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceSpecPorts { - /// The application protocol for this port. - /// This is used as a hint for implementations to offer richer behavior for protocols that they understand. - /// This field follows standard Kubernetes label syntax. - /// Valid values are either: - /// - /// - /// * Un-prefixed protocol names - reserved for IANA standard service names (as per - /// RFC-6335 and https://www.iana.org/assignments/service-names). - /// - /// - /// * Kubernetes-defined prefixed names: - /// * 'kubernetes.io/h2c' - HTTP/2 prior knowledge over cleartext as described in https://www.rfc-editor.org/rfc/rfc9113.html#name-starting-http-2-with-prior- - /// * 'kubernetes.io/ws' - WebSocket over cleartext as described in https://www.rfc-editor.org/rfc/rfc6455 - /// * 'kubernetes.io/wss' - WebSocket over TLS as described in https://www.rfc-editor.org/rfc/rfc6455 - /// - /// - /// * Other protocols should use implementation-defined prefixed names such as - /// mycompany.com/my-custom-protocol. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "appProtocol")] - pub app_protocol: Option, - /// The name of this port within the service. This must be a DNS_LABEL. - /// All ports within a ServiceSpec must have unique names. When considering - /// the endpoints for a Service, this must match the 'name' field in the - /// EndpointPort. - /// Optional if only one ServicePort is defined on this service. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub name: Option, - /// The port on each node on which this service is exposed when type is - /// NodePort or LoadBalancer. Usually assigned by the system. If a value is - /// specified, in-range, and not in use it will be used, otherwise the - /// operation will fail. If not specified, a port will be allocated if this - /// Service requires one. If this field is specified when creating a - /// Service which does not need it, creation will fail. This field will be - /// wiped when updating a Service to no longer need it (e.g. changing type - /// from NodePort to ClusterIP). - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - #[serde(default, skip_serializing_if = "Option::is_none", rename = "nodePort")] - pub node_port: Option, - /// The port that will be exposed by this service. - pub port: i32, - /// The IP protocol for this port. Supports "TCP", "UDP", and "SCTP". - /// Default is TCP. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub protocol: Option, - /// Number or name of the port to access on the pods targeted by the service. - /// Number must be in the range 1 to 65535. Name must be an IANA_SVC_NAME. - /// If this is a string, it will be looked up as a named port in the - /// target Pod's container ports. If this is not specified, the value - /// of the 'port' field is used (an identity map). - /// This field is ignored for services with clusterIP=None, and should be - /// omitted or set equal to the 'port' field. - /// More info: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service - #[serde(default, skip_serializing_if = "Option::is_none", rename = "targetPort")] - pub target_port: Option, -} - -/// sessionAffinityConfig contains the configurations of session affinity. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceSpecSessionAffinityConfig { - /// clientIP contains the configurations of Client IP based session affinity. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "clientIP")] - pub client_ip: Option, -} - -/// clientIP contains the configurations of Client IP based session affinity. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceSpecSessionAffinityConfigClientIp { - /// timeoutSeconds specifies the seconds of ClientIP type session sticky time. - /// The value must be >0 && <=86400(for 1 day) if ServiceAffinity == "ClientIP". - /// Default value is 10800(for 3 hours). - #[serde(default, skip_serializing_if = "Option::is_none", rename = "timeoutSeconds")] - pub timeout_seconds: Option, -} - -/// Most recently observed status of the service. -/// Populated by the system. -/// Read-only. -/// More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceStatus { - /// Current service state - #[serde(default, skip_serializing_if = "Option::is_none")] - pub conditions: Option>, - /// LoadBalancer contains the current status of the load-balancer, - /// if one is present. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "loadBalancer")] - pub load_balancer: Option, -} - -/// LoadBalancer contains the current status of the load-balancer, -/// if one is present. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceStatusLoadBalancer { - /// Ingress is a list containing ingress points for the load-balancer. - /// Traffic intended for the service should be sent to these ingress points. - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ingress: Option>, -} - -/// LoadBalancerIngress represents the status of a load-balancer ingress point: -/// traffic intended for the service should be sent to an ingress point. -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceStatusLoadBalancerIngress { - /// Hostname is set for load-balancer ingress points that are DNS based - /// (typically AWS load-balancers) - #[serde(default, skip_serializing_if = "Option::is_none")] - pub hostname: Option, - /// IP is set for load-balancer ingress points that are IP based - /// (typically GCE or OpenStack load-balancers) - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ip: Option, - /// IPMode specifies how the load-balancer IP behaves, and may only be specified when the ip field is specified. - /// Setting this to "VIP" indicates that traffic is delivered to the node with - /// the destination set to the load-balancer's IP and port. - /// Setting this to "Proxy" indicates that traffic is delivered to the node or pod with - /// the destination set to the node's IP and node port or the pod's IP and port. - /// Service implementations may use this information to adjust traffic routing. - #[serde(default, skip_serializing_if = "Option::is_none", rename = "ipMode")] - pub ip_mode: Option, - /// Ports is a list of records of service ports - /// If used, every port defined in the service should have an entry in it - #[serde(default, skip_serializing_if = "Option::is_none")] - pub ports: Option>, -} - -#[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] -pub struct InstanceSetServiceStatusLoadBalancerIngressPorts { - /// Error is to record the problem with the service port - /// The format of the error shall comply with the following rules: - /// - built-in error values shall be specified in this file and those shall use - /// CamelCase names - /// - cloud provider specific error values must have names that comply with the - /// format foo.example.com/CamelCase. - /// --- - /// The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt) - #[serde(default, skip_serializing_if = "Option::is_none")] - pub error: Option, - /// Port is the port number of the service port of which status is recorded here - pub port: i32, - /// Protocol is the protocol of the service port of which status is recorded here - /// The supported values are: "TCP", "UDP", "SCTP" - pub protocol: String, -} - /// PodTemplateSpec describes the data a pod should have when created from a template #[derive(Serialize, Deserialize, Clone, Debug, Default, PartialEq)] pub struct InstanceSetTemplate {