From 5fe3877ec34bae33154c0049458e1ae53e95492a Mon Sep 17 00:00:00 2001 From: Feruzjon Muyassarov Date: Wed, 18 Dec 2024 11:23:19 +0200 Subject: [PATCH] operator nri-plugins-operator (0.8.0) --- .../config.nri_balloonspolicies.yaml | 570 +++++++++ .../config.nri_nriplugindeployments.yaml | 1067 +++++++++++++++++ .../config.nri_templatepolicies.yaml | 259 ++++ .../config.nri_topologyawarepolicies.yaml | 320 +++++ ...er-manager-metrics-service_v1_service.yaml | 23 + ...c.authorization.k8s.io_v1_clusterrole.yaml | 17 + ...lugins-operator.clusterserviceversion.yaml | 584 +++++++++ ...gy.node.k8s.io_noderesourcetopologies.yaml | 276 +++++ .../0.8.0/metadata/annotations.yaml | 14 + .../0.8.0/tests/scorecard/config.yaml | 70 ++ 10 files changed, 3200 insertions(+) create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/config.nri_balloonspolicies.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/config.nri_nriplugindeployments.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/config.nri_templatepolicies.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/config.nri_topologyawarepolicies.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-controller-manager-metrics-service_v1_service.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator.clusterserviceversion.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/manifests/topology.node.k8s.io_noderesourcetopologies.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/metadata/annotations.yaml create mode 100644 operators/nri-plugins-operator/0.8.0/tests/scorecard/config.yaml diff --git a/operators/nri-plugins-operator/0.8.0/manifests/config.nri_balloonspolicies.yaml b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_balloonspolicies.yaml new file mode 100644 index 00000000000..43f554be7cf --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_balloonspolicies.yaml @@ -0,0 +1,570 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + creationTimestamp: null + name: balloonspolicies.config.nri +spec: + group: config.nri + names: + kind: BalloonsPolicy + listKind: BalloonsPolicyList + plural: balloonspolicies + singular: balloonspolicy + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: BalloonsPolicy represents the configuration for the balloons + policy. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: BalloonsPolicySpec describes a balloons policy. + properties: + agent: + default: + nodeResourceTopology: true + description: AgentConfig provides access to configuration data for + the agent. + properties: + nodeResourceTopology: + description: |- + NodeResourceTopology enables support for exporting resource usage using + NodeResourceTopology Custom Resources. + type: boolean + podResourceAPI: + description: PodResourceAPI enables support for querying kubelet + Pod Resource API. + type: boolean + type: object + allocatorTopologyBalancing: + description: |- + If AllocatorTopologyBalancing is true, balloons are + allocated and resized so that all topology elements + (packages, dies, numa nodes, cores) have roughly same + amount of allocations. The default is false: balloons are + packed tightly to optimize power efficiency. The value set + here can be overridden with the balloon type specific + setting with the same name. + type: boolean + availableResources: + additionalProperties: + type: string + description: Available/allowed (CPU) resources to use. + type: object + balloonTypes: + description: BallonDefs contains balloon type definitions. + items: + description: BalloonDef contains a balloon definition. + properties: + allocatorPriority: + default: high + description: |- + AllocatorPriority (High, Normal, Low, None) + This parameter is passed to CPU allocator when creating or + resizing a balloon. At init, balloons with highest priority + CPUs are allocated first. + enum: + - high + - normal + - low + - none + type: string + allocatorTopologyBalancing: + description: |- + AllocatorTopologyBalancing is the balloon type specific + parameter of the policy level parameter with the same name. + type: boolean + cpuClass: + description: |- + CpuClass controls how CPUs of a balloon are (re)configured + whenever a balloon is created, inflated or deflated. + type: string + groupBy: + description: |- + GroupBy groups containers into same balloon instances if + their GroupBy expressions evaluate to the same group. + Expressions are strings where key references like + ${pod/labels/mylabel} will be substituted with + corresponding values. + type: string + hideHyperthreads: + description: |- + HideHyperthreads allows containers in a balloon use only + one hyperthread from each physical CPU core in the + balloon. For instance, if a balloon contains 16 logical + CPUs from 8 physical cores and this option is true, then + containers in the balloon will be allowed to use 8 logical + CPUs, one from each physical core. This option is best used + with PreferSpreadOnPhysicalCores=false in order to allocate + all hyperthreads of each physical core into the same + balloon, but allow containers to use only one hyperthread + from each core. This will ensure that hidden hyperthreads + will remain completely idle as they cannot be allocated to + other balloons. + type: boolean + matchExpressions: + description: |- + MatchExpressions specifies one or more expressions which are evaluated + to see if a container should be assigned into balloon instances from + this definition. + items: + description: |- + Expression describes some runtime-evaluated condition. An expression + consists of a key, an operator and a set of values. An expression is + evaluated against an object which implements the Evaluable interface. + Evaluating an expression consists of looking up the value for the key + in the object, then using the operator to check it against the values + of the expression. The result is a single boolean value. An object is + said to satisfy the evaluated expression if this value is true. An + expression can contain 0, 1 or more values depending on the operator. + properties: + key: + description: Key is the expression key. + type: string + operator: + description: Op is the expression operator. + enum: + - Equals + - NotEqual + - In + - NotIn + - Exists + - NotExist + - AlwaysTrue + - Matches + - MatchesNot + - MatchesAny + - MatchesNone + type: string + values: + description: Values contains the values the key value + is evaluated against. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + maxBalloons: + description: |- + MaxBalloons is the maximum number of balloon instances that + is allowed to co-exist. If reached, new balloons cannot be + created anymore. + type: integer + maxCPUs: + description: |- + MaxCpus specifies the maximum number of CPUs exclusively + usable by containers in a balloon. Balloon size will not be + inflated larger than MaxCpus. + type: integer + memoryTypes: + description: |- + MemoryTypes lists memory types allowed to containers in a + balloon. Supported types are: DRAM, HBM, PMEM. By default + all memory types in the system are allowed. + items: + type: string + x-kubernetes-validations: + - messageExpression: '"invalid memory type: " + self + ", + expected DRAM, HBM, or PMEM"' + rule: self == 'DRAM' || self == 'HBM' || self == 'PMEM' + type: array + x-kubernetes-list-type: set + minBalloons: + description: |- + MinBalloons is the number of balloon instances that always + exist even if they would become empty. At init this number + of instances will be created before assigning any + containers. + type: integer + minCPUs: + description: |- + MinCpus specifies the minimum number of CPUs exclusively + usable by containers in a balloon. When new balloon is created, + this will be the number of CPUs reserved for it even if a container + would request less. + type: integer + name: + description: Name of the balloon definition. + type: string + namespaces: + description: |- + Namespaces control which namespaces are assigned into + balloon instances from this definition. This is used by + namespace assign methods. + items: + type: string + type: array + pinMemory: + description: |- + PinMemory controls pinning containers to memory nodes. + Overrides the policy level PinMemory setting in this balloon type. + type: boolean + preferCloseToDevices: + description: |- + PreferCloseToDevices: prefer creating new balloons of this + type close to listed devices. + items: + type: string + type: array + preferCoreType: + description: |- + preferCoreType: prefer performance or efficient (P/E) CPU cores on + hybrid architectures. + enum: + - efficient + - performance + type: string + preferIsolCpus: + default: false + description: 'preferIsolCpus: prefer kernel isolated cpus' + type: boolean + preferNewBalloons: + description: |- + PreferNewBalloons: prefer creating new balloons over adding + containers to existing balloons. The default is false: + prefer using filling free capacity and possibly inflating + existing balloons before creating new ones. + type: boolean + preferPerNamespaceBalloon: + description: |- + PreferPerNamespaceBalloon: if true, containers in different + namespaces are preferably placed in separate balloons, + even if the balloon type is the same for all of them. On + the other hand, containers in the same namespace will be + placed in the same balloon instances. The default is false: + namespaces have no effect on placement. + type: boolean + preferSpreadOnPhysicalCores: + description: |- + PreferSpreadOnPhysicalCores is the balloon type specific + parameter of the policy level parameter with the same name. + type: boolean + preferSpreadingPods: + description: |- + PreferSpreadingPods: containers of the same pod may be + placed on separate balloons. The default is false: prefer + placing containers of a pod to the same balloon(s). + type: boolean + shareIdleCPUsInSame: + description: |- + ShareIdleCpusInSame : if there are idle + CPUs, that is CPUs not in any balloon, in the same + as any CPU in the balloon, then allow + workloads to run on those (shared) CPUs in addition to the + (dedicated) CPUs of the balloon. + enum: + - "" + - system + - package + - die + - numa + - l2cache + - core + - thread + type: string + required: + - name + type: object + type: array + control: + properties: + cpu: + properties: + classes: + additionalProperties: + properties: + energyPerformancePreference: + description: EnergyPerformancePreference for CPUs in + this class. + type: integer + freqGovernor: + description: CPUFreq Governor for this class. + type: string + maxFreq: + description: MaxFreq is the maximum frequency for this + class. + type: integer + minFreq: + description: MinFreq is the minimum frequency for this + class. + type: integer + uncoreMaxFreq: + description: UncoreMaxFreq is the maximum uncore frequency + for this class. + type: integer + uncoreMinFreq: + description: UncoreMinFreq is the minimum uncore frequency + for this class. + type: integer + required: + - maxFreq + - minFreq + type: object + type: object + required: + - classes + type: object + type: object + idleCPUClass: + description: |- + IdleCpuClass controls how unusded CPUs outside any a + balloons are (re)configured. + type: string + instrumentation: + description: Config provides runtime configuration for instrumentation. + properties: + httpEndpoint: + description: |- + HTTPEndpoint is the address our HTTP server listens on. This endpoint is used + to expose Prometheus metrics among other things. + example: :8891 + type: string + metrics: + default: + enabled: + - policy + - buildinfo + description: Metrics defines which metrics to collect. + properties: + enabled: + description: Enabled enables collection for metrics matched + by glob patterns. + example: + - '*' + items: + type: string + type: array + polled: + description: Polled forces polled collection for metrics matched + by glob patterns. + example: + - computationally-expensive-metrics + items: + type: string + type: array + type: object + prometheusExport: + description: PrometheusExport enables exporting /metrics for Prometheus. + type: boolean + reportPeriod: + default: 30s + description: ReportPeriod is the interval between collecting polled + metrics. + format: duration + type: string + samplingRatePerMillion: + description: SamplingRatePerMillion is the number of samples to + collect per million spans. + example: 100000 + type: integer + tracingCollector: + description: |- + TracingCollector defines the external endpoint for tracing data collection. + Endpoints are specified as full URLs, or as plain URL schemes which then + imply scheme-specific defaults. The supported schemes and their default + URLs are: + - otlp-http, http: localhost:4318 + - otlp-grpc, grpc: localhost:4317 + example: otlp-http://localhost:4318 + type: string + type: object + log: + properties: + debug: + description: Debub turns on debug messages matching listed logger + sources. + items: + type: string + type: array + klog: + description: Klog configures the klog backend. + properties: + add_dir_header: + type: boolean + alsologtostderr: + type: boolean + log_backtrace_at: + type: string + log_dir: + type: string + log_file: + type: string + log_file_max_size: + format: int64 + type: integer + logtostderr: + type: boolean + one_output: + type: boolean + skip_headers: + type: boolean + skip_log_headers: + type: boolean + stderrthreshold: + type: string + v: + type: integer + vmodule: + type: string + type: object + source: + description: Source controls whether messages are prefixed with + their logger source. + type: boolean + type: object + pinCPU: + default: true + description: PinCPU controls pinning containers to CPUs. + type: boolean + pinMemory: + default: true + description: PinMemory controls pinning containers to memory nodes. + type: boolean + preferSpreadOnPhysicalCores: + description: |- + PreferSpreadOnPhysicalCores prefers allocating logical CPUs + (possibly hyperthreads) for a balloon from separate physical CPU + cores. This prevents workloads in the balloon from interfering with + themselves as they do not compete on the resources of the same CPU + cores. On the other hand, it allows more interference between + workloads in different balloons. The default is false: balloons + are packed tightly to a minimum number of physical CPU cores. The + value set here is the default for all balloon types, but it can be + overridden with the balloon type specific setting with the same + name. + type: boolean + preserve: + description: |- + Preserve specifies containers whose resource pinning must not be + modified by the policy. + properties: + matchExpressions: + description: MatchExpressions specifies one or more expressions. + items: + description: |- + Expression describes some runtime-evaluated condition. An expression + consists of a key, an operator and a set of values. An expression is + evaluated against an object which implements the Evaluable interface. + Evaluating an expression consists of looking up the value for the key + in the object, then using the operator to check it against the values + of the expression. The result is a single boolean value. An object is + said to satisfy the evaluated expression if this value is true. An + expression can contain 0, 1 or more values depending on the operator. + properties: + key: + description: Key is the expression key. + type: string + operator: + description: Op is the expression operator. + enum: + - Equals + - NotEqual + - In + - NotIn + - Exists + - NotExist + - AlwaysTrue + - Matches + - MatchesNot + - MatchesAny + - MatchesNone + type: string + values: + description: Values contains the values the key value is + evaluated against. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + reservedPoolNamespaces: + description: |- + ReservedPoolNamespaces is a list of namespace globs that + will be allocated to reserved CPUs. + items: + type: string + type: array + reservedResources: + additionalProperties: + type: string + description: Reserved (CPU) resources for kube-system namespace. + type: object + required: + - reservedResources + type: object + status: + description: ConfigStatus is the per-node status for a configuration resource. + properties: + nodes: + additionalProperties: + description: NodeStatus is the configuration status for a single + node. + properties: + errors: + description: Error can provide further details of a configuration + error. + type: string + generation: + description: Generation is the generation the configuration + this status was set for. + format: int64 + type: integer + status: + description: Status of activating the configuration on this + node. + enum: + - Success + - Failure + type: string + timestamp: + description: Timestamp of setting this status. + format: date-time + type: string + required: + - generation + - status + type: object + type: object + required: + - nodes + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/nri-plugins-operator/0.8.0/manifests/config.nri_nriplugindeployments.yaml b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_nriplugindeployments.yaml new file mode 100644 index 00000000000..612e2401cb1 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_nriplugindeployments.yaml @@ -0,0 +1,1067 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + creationTimestamp: null + name: nriplugindeployments.config.nri +spec: + group: config.nri + names: + kind: NriPluginDeployment + listKind: NriPluginDeploymentList + plural: nriplugindeployments + shortNames: + - npd + singular: nriplugindeployment + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: NriPluginDeployment is the Schema for the nriplugindeployments + API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: Spec defines the intended state of NriPluginDeployment + properties: + pluginName: + enum: + - topology-aware + - balloons + - memtierd + - memory-qos + - sgx-epc + type: string + x-kubernetes-validations: + - message: pluginName is immutable + rule: self == oldSelf + pluginVersion: + type: string + state: + enum: + - absent + - present + type: string + values: + description: values defines fields to manipulate plugin Helm chart + default values + properties: + affinity: + description: If specified, the pod's scheduling constraints. + properties: + nodeAffinity: + 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. + 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). + properties: + preference: + description: A node selector term, associated with + the corresponding weight. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + weight: + description: Weight associated with matching the + corresponding nodeSelectorTerm, in the range 1-100. + format: int32 + type: integer + required: + - preference + - weight + 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. + 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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + type: object + x-kubernetes-map-type: atomic + type: array + 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. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + type: object + type: object + x-kubernetes-map-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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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". + 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. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + 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. + 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 + properties: + labelSelector: + description: A label query over a set of resources, + in this case 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + type: object + type: object + x-kubernetes-map-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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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". + 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. + type: string + required: + - topologyKey + type: object + type: array + 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. + items: + description: The weights of all of the matched WeightedPodAffinityTerm + fields are added per-node to find the most preferred + node(s) + properties: + podAffinityTerm: + 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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + type: object + type: object + x-kubernetes-map-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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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". + 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. + type: string + required: + - topologyKey + type: object + weight: + description: weight associated with matching the + corresponding podAffinityTerm, in the range 1-100. + format: int32 + type: integer + required: + - podAffinityTerm + - weight + 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. + 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 + properties: + labelSelector: + description: A label query over a set of resources, + in this case 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + type: object + type: object + x-kubernetes-map-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. + 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. + 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. + 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. + items: + type: string + type: array + required: + - key + - operator + type: object + type: array + 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. + 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". + 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. + type: string + required: + - topologyKey + type: object + type: array + type: object + type: object + image: + description: image defines Plugin DeamonSet image name and tag + properties: + name: + type: string + pullPolicy: + enum: + - Always + - Never + - IfNotPresent + type: string + type: object + initContainerImage: + description: initContainerImage defines InitContainer image name + and tag + properties: + name: + type: string + pullPolicy: + enum: + - Always + - Never + - IfNotPresent + type: string + type: object + nodeSelector: + additionalProperties: + type: string + description: Define which Nodes the Pods are scheduled on. + type: object + nri: + properties: + plugin: + properties: + index: + type: integer + type: object + runtime: + properties: + config: + properties: + pluginRegistrationTimeout: + pattern: ^(([5-9])|([1-2][0-9])|(30))s$ + type: string + pluginRequestTimeout: + pattern: ^(([2-9])|([1-2][0-9])|(30))s$ + type: string + required: + - pluginRegistrationTimeout + - pluginRequestTimeout + type: object + patchConfig: + type: boolean + type: object + type: object + tolerations: + description: If specified, the pod's tolerations. + items: + description: Toleration represents the toleration object that + can be attached to a pod. The pod this Toleration is attached + to tolerates any taint that matches the 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. + NoSchedule - do not allow new pods to schedule onto the + node unless they tolerate the taint, but allow all pods + submitted to Kubelet without going through the scheduler + to start, and allow all already-running pods to continue + running.Enforced by the scheduler. PreferNoSchedule - + like TaintEffectNoSchedule, but the scheduler tries not + to schedule new pods onto the node, rather than prohibiting + new pods from scheduling onto the node entirely. Enforced + by the scheduler. NoExecute - evict any already-running + pods that do not tolerate the taint. Currently enforced + by NodeController. + enum: + - NoSchedule + - PreferNoSchedule + - 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. + 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. + enum: + - Exists + - Equal + 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. + 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. + type: string + type: object + type: array + type: object + x-kubernetes-validations: + - message: values is immutable + rule: self == oldSelf + required: + - pluginName + - pluginVersion + - state + type: object + x-kubernetes-preserve-unknown-fields: true + status: + description: Status defines the observed state of NriPluginDeployment + type: object + x-kubernetes-preserve-unknown-fields: true + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/nri-plugins-operator/0.8.0/manifests/config.nri_templatepolicies.yaml b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_templatepolicies.yaml new file mode 100644 index 00000000000..0bed564b5b5 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_templatepolicies.yaml @@ -0,0 +1,259 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + creationTimestamp: null + name: templatepolicies.config.nri +spec: + group: config.nri + names: + kind: TemplatePolicy + listKind: TemplatePolicyList + plural: templatepolicies + singular: templatepolicy + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: TemplatePolicy represents the configuration for the template + policy. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: TemplatePolicySpec describes a template policy. + properties: + agent: + default: + nodeResourceTopology: true + description: AgentConfig provides access to configuration data for + the agent. + properties: + nodeResourceTopology: + description: |- + NodeResourceTopology enables support for exporting resource usage using + NodeResourceTopology Custom Resources. + type: boolean + podResourceAPI: + description: PodResourceAPI enables support for querying kubelet + Pod Resource API. + type: boolean + type: object + availableResources: + additionalProperties: + type: string + type: object + control: + properties: + cpu: + properties: + classes: + additionalProperties: + properties: + energyPerformancePreference: + description: EnergyPerformancePreference for CPUs in + this class. + type: integer + freqGovernor: + description: CPUFreq Governor for this class. + type: string + maxFreq: + description: MaxFreq is the maximum frequency for this + class. + type: integer + minFreq: + description: MinFreq is the minimum frequency for this + class. + type: integer + uncoreMaxFreq: + description: UncoreMaxFreq is the maximum uncore frequency + for this class. + type: integer + uncoreMinFreq: + description: UncoreMinFreq is the minimum uncore frequency + for this class. + type: integer + required: + - maxFreq + - minFreq + type: object + type: object + required: + - classes + type: object + type: object + instrumentation: + description: Config provides runtime configuration for instrumentation. + properties: + httpEndpoint: + description: |- + HTTPEndpoint is the address our HTTP server listens on. This endpoint is used + to expose Prometheus metrics among other things. + example: :8891 + type: string + metrics: + default: + enabled: + - policy + - buildinfo + description: Metrics defines which metrics to collect. + properties: + enabled: + description: Enabled enables collection for metrics matched + by glob patterns. + example: + - '*' + items: + type: string + type: array + polled: + description: Polled forces polled collection for metrics matched + by glob patterns. + example: + - computationally-expensive-metrics + items: + type: string + type: array + type: object + prometheusExport: + description: PrometheusExport enables exporting /metrics for Prometheus. + type: boolean + reportPeriod: + default: 30s + description: ReportPeriod is the interval between collecting polled + metrics. + format: duration + type: string + samplingRatePerMillion: + description: SamplingRatePerMillion is the number of samples to + collect per million spans. + example: 100000 + type: integer + tracingCollector: + description: |- + TracingCollector defines the external endpoint for tracing data collection. + Endpoints are specified as full URLs, or as plain URL schemes which then + imply scheme-specific defaults. The supported schemes and their default + URLs are: + - otlp-http, http: localhost:4318 + - otlp-grpc, grpc: localhost:4317 + example: otlp-http://localhost:4318 + type: string + type: object + log: + properties: + debug: + description: Debub turns on debug messages matching listed logger + sources. + items: + type: string + type: array + klog: + description: Klog configures the klog backend. + properties: + add_dir_header: + type: boolean + alsologtostderr: + type: boolean + log_backtrace_at: + type: string + log_dir: + type: string + log_file: + type: string + log_file_max_size: + format: int64 + type: integer + logtostderr: + type: boolean + one_output: + type: boolean + skip_headers: + type: boolean + skip_log_headers: + type: boolean + stderrthreshold: + type: string + v: + type: integer + vmodule: + type: string + type: object + source: + description: Source controls whether messages are prefixed with + their logger source. + type: boolean + type: object + reservedResources: + additionalProperties: + type: string + type: object + required: + - reservedResources + type: object + status: + description: ConfigStatus is the per-node status for a configuration resource. + properties: + nodes: + additionalProperties: + description: NodeStatus is the configuration status for a single + node. + properties: + errors: + description: Error can provide further details of a configuration + error. + type: string + generation: + description: Generation is the generation the configuration + this status was set for. + format: int64 + type: integer + status: + description: Status of activating the configuration on this + node. + enum: + - Success + - Failure + type: string + timestamp: + description: Timestamp of setting this status. + format: date-time + type: string + required: + - generation + - status + type: object + type: object + required: + - nodes + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/nri-plugins-operator/0.8.0/manifests/config.nri_topologyawarepolicies.yaml b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_topologyawarepolicies.yaml new file mode 100644 index 00000000000..665c6d798d0 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/config.nri_topologyawarepolicies.yaml @@ -0,0 +1,320 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.16.5 + creationTimestamp: null + name: topologyawarepolicies.config.nri +spec: + group: config.nri + names: + kind: TopologyAwarePolicy + listKind: TopologyAwarePolicyList + plural: topologyawarepolicies + singular: topologyawarepolicy + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: TopologyAwarePolicy represents the configuration for the topology-aware + policy. + properties: + apiVersion: + description: |- + APIVersion defines the versioned schema of this representation of an object. + Servers should convert recognized schemas to the latest internal value, and + may reject unrecognized values. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources + type: string + kind: + description: |- + Kind is a string value representing the REST resource this object represents. + Servers may infer this from the endpoint the client submits requests to. + Cannot be updated. + In CamelCase. + More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds + type: string + metadata: + type: object + spec: + description: TopologyAwarePolicySpec describes a topology-aware policy. + properties: + agent: + default: + nodeResourceTopology: true + description: AgentConfig provides access to configuration data for + the agent. + properties: + nodeResourceTopology: + description: |- + NodeResourceTopology enables support for exporting resource usage using + NodeResourceTopology Custom Resources. + type: boolean + podResourceAPI: + description: PodResourceAPI enables support for querying kubelet + Pod Resource API. + type: boolean + type: object + availableResources: + additionalProperties: + type: string + description: |- + AvailableResources defines the bounding set for the policy to allocate + resources from. + type: object + colocateNamespaces: + description: |- + ColocateNamespaces controls whether an attempt is made to allocate all + containers of pods in a namespace close to each other (to the same topology + zone). + type: boolean + colocatePods: + description: |- + ColocatePods controls whether an attempt is made to allocate containers + within the same pod close to each other (to the same topology zone). + type: boolean + control: + properties: + cpu: + properties: + classes: + additionalProperties: + properties: + energyPerformancePreference: + description: EnergyPerformancePreference for CPUs in + this class. + type: integer + freqGovernor: + description: CPUFreq Governor for this class. + type: string + maxFreq: + description: MaxFreq is the maximum frequency for this + class. + type: integer + minFreq: + description: MinFreq is the minimum frequency for this + class. + type: integer + uncoreMaxFreq: + description: UncoreMaxFreq is the maximum uncore frequency + for this class. + type: integer + uncoreMinFreq: + description: UncoreMinFreq is the minimum uncore frequency + for this class. + type: integer + required: + - maxFreq + - minFreq + type: object + type: object + required: + - classes + type: object + type: object + defaultCPUPriority: + default: none + description: |- + DefaultCPUPriority (high, normal, low, none) is the preferred CPU + priority for allocated CPUs when a container has not been annotated + with any other CPU preference. + Notes: Currently this option only affects exclusive CPU allocations. + enum: + - high + - normal + - low + - none + type: string + instrumentation: + description: Config provides runtime configuration for instrumentation. + properties: + httpEndpoint: + description: |- + HTTPEndpoint is the address our HTTP server listens on. This endpoint is used + to expose Prometheus metrics among other things. + example: :8891 + type: string + metrics: + default: + enabled: + - policy + - buildinfo + description: Metrics defines which metrics to collect. + properties: + enabled: + description: Enabled enables collection for metrics matched + by glob patterns. + example: + - '*' + items: + type: string + type: array + polled: + description: Polled forces polled collection for metrics matched + by glob patterns. + example: + - computationally-expensive-metrics + items: + type: string + type: array + type: object + prometheusExport: + description: PrometheusExport enables exporting /metrics for Prometheus. + type: boolean + reportPeriod: + default: 30s + description: ReportPeriod is the interval between collecting polled + metrics. + format: duration + type: string + samplingRatePerMillion: + description: SamplingRatePerMillion is the number of samples to + collect per million spans. + example: 100000 + type: integer + tracingCollector: + description: |- + TracingCollector defines the external endpoint for tracing data collection. + Endpoints are specified as full URLs, or as plain URL schemes which then + imply scheme-specific defaults. The supported schemes and their default + URLs are: + - otlp-http, http: localhost:4318 + - otlp-grpc, grpc: localhost:4317 + example: otlp-http://localhost:4318 + type: string + type: object + log: + properties: + debug: + description: Debub turns on debug messages matching listed logger + sources. + items: + type: string + type: array + klog: + description: Klog configures the klog backend. + properties: + add_dir_header: + type: boolean + alsologtostderr: + type: boolean + log_backtrace_at: + type: string + log_dir: + type: string + log_file: + type: string + log_file_max_size: + format: int64 + type: integer + logtostderr: + type: boolean + one_output: + type: boolean + skip_headers: + type: boolean + skip_log_headers: + type: boolean + stderrthreshold: + type: string + v: + type: integer + vmodule: + type: string + type: object + source: + description: Source controls whether messages are prefixed with + their logger source. + type: boolean + type: object + pinCPU: + default: true + description: PinCPU controls whether the policy pins containers to + allocated CPUs. + type: boolean + pinMemory: + default: true + description: PinMemory controls whether the policy pins containers + allocated memory nodes. + type: boolean + preferIsolatedCPUs: + default: true + description: |- + PreferIsolated controls whether kernel-isolated CPUs are preferred for + Guaranteed QoS-class containers that request 1 full CPU. + type: boolean + preferSharedCPUs: + description: |- + PreferShared controls whether exclusive CPU allocation is considered for + all eligible containers. If set to trues, exclusive CPU allocation is only + considered for eligible containers which are explicitly annotated to opt + out from shared allocation. + type: boolean + reservedPoolNamespaces: + description: |- + ReservedPoolNamespaces lists extra namespaces which are treated like + 'kube-system' (resources allocate from the reserved pool). + items: + type: string + type: array + reservedResources: + additionalProperties: + type: string + description: |- + ReservedResources defines the resources reserved namespaces get assigned + to. If AvailableResources is defined, ReservedResources must be a subset + of it. + type: object + required: + - reservedResources + type: object + status: + description: ConfigStatus is the per-node status for a configuration resource. + properties: + nodes: + additionalProperties: + description: NodeStatus is the configuration status for a single + node. + properties: + errors: + description: Error can provide further details of a configuration + error. + type: string + generation: + description: Generation is the generation the configuration + this status was set for. + format: int64 + type: integer + status: + description: Status of activating the configuration on this + node. + enum: + - Success + - Failure + type: string + timestamp: + description: Timestamp of setting this status. + format: date-time + type: string + required: + - generation + - status + type: object + type: object + required: + - nodes + type: object + required: + - spec + type: object + served: true + storage: true + subresources: + status: {} +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-controller-manager-metrics-service_v1_service.yaml b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-controller-manager-metrics-service_v1_service.yaml new file mode 100644 index 00000000000..b6802a015b4 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-controller-manager-metrics-service_v1_service.yaml @@ -0,0 +1,23 @@ +apiVersion: v1 +kind: Service +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: nri-plugins-operator + app.kubernetes.io/instance: controller-manager-metrics-service + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: service + app.kubernetes.io/part-of: nri-plugins-operator + control-plane: controller-manager + name: nri-plugins-operator-controller-manager-metrics-service +spec: + ports: + - name: https + port: 8443 + protocol: TCP + targetPort: https + selector: + control-plane: controller-manager +status: + loadBalancer: {} diff --git a/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml new file mode 100644 index 00000000000..7c85bbb91ae --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator-metrics-reader_rbac.authorization.k8s.io_v1_clusterrole.yaml @@ -0,0 +1,17 @@ +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + creationTimestamp: null + labels: + app.kubernetes.io/component: kube-rbac-proxy + app.kubernetes.io/created-by: nri-plugins-operator + app.kubernetes.io/instance: metrics-reader + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: clusterrole + app.kubernetes.io/part-of: nri-plugins-operator + name: nri-plugins-operator-metrics-reader +rules: +- nonResourceURLs: + - /metrics + verbs: + - get diff --git a/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator.clusterserviceversion.yaml b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator.clusterserviceversion.yaml new file mode 100644 index 00000000000..ef84744dd87 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/nri-plugins-operator.clusterserviceversion.yaml @@ -0,0 +1,584 @@ +apiVersion: operators.coreos.com/v1alpha1 +kind: ClusterServiceVersion +metadata: + annotations: + alm-examples: |- + [ + { + "apiVersion": "config.nri/v1alpha1", + "kind": "BalloonsPolicy", + "metadata": { + "name": "default" + }, + "spec": { + "allocatorTopologyBalancing": true, + "balloonTypes": [ + { + "allocatorPriority": "normal", + "minCPUs": 1, + "name": "default", + "namespaces": [ + "default" + ], + "shareIdleCPUsInSame": "system" + } + ], + "idleCPUClass": "normal", + "log": { + "debug": [ + "policy" + ] + }, + "pinCPU": true, + "pinMemory": true, + "reservedPoolNamespaces": [ + "kube-system" + ], + "reservedResources": { + "cpu": "750m" + } + } + }, + { + "apiVersion": "config.nri/v1alpha1", + "kind": "NriPluginDeployment", + "metadata": { + "labels": { + "app.kubernetes.io/created-by": "nri-plugins-operator", + "app.kubernetes.io/instance": "nriplugindeployment-sample", + "app.kubernetes.io/managed-by": "kustomize", + "app.kubernetes.io/name": "nriplugindeployment", + "app.kubernetes.io/part-of": "nri-plugins-operator" + }, + "name": "nriplugindeployment-sample", + "namespace": "kube-system" + }, + "spec": { + "pluginName": "topology-aware", + "pluginVersion": "v0.2.3", + "state": "present", + "values": { + "nri": { + "runtime": { + "patchConfig": true + } + } + } + } + }, + { + "apiVersion": "config.nri/v1alpha1", + "kind": "TemplatePolicy", + "metadata": { + "name": "default" + }, + "spec": { + "instrumentation": { + "reportPeriod": "60s", + "samplingRatePerMillion": 1000000 + }, + "log": { + "klog": { + "skip_headers": true + }, + "source": true + }, + "reservedResources": { + "cpu": "750m" + } + } + }, + { + "apiVersion": "config.nri/v1alpha1", + "kind": "TopologyAwarePolicy", + "metadata": { + "name": "default" + }, + "spec": { + "colocateNamespaces": false, + "colocatePods": true, + "instrumentation": { + "reportPeriod": "60s", + "samplingRatePerMillion": 1000000 + }, + "log": { + "klog": { + "skip_headers": true + }, + "source": true + }, + "pinCPU": true, + "pinMemory": true, + "preferIsolatedCPUs": true, + "preferSharedCPUs": false, + "reservedPoolNamespaces": [ + "special-namespace", + "extra-reserved-namespace" + ], + "reservedResources": { + "cpu": "750m" + } + } + }, + { + "apiVersion": "topology.node.k8s.io/v1alpha1", + "kind": "NodeResourceTopology", + "metadata": { + "name": "node1" + }, + "topologyPolicies": [ + "SingleNUMANode" + ], + "zones": [ + { + "name": "node-0", + "resources": [ + { + "allocatable": 15, + "available": 10, + "capacity": 20, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + }, + { + "name": "node-1", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 6, + "available": 6, + "capacity": 6, + "name": "vendor/nic2" + } + ], + "type": "Node" + }, + { + "name": "node-2", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + }, + { + "name": "node-3", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + } + ] + }, + { + "apiVersion": "topology.node.k8s.io/v1alpha2", + "kind": "NodeResourceTopology", + "metadata": { + "name": "node1" + }, + "topologyPolicies": [ + "SingleNUMANode" + ], + "zones": [ + { + "name": "node-0", + "resources": [ + { + "allocatable": 15, + "available": 10, + "capacity": 20, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + }, + { + "name": "node-1", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 6, + "available": 6, + "capacity": 6, + "name": "vendor/nic2" + } + ], + "type": "Node" + }, + { + "name": "node-2", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + }, + { + "name": "node-3", + "resources": [ + { + "allocatable": 25, + "available": 15, + "capacity": 30, + "name": "cpu" + }, + { + "allocatable": 3, + "available": 3, + "capacity": 3, + "name": "vendor/nic1" + } + ], + "type": "Node" + } + ] + } + ] + capabilities: Basic Install + categories: OpenShift Optional + certified: "false" + containerImage: ghcr.io/containers/nri-plugins/nri-plugins-operator:v0.8.0 + createdAt: "2024-12-18T09:04:33Z" + description: An operator that installs Node Resource Interface reference plugins. + operators.operatorframework.io/builder: operator-sdk-v1.36.0 + operators.operatorframework.io/project_layout: ansible.sdk.operatorframework.io/v1 + repository: https://github.com/containers/nri-plugins-operator + support: "false" + name: nri-plugins-operator.v0.8.0 + namespace: placeholder +spec: + apiservicedefinitions: {} + customresourcedefinitions: + owned: + - description: BalloonsPolicy represents the configuration for the balloons policy + displayName: Balloons Policy + kind: BalloonsPolicy + name: balloonspolicies.config.nri + version: v1alpha1 + - description: Describes node resources and their topology + displayName: Node Resource Topology (v1alpha1) + kind: NodeResourceTopology + name: noderesourcetopologies.topology.node.k8s.io + version: v1alpha1 + - description: Describes node resources and their topology + displayName: Node Resource Topology (v1alpha2) + kind: NodeResourceTopology + name: noderesourcetopologies.topology.node.k8s.io + version: v1alpha2 + - description: Represents the deployment of NRI plugin + displayName: NRI Plugin Deployment + kind: NriPluginDeployment + name: nriplugindeployments.config.nri + version: v1alpha1 + - description: TemplatePolicy represents the configuration for the template policy. + displayName: Template Policy + kind: TemplatePolicy + name: templatepolicies.config.nri + version: v1alpha1 + - description: TopologyAwarePolicy represents the configuration for the topology-aware + policy. + displayName: Topology Aware Policy + kind: TopologyAwarePolicy + name: topologyawarepolicies.config.nri + version: v1alpha1 + description: |- + The **nri-plugins-operator** deploys community maintained [nri-plugins](https://github.com/containers/nri-plugins) into a Kubernetes cluster. + + # Node Resource Interface + NRI allows plugging domain- or vendor-specific custom logic into OCI- compatible runtimes. This logic can make controlled changes to containers or perform extra actions outside the scope of OCI at certain points in a containers lifecycle. This can be used, for instance, for improved allocation and management of devices and other container resources. + + For more info, visit [https://github.com/containerd/nri](https://github.com/containerd/nri) + + # Node Resource Interface reference plugins + + The NRI plugins is a collection of Node Resource Interface based plugins to manage various aspects of pod and container life cycle. For example the resource policy plugins can be used to modify the container resource allocation depending on available system resources. + + For more info, visit [https://github.com/containers/nri-plugins](https://github.com/containers/nri-plugins) + + # License + + nri-plugins-operator is distributed under the + [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.txt). + displayName: NRI-Plugins-Operator + icon: + - base64data: PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNTguNTEgMjU4LjUxIj48ZGVmcz48c3R5bGU+LmNscy0xe2ZpbGw6I2QxZDFkMTt9LmNscy0ye2ZpbGw6IzhkOGQ4Zjt9PC9zdHlsZT48L2RlZnM+PHRpdGxlPkFzc2V0IDQ8L3RpdGxlPjxnIGlkPSJMYXllcl8yIiBkYXRhLW5hbWU9IkxheWVyIDIiPjxnIGlkPSJMYXllcl8xLTIiIGRhdGEtbmFtZT0iTGF5ZXIgMSI+PHBhdGggY2xhc3M9ImNscy0xIiBkPSJNMTI5LjI1LDIwQTEwOS4xLDEwOS4xLDAsMCwxLDIwNi40LDIwNi40LDEwOS4xLDEwOS4xLDAsMSwxLDUyLjExLDUyLjExLDEwOC40NSwxMDguNDUsMCwwLDEsMTI5LjI1LDIwbTAtMjBoMEM1OC4xNiwwLDAsNTguMTYsMCwxMjkuMjVIMGMwLDcxLjA5LDU4LjE2LDEyOS4yNiwxMjkuMjUsMTI5LjI2aDBjNzEuMDksMCwxMjkuMjYtNTguMTcsMTI5LjI2LTEyOS4yNmgwQzI1OC41MSw1OC4xNiwyMDAuMzQsMCwxMjkuMjUsMFoiLz48cGF0aCBjbGFzcz0iY2xzLTIiIGQ9Ik0xNzcuNTQsMTAzLjQxSDE0MS42NkwxNTQuOSw2NS43NmMxLjI1LTQuNC0yLjMzLTguNzYtNy4yMS04Ljc2SDEwMi45M2E3LjMyLDcuMzIsMCwwLDAtNy40LDZsLTEwLDY5LjYxYy0uNTksNC4xNywyLjg5LDcuODksNy40LDcuODloMzYuOUwxMTUuNTUsMTk3Yy0xLjEyLDQuNDEsMi40OCw4LjU1LDcuMjQsOC41NWE3LjU4LDcuNTgsMCwwLDAsNi40Ny0zLjQ4TDE4NCwxMTMuODVDMTg2Ljg2LDEwOS4yNCwxODMuMjksMTAzLjQxLDE3Ny41NCwxMDMuNDFaIi8+PC9nPjwvZz48L3N2Zz4= + mediatype: image/svg+xml + install: + spec: + clusterPermissions: + - rules: + - apiGroups: + - config.nri + resources: + - nriplugindeployments + verbs: + - get + - list + - watch + - update + - apiGroups: + - config.nri + resources: + - nriplugindeployments/status + verbs: + - get + - update + - patch + - apiGroups: + - topology.node.k8s.io + resources: + - noderesourcetopologies + verbs: + - create + - get + - update + - apiGroups: + - rbac.authorization.k8s.io + - apps + - "" + resources: + - clusterrolebindings + - clusterroles + - rolebindings + - roles + - daemonsets + - configmaps + - serviceaccounts + - namespaces + - secrets + verbs: + - '*' + - apiGroups: + - authentication.k8s.io + resources: + - tokenreviews + verbs: + - create + - apiGroups: + - authorization.k8s.io + resources: + - subjectaccessreviews + verbs: + - create + serviceAccountName: nri-plugins-operator-controller-manager + deployments: + - label: + app.kubernetes.io/component: manager + app.kubernetes.io/created-by: nri-plugins-operator + app.kubernetes.io/instance: controller-manager + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/name: deployment + app.kubernetes.io/part-of: nri-plugins-operator + control-plane: controller-manager + name: nri-plugins-operator-controller-manager + spec: + replicas: 1 + selector: + matchLabels: + control-plane: controller-manager + strategy: {} + template: + metadata: + annotations: + kubectl.kubernetes.io/default-container: manager + labels: + control-plane: controller-manager + spec: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/arch + operator: In + values: + - amd64 + - arm64 + - ppc64le + - s390x + - key: kubernetes.io/os + operator: In + values: + - linux + containers: + - args: + - --secure-listen-address=0.0.0.0:8443 + - --upstream=http://127.0.0.1:8080/ + - --logtostderr=true + - --v=0 + image: gcr.io/kubebuilder/kube-rbac-proxy:v0.13.1 + name: kube-rbac-proxy + ports: + - containerPort: 8443 + name: https + protocol: TCP + resources: + limits: + cpu: 500m + memory: 128Mi + requests: + cpu: 5m + memory: 64Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + - args: + - --health-probe-bind-address=:6789 + - --metrics-bind-address=127.0.0.1:8080 + - --leader-elect + - --leader-election-id=nri-plugins-operator + env: + - name: ANSIBLE_GATHERING + value: explicit + image: ghcr.io/containers/nri-plugins/nri-plugins-operator:v0.8.0 + livenessProbe: + httpGet: + path: /healthz + port: 6789 + initialDelaySeconds: 15 + periodSeconds: 20 + name: manager + readinessProbe: + httpGet: + path: /readyz + port: 6789 + initialDelaySeconds: 5 + periodSeconds: 10 + resources: + limits: + cpu: 500m + memory: 768Mi + requests: + cpu: 10m + memory: 256Mi + securityContext: + allowPrivilegeEscalation: false + capabilities: + drop: + - ALL + securityContext: + runAsNonRoot: true + serviceAccountName: nri-plugins-operator-controller-manager + terminationGracePeriodSeconds: 10 + permissions: + - rules: + - apiGroups: + - "" + resources: + - configmaps + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - coordination.k8s.io + resources: + - leases + verbs: + - get + - list + - watch + - create + - update + - patch + - delete + - apiGroups: + - "" + resources: + - events + verbs: + - create + - patch + serviceAccountName: nri-plugins-operator-controller-manager + strategy: deployment + installModes: + - supported: false + type: OwnNamespace + - supported: false + type: SingleNamespace + - supported: false + type: MultiNamespace + - supported: true + type: AllNamespaces + keywords: + - nri-plugins + - nri + - cri-o + - containerd + - kubernetes + - performance + links: + - name: NRI-Plugins + url: https://github.com/containers/nri-plugins + - name: NRI + url: https://github.com/containers/nri + maintainers: + - email: feruzjon.muyassarov@intel.com + name: nri-plugins project maintainers + maturity: alpha + minKubeVersion: 1.27.0 + provider: + name: nri-plugins project owners + url: https://github.com/containers/nri-plugins + version: 0.8.0 diff --git a/operators/nri-plugins-operator/0.8.0/manifests/topology.node.k8s.io_noderesourcetopologies.yaml b/operators/nri-plugins-operator/0.8.0/manifests/topology.node.k8s.io_noderesourcetopologies.yaml new file mode 100644 index 00000000000..31ae0a406f7 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/manifests/topology.node.k8s.io_noderesourcetopologies.yaml @@ -0,0 +1,276 @@ +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + api-approved.kubernetes.io: https://github.com/kubernetes/enhancements/pull/1870 + controller-gen.kubebuilder.io/version: v0.11.2 + creationTimestamp: null + name: noderesourcetopologies.topology.node.k8s.io +spec: + group: topology.node.k8s.io + names: + kind: NodeResourceTopology + listKind: NodeResourceTopologyList + plural: noderesourcetopologies + shortNames: + - node-res-topo + singular: noderesourcetopology + scope: Cluster + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: NodeResourceTopology describes node resources and their topology. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + topologyPolicies: + items: + type: string + type: array + zones: + description: ZoneList contains an array of Zone objects. + items: + description: Zone represents a resource topology zone, e.g. socket, + node, die or core. + properties: + attributes: + description: AttributeList contains an array of AttributeInfo objects. + items: + description: AttributeInfo contains one attribute of a Zone. + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + costs: + description: CostList contains an array of CostInfo objects. + items: + description: CostInfo describes the cost (or distance) between + two Zones. + properties: + name: + type: string + value: + format: int64 + type: integer + required: + - name + - value + type: object + type: array + name: + type: string + parent: + type: string + resources: + description: ResourceInfoList contains an array of ResourceInfo + objects. + items: + description: ResourceInfo contains information about one resource + type. + properties: + allocatable: + anyOf: + - type: integer + - type: string + description: Allocatable quantity of the resource, corresponding + to allocatable in node status, i.e. total amount of this + resource available to be used by pods. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + available: + anyOf: + - type: integer + - type: string + description: Available is the amount of this resource currently + available for new (to be scheduled) pods, i.e. Allocatable + minus the resources reserved by currently running pods. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + capacity: + anyOf: + - type: integer + - type: string + description: Capacity of the resource, corresponding to capacity + in node status, i.e. total amount of this resource that + the node has. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + name: + description: Name of the resource. + type: string + required: + - allocatable + - available + - capacity + - name + type: object + type: array + type: + type: string + required: + - name + - type + type: object + type: array + required: + - topologyPolicies + - zones + type: object + served: true + storage: false + - name: v1alpha2 + schema: + openAPIV3Schema: + description: NodeResourceTopology describes node resources and their topology. + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + attributes: + description: AttributeList contains an array of AttributeInfo objects. + items: + description: AttributeInfo contains one attribute of a Zone. + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + topologyPolicies: + description: 'DEPRECATED (to be removed in v1beta1): use top level attributes + if needed' + items: + type: string + type: array + zones: + description: ZoneList contains an array of Zone objects. + items: + description: Zone represents a resource topology zone, e.g. socket, + node, die or core. + properties: + attributes: + description: AttributeList contains an array of AttributeInfo objects. + items: + description: AttributeInfo contains one attribute of a Zone. + properties: + name: + type: string + value: + type: string + required: + - name + - value + type: object + type: array + costs: + description: CostList contains an array of CostInfo objects. + items: + description: CostInfo describes the cost (or distance) between + two Zones. + properties: + name: + type: string + value: + format: int64 + type: integer + required: + - name + - value + type: object + type: array + name: + type: string + parent: + type: string + resources: + description: ResourceInfoList contains an array of ResourceInfo + objects. + items: + description: ResourceInfo contains information about one resource + type. + properties: + allocatable: + anyOf: + - type: integer + - type: string + description: Allocatable quantity of the resource, corresponding + to allocatable in node status, i.e. total amount of this + resource available to be used by pods. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + available: + anyOf: + - type: integer + - type: string + description: Available is the amount of this resource currently + available for new (to be scheduled) pods, i.e. Allocatable + minus the resources reserved by currently running pods. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + capacity: + anyOf: + - type: integer + - type: string + description: Capacity of the resource, corresponding to capacity + in node status, i.e. total amount of this resource that + the node has. + pattern: ^(\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))(([KMGTPE]i)|[numkMGTPE]|([eE](\+|-)?(([0-9]+(\.[0-9]*)?)|(\.[0-9]+))))?$ + x-kubernetes-int-or-string: true + name: + description: Name of the resource. + type: string + required: + - allocatable + - available + - capacity + - name + type: object + type: array + type: + type: string + required: + - name + - type + type: object + type: array + required: + - zones + type: object + served: true + storage: true +status: + acceptedNames: + kind: "" + plural: "" + conditions: null + storedVersions: null diff --git a/operators/nri-plugins-operator/0.8.0/metadata/annotations.yaml b/operators/nri-plugins-operator/0.8.0/metadata/annotations.yaml new file mode 100644 index 00000000000..cdd9a041b5b --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/metadata/annotations.yaml @@ -0,0 +1,14 @@ +annotations: + # Core bundle annotations. + operators.operatorframework.io.bundle.mediatype.v1: registry+v1 + operators.operatorframework.io.bundle.manifests.v1: manifests/ + operators.operatorframework.io.bundle.metadata.v1: metadata/ + operators.operatorframework.io.bundle.package.v1: nri-plugins-operator + operators.operatorframework.io.bundle.channels.v1: alpha + operators.operatorframework.io.metrics.builder: operator-sdk-v1.36.0 + operators.operatorframework.io.metrics.mediatype.v1: metrics+v1 + operators.operatorframework.io.metrics.project_layout: ansible.sdk.operatorframework.io/v1 + + # Annotations for testing. + operators.operatorframework.io.test.mediatype.v1: scorecard+v1 + operators.operatorframework.io.test.config.v1: tests/scorecard/ diff --git a/operators/nri-plugins-operator/0.8.0/tests/scorecard/config.yaml b/operators/nri-plugins-operator/0.8.0/tests/scorecard/config.yaml new file mode 100644 index 00000000000..9769772ab10 --- /dev/null +++ b/operators/nri-plugins-operator/0.8.0/tests/scorecard/config.yaml @@ -0,0 +1,70 @@ +apiVersion: scorecard.operatorframework.io/v1alpha3 +kind: Configuration +metadata: + name: config +stages: +- parallel: true + tests: + - entrypoint: + - scorecard-test + - basic-check-spec + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: basic + test: basic-check-spec-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-bundle-validation + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: olm + test: olm-bundle-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-validation + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: olm + test: olm-crds-have-validation-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-crds-have-resources + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: olm + test: olm-crds-have-resources-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-spec-descriptors + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: olm + test: olm-spec-descriptors-test + storage: + spec: + mountPath: {} + - entrypoint: + - scorecard-test + - olm-status-descriptors + image: quay.io/operator-framework/scorecard-test:v1.32.0 + labels: + suite: olm + test: olm-status-descriptors-test + storage: + spec: + mountPath: {} +storage: + spec: + mountPath: {}