@soft-stech/fleet
Version:
814 lines • 65.4 kB
TypeScript
import { IObjectMeta } from "@soft-stech/apimachinery/apis/meta/v1/ObjectMeta";
import { Model, ModelData } from "@soft-stech/base";
/**
* Cluster corresponds to a Kubernetes cluster. Fleet deploys bundles to targeted clusters.
* Clusters to which Fleet deploys manifests are referred to as downstream
* clusters. In the single cluster use case, the Fleet manager Kubernetes
* cluster is both the manager and downstream cluster at the same time.
*/
export interface ICluster {
/**
* 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
*/
"apiVersion": "fleet.cattle.io/v1alpha1";
/**
* 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
*/
"kind": "Cluster";
"metadata"?: IObjectMeta;
"spec"?: {
/**
* AgentAffinity overrides the default affinity for the cluster's agent
* deployment. If this value is nil the default affinity is used.
*/
"agentAffinity"?: {
/**
* Describes node affinity scheduling rules for the pod.
*/
"nodeAffinity"?: {
/**
* 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.
*/
"preferredDuringSchedulingIgnoredDuringExecution"?: Array<{
/**
* A node selector term, associated with the corresponding weight.
*/
"preference": {
/**
* A list of node selector requirements by node's labels.
*/
"matchExpressions"?: Array<{
/**
* The label key that the selector applies to.
*/
"key": string;
/**
* Represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
*/
"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.
*/
"values"?: Array<string>;
}>;
/**
* A list of node selector requirements by node's fields.
*/
"matchFields"?: Array<{
/**
* The label key that the selector applies to.
*/
"key": string;
/**
* Represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
*/
"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.
*/
"values"?: Array<string>;
}>;
};
/**
* Weight associated with matching the corresponding nodeSelectorTerm, in the range 1-100.
* @format int32
*/
"weight": number;
}>;
/**
* 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.
*/
"requiredDuringSchedulingIgnoredDuringExecution"?: {
/**
* Required. A list of node selector terms. The terms are ORed.
*/
"nodeSelectorTerms": Array<{
/**
* A list of node selector requirements by node's labels.
*/
"matchExpressions"?: Array<{
/**
* The label key that the selector applies to.
*/
"key": string;
/**
* Represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
*/
"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.
*/
"values"?: Array<string>;
}>;
/**
* A list of node selector requirements by node's fields.
*/
"matchFields"?: Array<{
/**
* The label key that the selector applies to.
*/
"key": string;
/**
* Represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists, DoesNotExist. Gt, and Lt.
*/
"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.
*/
"values"?: Array<string>;
}>;
}>;
};
};
/**
* Describes pod affinity scheduling rules (e.g. co-locate this pod in the same node, zone, etc. as some other pod(s)).
*/
"podAffinity"?: {
/**
* 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.
*/
"preferredDuringSchedulingIgnoredDuringExecution"?: Array<{
/**
* Required. A pod affinity term, associated with the corresponding weight.
*/
"podAffinityTerm": {
/**
* A label query over a set of resources, in this case pods.
* If it's null, this PodAffinityTerm matches with no Pods.
*/
"labelSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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"?: Array<string>;
/**
* 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.
*/
"namespaceSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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.
*/
"topologyKey": string;
};
/**
* weight associated with matching the corresponding podAffinityTerm,
* in the range 1-100.
* @format int32
*/
"weight": number;
}>;
/**
* 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.
*/
"requiredDuringSchedulingIgnoredDuringExecution"?: Array<{
/**
* A label query over a set of resources, in this case pods.
* If it's null, this PodAffinityTerm matches with no Pods.
*/
"labelSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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"?: Array<string>;
/**
* 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.
*/
"namespaceSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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.
*/
"topologyKey": string;
}>;
};
/**
* Describes pod anti-affinity scheduling rules (e.g. avoid putting this pod in the same node, zone, etc. as some other pod(s)).
*/
"podAntiAffinity"?: {
/**
* 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.
*/
"preferredDuringSchedulingIgnoredDuringExecution"?: Array<{
/**
* Required. A pod affinity term, associated with the corresponding weight.
*/
"podAffinityTerm": {
/**
* A label query over a set of resources, in this case pods.
* If it's null, this PodAffinityTerm matches with no Pods.
*/
"labelSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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"?: Array<string>;
/**
* 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.
*/
"namespaceSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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.
*/
"topologyKey": string;
};
/**
* weight associated with matching the corresponding podAffinityTerm,
* in the range 1-100.
* @format int32
*/
"weight": number;
}>;
/**
* 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.
*/
"requiredDuringSchedulingIgnoredDuringExecution"?: Array<{
/**
* A label query over a set of resources, in this case pods.
* If it's null, this PodAffinityTerm matches with no Pods.
*/
"labelSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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"?: Array<string>;
/**
* 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.
*/
"namespaceSelector"?: {
/**
* matchExpressions is a list of label selector requirements. The requirements are ANDed.
*/
"matchExpressions"?: Array<{
/**
* key is the label key that the selector applies to.
*/
"key": string;
/**
* operator represents a key's relationship to a set of values.
* Valid operators are In, NotIn, Exists and DoesNotExist.
*/
"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"?: Array<string>;
}>;
/**
* 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"?: Record<string, string>;
};
/**
* 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"?: Array<string>;
/**
* 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.
*/
"topologyKey": string;
}>;
};
};
/**
* AgentEnvVars are extra environment variables to be added to the agent deployment.
*/
"agentEnvVars"?: Array<{
/**
* Name of the environment variable. Must be a C_IDENTIFIER.
*/
"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 "".
*/
"value"?: string;
/**
* Source for the environment variable's value. Cannot be used if value is not empty.
*/
"valueFrom"?: {
/**
* Selects a key of a ConfigMap.
*/
"configMapKeyRef"?: {
/**
* The key to select.
*/
"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.
* TODO: Add other useful fields. apiVersion, kind, uid?
* More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
* TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
*/
"name"?: string;
/**
* Specify whether the ConfigMap or its key must be defined
*/
"optional"?: boolean;
};
/**
* Selects a field of the pod: supports metadata.name, metadata.namespace, `metadata.labels['<KEY>']`, `metadata.annotations['<KEY>']`,
* spec.nodeName, spec.serviceAccountName, status.hostIP, status.podIP, status.podIPs.
*/
"fieldRef"?: {
/**
* Version of the schema the FieldPath is written in terms of, defaults to "v1".
*/
"apiVersion"?: string;
/**
* Path of the field to select in the specified API version.
*/
"fieldPath": 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.
*/
"resourceFieldRef"?: {
/**
* Container name: required for volumes, optional for env vars
*/
"containerName"?: string;
/**
* Specifies the output format of the exposed resources, defaults to "1"
* @schema union([z.number(), z.string().regex(/^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$/)]).optional()
*/
"divisor"?: number | string;
/**
* Required: resource to select
*/
"resource": string;
};
/**
* Selects a key of a secret in the pod's namespace
*/
"secretKeyRef"?: {
/**
* The key of the secret to select from. Must be a valid secret key.
*/
"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.
* TODO: Add other useful fields. apiVersion, kind, uid?
* More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
* TODO: Drop `kubebuilder:default` when controller-gen doesn't need it https://github.com/kubernetes-sigs/kubebuilder/issues/3896.
*/
"name"?: string;
/**
* Specify whether the Secret or its key must be defined
*/
"optional"?: boolean;
};
};
}>;
/**
* AgentNamespace defaults to the system namespace, e.g. cattle-fleet-system.
*/
"agentNamespace"?: string;
/**
* AgentResources sets the resources for the cluster's agent deployment.
*/
"agentResources"?: {
/**
* 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"?: Array<{
/**
* 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": string;
}>;
/**
* Limits describes the maximum amount of compute resources allowed.
* More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
*/
"limits"?: Record<string, number | string>;
/**
* Requests describes the minimum amount of compute resources required.
* If Requests is omitted for a container, it defaults to Limit