Skip to content

Latest commit

 

History

History
3207 lines (2801 loc) · 104 KB

FlowCollector.md

File metadata and controls

3207 lines (2801 loc) · 104 KB

API Reference

Packages:

flows.netobserv.io/v1alpha1

Resource Types:

FlowCollector

↩ Parent

FlowCollector is the Schema for the flowcollectors API, which pilots and configures netflow collection.

Name Type Description Required
apiVersion string flows.netobserv.io/v1alpha1 true
kind string FlowCollector true
metadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true
spec object FlowCollectorSpec defines the desired state of FlowCollector
false
status object FlowCollectorStatus defines the observed state of FlowCollector
false

FlowCollector.spec

↩ Parent

FlowCollectorSpec defines the desired state of FlowCollector

Name Type Description Required
agent enum Select the flows tracing agent. Possible values are "ipfix" (default) to use the IPFIX collector, or "ebpf" to use NetObserv eBPF agent. When using IPFIX with OVN-Kubernetes CNI, NetObserv will configure OVN's IPFIX exporter. Other CNIs are not supported, they could work but necessitate manual configuration.

Enum: ipfix, ebpf
Default: ipfix
true
clusterNetworkOperator object Settings related to the OpenShift Cluster Network Operator, when available.
false
consolePlugin object Settings related to the OpenShift Console plugin, when available.
false
ebpf object Settings related to eBPF-based flow reporter when the "agent" property is set to "ebpf".

Default: map[imagePullPolicy:IfNotPresent]
false
flowlogsPipeline object Settings related to the flowlogs-pipeline component, which collects and enriches the flows, and produces metrics.
false
ipfix object Settings related to IPFIX-based flow reporter when the "agent" property is set to "ipfix".

Default: map[sampling:400]
false
kafka object Kafka configuration, allowing to use Kafka as a broker as part of the flow collection pipeline. This is a new and experimental feature, not yet recommended to use in production.
false
loki object Settings related to the Loki client, used as a flow store.
false
namespace string Namespace where NetObserv pods are deployed. If empty, the namespace of the operator is going to be used.

Default:
false
ovnKubernetes object Settings related to OVN-Kubernetes CNI, when available. This configuration is used when using OVN's IPFIX exports, without OpenShift. When using OpenShift, refer to the `clusterNetworkOperator` property instead.
false

FlowCollector.spec.clusterNetworkOperator

↩ Parent

Settings related to the OpenShift Cluster Network Operator, when available.

Name Type Description Required
namespace string Namespace where the configmap is going to be deployed.

Default: openshift-network-operator
false

FlowCollector.spec.consolePlugin

↩ Parent

Settings related to the OpenShift Console plugin, when available.

Name Type Description Required
register boolean Automatically register the provided console plugin with the OpenShift Console operator. When set to false, you can still register it manually by editing console.operator.openshift.io/cluster. E.g: oc patch console.operator.openshift.io cluster --type='json' -p '[{"op": "add", "path": "/spec/plugins/-", "value": "network-observability-plugin"}]'

Default: true
true
hpa object HPA spec of an horizontal pod autoscaler to set up for the plugin Deployment.
false
image string Image is the plugin image (including domain and tag)

Default: quay.io/netobserv/network-observability-console-plugin:main
false
imagePullPolicy enum ImagePullPolicy is the Kubernetes pull policy for the image defined above

Enum: IfNotPresent, Always, Never
Default: IfNotPresent
false
logLevel enum LogLevel defines the log level for the console plugin backend

Enum: trace, debug, info, warn, error, fatal, panic
Default: info
false
port integer Port is the plugin service port

Format: int32
Default: 9001
Minimum: 1
Maximum: 65535
false
portNaming object Configuration of the port to service name translation

Default: map[enable:true]
false
replicas integer Replicas defines the number of replicas (pods) to start.

Format: int32
Default: 1
Minimum: 0
false
resources object Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Default: map[limits:map[memory:100Mi] requests:map[cpu:100m memory:50Mi]]
false

FlowCollector.spec.consolePlugin.hpa

↩ Parent

HPA spec of an horizontal pod autoscaler to set up for the plugin Deployment.

Name Type Description Required
maxReplicas integer upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.

Format: int32
true
metrics []object Metrics used by the pod autoscaler
false
minReplicas integer minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.

Format: int32
false

FlowCollector.spec.consolePlugin.hpa.metrics[index]

↩ Parent

MetricSpec specifies how to scale based on a single metric (only type and one other matching field should be set at once).

Name Type Description Required
type string type is the type of metric source. It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled
true
containerResource object container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
false
external object external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).
false
object object object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).
false
pods object pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.
false
resource object resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].containerResource

↩ Parent

container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.

Name Type Description Required
container string container is the name of the container in the pods of the scaling target
true
name string name is the name of the resource in question.
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.consolePlugin.hpa.metrics[index].containerResource.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].external

↩ Parent

external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).

Name Type Description Required
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.consolePlugin.hpa.metrics[index].external.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].external.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].external.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].external.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].object

↩ Parent

object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).

Name Type Description Required
describedObject object CrossVersionObjectReference contains enough information to let you identify the referred resource.
true
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.consolePlugin.hpa.metrics[index].object.describedObject

↩ Parent

CrossVersionObjectReference contains enough information to let you identify the referred resource.

Name Type Description Required
kind string Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
true
name string Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
true
apiVersion string API version of the referent
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].object.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].object.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].object.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].object.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].pods

↩ Parent

pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.

Name Type Description Required
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.consolePlugin.hpa.metrics[index].pods.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].pods.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].pods.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].pods.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.consolePlugin.hpa.metrics[index].resource

↩ Parent

resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.

Name Type Description Required
name string name is the name of the resource in question.
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.consolePlugin.hpa.metrics[index].resource.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.consolePlugin.portNaming

↩ Parent

Configuration of the port to service name translation

Name Type Description Required
enable boolean Should this feature be enabled

Default: true
false
portNames map[string]string Additional port name to use in the console E.g. portNames: {"3100": "loki"}
false

FlowCollector.spec.consolePlugin.resources

↩ Parent

Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false

FlowCollector.spec.ebpf

↩ Parent

Settings related to eBPF-based flow reporter when the "agent" property is set to "ebpf".

Name Type Description Required
cacheActiveTimeout string CacheActiveTimeout is the max period during which the reporter will aggregate flows before sending

Default: 5s
false
cacheMaxFlows integer CacheMaxFlows is the max number of flows in an aggregate; when reached, the reporter sends the flows

Format: int32
Default: 1000
Minimum: 1
false
env map[string]string Env allows passing custom environment variables to the NetObserv Agent. Useful for passing some very concrete performance-tuning options (e.g. GOGC, GOMAXPROCS) that shouldn't be publicly exposed as part of the FlowCollector descriptor, as they are only useful in edge debug/support scenarios.
false
excludeInterfaces []string ExcludeInterfaces contains the interface names that will be excluded from flow tracing. If an entry is enclosed by slashes (e.g. `/br-/`), it will match as regular expression, otherwise it will be matched as a case-sensitive string.

Default: [lo]
false
image string Image is the NetObserv Agent image (including domain and tag)

Default: quay.io/netobserv/netobserv-ebpf-agent:main
false
imagePullPolicy enum ImagePullPolicy is the Kubernetes pull policy for the image defined above

Enum: IfNotPresent, Always, Never
Default: IfNotPresent
false
interfaces []string Interfaces contains the interface names from where flows will be collected. If empty, the agent will fetch all the interfaces in the system, excepting the ones listed in ExcludeInterfaces. If an entry is enclosed by slashes (e.g. `/br-/`), it will match as regular expression, otherwise it will be matched as a case-sensitive string.
false
logLevel enum LogLevel defines the log level for the NetObserv eBPF Agent

Enum: trace, debug, info, warn, error, fatal, panic
Default: info
false
privileged boolean Privileged mode for the eBPF Agent container. If false, the operator will add the following capabilities to the container, to enable its correct operation: BPF, PERFMON, NET_ADMIN, SYS_RESOURCE.
false
resources object Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false
sampling integer Sampling is the sampling rate on the reporter. 100 means one flow on 100 is sent. 0 or 1 means disabled.

Format: int32
false

FlowCollector.spec.ebpf.resources

↩ Parent

Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false

FlowCollector.spec.flowlogsPipeline

↩ Parent

Settings related to the flowlogs-pipeline component, which collects and enriches the flows, and produces metrics.

Name Type Description Required
dropUnusedFields boolean Set true to drop fields that are known to be unused by OVS, in order to save storage space.

Default: true
false
enableKubeProbes boolean EnableKubeProbes is a flag to enable or disable Kubernetes liveness/readiness probes

Default: true
false
healthPort integer HealthPort is a collector HTTP port in the Pod that exposes the health check API

Format: int32
Default: 8080
Minimum: 1
Maximum: 65535
false
hpa object HPA spec of an horizontal pod autoscaler to set up for the collector Deployment. Ignored for DaemonSet.
false
ignoreMetrics []string IgnoreMetrics is a list of tags to specify which metrics to ignore
false
image string Image is the collector image (including domain and tag)

Default: quay.io/netobserv/flowlogs-pipeline:main
false
imagePullPolicy enum ImagePullPolicy is the Kubernetes pull policy for the image defined above

Enum: IfNotPresent, Always, Never
Default: IfNotPresent
false
kind enum Kind is the workload kind, either DaemonSet or Deployment. When DaemonSet is used, each pod will receive flows from the node it is running on. When Deployment is used, the flows traffic received from nodes will be load-balanced. Note that in such a case, the number of replicas should be less or equal to the number of nodes, as extra-pods would be unused due to session affinity with the node IP. When using Kafka, this option only affects the flowlogs-pipeline ingester, not the transformer.

Enum: DaemonSet, Deployment
Default: DaemonSet
false
logLevel enum LogLevel defines the log level for the collector runtime

Enum: trace, debug, info, warn, error, fatal, panic
Default: info
false
port integer Port is the collector port: either a service port for Deployment kind, or host port for DaemonSet kind By conventions, some value are not authorized port must not be below 1024 and must not equal this values: 4789,6081,500, and 4500

Format: int32
Default: 2055
Minimum: 1025
Maximum: 65535
false
prometheusPort integer PrometheusPort is the prometheus HTTP port: this port exposes prometheus metrics

Format: int32
Default: 9102
Minimum: 1
Maximum: 65535
false
replicas integer Replicas defines the number of replicas (pods) to start for Deployment kind. Ignored for DaemonSet.

Format: int32
Default: 1
Minimum: 0
false
resources object Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Default: map[limits:map[memory:300Mi] requests:map[cpu:100m memory:100Mi]]
false

FlowCollector.spec.flowlogsPipeline.hpa

↩ Parent

HPA spec of an horizontal pod autoscaler to set up for the collector Deployment. Ignored for DaemonSet.

Name Type Description Required
maxReplicas integer upper limit for the number of pods that can be set by the autoscaler; cannot be smaller than MinReplicas.

Format: int32
true
metrics []object Metrics used by the pod autoscaler
false
minReplicas integer minReplicas is the lower limit for the number of replicas to which the autoscaler can scale down. It defaults to 1 pod. minReplicas is allowed to be 0 if the alpha feature gate HPAScaleToZero is enabled and at least one Object or External metric is configured. Scaling is active as long as at least one metric value is available.

Format: int32
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index]

↩ Parent

MetricSpec specifies how to scale based on a single metric (only type and one other matching field should be set at once).

Name Type Description Required
type string type is the type of metric source. It should be one of "ContainerResource", "External", "Object", "Pods" or "Resource", each mapping to a matching field in the object. Note: "ContainerResource" type is available on when the feature-gate HPAContainerMetrics is enabled
true
containerResource object container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.
false
external object external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).
false
object object object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).
false
pods object pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.
false
resource object resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].containerResource

↩ Parent

container resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing a single container in each pod of the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source. This is an alpha feature and can be enabled by the HPAContainerMetrics feature flag.

Name Type Description Required
container string container is the name of the container in the pods of the scaling target
true
name string name is the name of the resource in question.
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].containerResource.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].external

↩ Parent

external refers to a global metric that is not associated with any Kubernetes object. It allows autoscaling based on information coming from components running outside of cluster (for example length of queue in cloud messaging service, or QPS from loadbalancer running outside of cluster).

Name Type Description Required
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].external.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].external.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].external.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].external.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object

↩ Parent

object refers to a metric describing a single kubernetes object (for example, hits-per-second on an Ingress object).

Name Type Description Required
describedObject object CrossVersionObjectReference contains enough information to let you identify the referred resource.
true
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object.describedObject

↩ Parent

CrossVersionObjectReference contains enough information to let you identify the referred resource.

Name Type Description Required
kind string Kind of the referent; More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds"
true
name string Name of the referent; More info: http://kubernetes.io/docs/user-guide/identifiers#names
true
apiVersion string API version of the referent
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].object.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].pods

↩ Parent

pods refers to a metric describing each pod in the current scale target (for example, transactions-processed-per-second). The values will be averaged together before being compared to the target value.

Name Type Description Required
metric object metric identifies the target metric by name and selector
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].pods.metric

↩ Parent

metric identifies the target metric by name and selector

Name Type Description Required
name string name is the name of the given metric
true
selector object selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].pods.metric.selector

↩ Parent

selector is the string-encoded form of a standard kubernetes label selector for the given metric When set, it is passed as an additional parameter to the metrics server for more specific metrics scoping. When unset, just the metricName will be used to gather metrics.

Name Type Description Required
matchExpressions []object matchExpressions is a list of label selector requirements. The requirements are ANDed.
false
matchLabels map[string]string matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels map is equivalent to an element of matchExpressions, whose key field is "key", the operator is "In", and the values array contains only "value". The requirements are ANDed.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].pods.metric.selector.matchExpressions[index]

↩ Parent

A label selector requirement is a selector that contains values, a key, and an operator that relates the key and values.

Name Type Description Required
key string key is the label key that the selector applies to.
true
operator string operator represents a key's relationship to a set of values. Valid operators are In, NotIn, Exists and DoesNotExist.
true
values []string values is an array of string values. If the operator is In or NotIn, the values array must be non-empty. If the operator is Exists or DoesNotExist, the values array must be empty. This array is replaced during a strategic merge patch.
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].pods.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].resource

↩ Parent

resource refers to a resource metric (such as those specified in requests and limits) known to Kubernetes describing each pod in the current scale target (e.g. CPU or memory). Such metrics are built in to Kubernetes, and have special scaling options on top of those available to normal per-pod metrics using the "pods" source.

Name Type Description Required
name string name is the name of the resource in question.
true
target object target specifies the target value for the given metric
true

FlowCollector.spec.flowlogsPipeline.hpa.metrics[index].resource.target

↩ Parent

target specifies the target value for the given metric

Name Type Description Required
type string type represents whether the metric type is Utilization, Value, or AverageValue
true
averageUtilization integer averageUtilization is the target value of the average of the resource metric across all relevant pods, represented as a percentage of the requested value of the resource for the pods. Currently only valid for Resource metric source type

Format: int32
false
averageValue int or string averageValue is the target value of the average of the metric across all relevant pods (as a quantity)
false
value int or string value is the target value of the metric (as a quantity).
false

FlowCollector.spec.flowlogsPipeline.resources

↩ Parent

Compute Resources required by this container. Cannot be updated. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/

Name Type Description Required
limits map[string]int or string Limits describes the maximum amount of compute resources allowed. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false
requests map[string]int or string Requests describes the minimum amount of compute resources required. If Requests is omitted for a container, it defaults to Limits if that is explicitly specified, otherwise to an implementation-defined value. More info: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
false

FlowCollector.spec.ipfix

↩ Parent

Settings related to IPFIX-based flow reporter when the "agent" property is set to "ipfix".

Name Type Description Required
cacheActiveTimeout string CacheActiveTimeout is the max period during which the reporter will aggregate flows before sending

Default: 20s
false
cacheMaxFlows integer CacheMaxFlows is the max number of flows in an aggregate; when reached, the reporter sends the flows

Format: int32
Default: 400
Minimum: 0
false
forceSampleAll boolean It is not recommended to sample all the traffic with IPFIX, as it may generate cluster instability. If you REALLY want to do that, set this flag to true. Use at your own risks. When it is set to true, the value of "sampling" is ignored.

Default: false
false
sampling integer Sampling is the sampling rate on the reporter. 100 means one flow on 100 is sent. To ensure cluster stability, it is not possible to set a value below 2. If you really want to sample every packet, which may impact the cluster stability, refer to "forceSampleAll". Alternatively, you can use the eBPF Agent instead of IPFIX.

Format: int32
Default: 400
Minimum: 2
false

FlowCollector.spec.kafka

↩ Parent

Kafka configuration, allowing to use Kafka as a broker as part of the flow collection pipeline. This is a new and experimental feature, not yet recommended to use in production.

Name Type Description Required
address string Address of the Kafka server

Default:
true
topic string Kafka topic to use. It must exist, NetObserv will not create it.

Default:
true
enable boolean Set true to use Kafka as part of the flow collection pipeline. When enabled, the pipeline is split in two parts: ingestion and transformation, connected by Kafka. The ingestion is either done by a specific flowlogs-pipeline workload, or by the eBPF agent, depending on the value of `spec.agent`. The transformation is done by a new flowlogs-pipeline deployment.

Default: false
false
tls object TLS client configuration.
false

FlowCollector.spec.kafka.tls

↩ Parent

TLS client configuration.

Name Type Description Required
caCert object CA certificate reference
false
enable boolean Enable TLS

Default: false
false
insecureSkipVerify boolean Skip client-side verification of the server certificate

Default: false
false
userCert object User certificate reference
false

FlowCollector.spec.kafka.tls.caCert

↩ Parent

CA certificate reference

Name Type Description Required
certFile string Certificate file name within the ConfigMap / Secret
false
certKey string Certificate private key file name within the ConfigMap / Secret. Omit when the key is not necessary.
false
name string Name of the ConfigMap or Secret containing certificates
false
type enum Reference type: configmap or secret

Enum: configmap, secret
false

FlowCollector.spec.kafka.tls.userCert

↩ Parent

User certificate reference

Name Type Description Required
certFile string Certificate file name within the ConfigMap / Secret
false
certKey string Certificate private key file name within the ConfigMap / Secret. Omit when the key is not necessary.
false
name string Name of the ConfigMap or Secret containing certificates
false
type enum Reference type: configmap or secret

Enum: configmap, secret
false

FlowCollector.spec.loki

↩ Parent

Settings related to the Loki client, used as a flow store.

Name Type Description Required
batchSize integer BatchSize is max batch size (in bytes) of logs to accumulate before sending

Format: int64
Default: 102400
Minimum: 1
false
batchWait string BatchWait is max time to wait before sending a batch

Default: 1s
false
maxBackoff string MaxBackoff is the maximum backoff time for client connection between retries

Default: 300s
false
maxRetries integer MaxRetries is the maximum number of retries for client connections

Format: int32
Default: 10
Minimum: 0
false
minBackoff string MinBackoff is the initial backoff time for client connection between retries

Default: 1s
false
querierUrl string QuerierURL specifies the address of the Loki querier service, in case it is different from the Loki ingester URL. If empty, the URL value will be used (assuming that the Loki ingester and querier are int he same host).
false
staticLabels map[string]string StaticLabels is a map of common labels to set on each flow

Default: map[app:netobserv-flowcollector]
false
tenantID string TenantID is the Loki X-Scope-OrgID that identifies the tenant for each request. it will be ignored if instanceSpec is specified

Default: netobserv
false
timeout string Timeout is the maximum time connection / request limit A Timeout of zero means no timeout.

Default: 10s
false
tls object TLS client configuration.
false
url string URL is the address of an existing Loki service to push the flows to.

Default: http://loki:3100/
false

FlowCollector.spec.loki.tls

↩ Parent

TLS client configuration.

Name Type Description Required
caCert object CA certificate reference
false
enable boolean Enable TLS

Default: false
false
insecureSkipVerify boolean Skip client-side verification of the server certificate

Default: false
false
userCert object User certificate reference
false

FlowCollector.spec.loki.tls.caCert

↩ Parent

CA certificate reference

Name Type Description Required
certFile string Certificate file name within the ConfigMap / Secret
false
certKey string Certificate private key file name within the ConfigMap / Secret. Omit when the key is not necessary.
false
name string Name of the ConfigMap or Secret containing certificates
false
type enum Reference type: configmap or secret

Enum: configmap, secret
false

FlowCollector.spec.loki.tls.userCert

↩ Parent

User certificate reference

Name Type Description Required
certFile string Certificate file name within the ConfigMap / Secret
false
certKey string Certificate private key file name within the ConfigMap / Secret. Omit when the key is not necessary.
false
name string Name of the ConfigMap or Secret containing certificates
false
type enum Reference type: configmap or secret

Enum: configmap, secret
false

FlowCollector.spec.ovnKubernetes

↩ Parent

Settings related to OVN-Kubernetes CNI, when available. This configuration is used when using OVN's IPFIX exports, without OpenShift. When using OpenShift, refer to the clusterNetworkOperator property instead.

Name Type Description Required
containerName string Name of the container to configure for IPFIX.

Default: ovnkube-node
false
daemonSetName string Name of the DaemonSet controlling the OVN-Kubernetes pods.

Default: ovnkube-node
false
namespace string Namespace where OVN-Kubernetes pods are deployed.

Default: ovn-kubernetes
false

FlowCollector.status

↩ Parent

FlowCollectorStatus defines the observed state of FlowCollector

Name Type Description Required
conditions []object Conditions represent the latest available observations of an object's state
true
namespace string Namespace where console plugin and flowlogs-pipeline have been deployed.
false

FlowCollector.status.conditions[index]

↩ Parent

Condition contains details for one aspect of the current state of this API Resource. --- This struct is intended for direct use as an array at the field path .status.conditions. For example, type FooStatus struct{ // Represents the observations of a foo's current state. // Known .status.conditions.type are: "Available", "Progressing", and "Degraded" // +patchMergeKey=type // +patchStrategy=merge // +listType=map // +listMapKey=type Conditions []metav1.Condition json:"conditions,omitempty" patchStrategy:"merge" patchMergeKey:"type" protobuf:"bytes,1,rep,name=conditions" // other fields }

Name Type Description Required
lastTransitionTime string lastTransitionTime is the last time the condition transitioned from one status to another. This should be when the underlying condition changed. If that is not known, then using the time when the API field changed is acceptable.

Format: date-time
true
message string message is a human readable message indicating details about the transition. This may be an empty string.
true
reason string reason contains a programmatic identifier indicating the reason for the condition's last transition. Producers of specific condition types may define expected values and meanings for this field, and whether the values are considered a guaranteed API. The value should be a CamelCase string. This field may not be empty.
true
status enum status of the condition, one of True, False, Unknown.

Enum: True, False, Unknown
true
type string type of condition in CamelCase or in foo.example.com/CamelCase. --- Many .condition.type values are consistent across resources like Available, but because arbitrary conditions can be useful (see .node.status.conditions), the ability to deconflict is important. The regex it matches is (dns1123SubdomainFmt/)?(qualifiedNameFmt)
true
observedGeneration integer observedGeneration represents the .metadata.generation that the condition was set based upon. For instance, if .metadata.generation is currently 12, but the .status.conditions[x].observedGeneration is 9, the condition is out of date with respect to the current state of the instance.

Format: int64
Minimum: 0
false